diff --git a/benchmarks/src/main/java/org/antlr/Java8.interp b/benchmarks/src/main/java/org/antlr/Java8.interp
new file mode 100644
index 000000000..66cb8d7f9
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8.interp
@@ -0,0 +1,462 @@
+token literal names:
+null
+'abstract'
+'assert'
+'boolean'
+'break'
+'byte'
+'case'
+'catch'
+'char'
+'class'
+'const'
+'continue'
+'default'
+'do'
+'double'
+'else'
+'enum'
+'extends'
+'final'
+'finally'
+'float'
+'for'
+'if'
+'goto'
+'implements'
+'import'
+'instanceof'
+'int'
+'interface'
+'long'
+'native'
+'new'
+'package'
+'private'
+'protected'
+'public'
+'return'
+'short'
+'static'
+'strictfp'
+'super'
+'switch'
+'synchronized'
+'this'
+'throw'
+'throws'
+'transient'
+'try'
+'void'
+'volatile'
+'while'
+null
+null
+null
+null
+null
+'null'
+'('
+')'
+'{'
+'}'
+'['
+']'
+';'
+','
+'.'
+'='
+'>'
+'<'
+'!'
+'~'
+'?'
+':'
+'=='
+'<='
+'>='
+'!='
+'&&'
+'||'
+'++'
+'--'
+'+'
+'-'
+'*'
+'/'
+'&'
+'|'
+'^'
+'%'
+'->'
+'::'
+'+='
+'-='
+'*='
+'/='
+'&='
+'|='
+'^='
+'%='
+'<<='
+'>>='
+'>>>='
+null
+'@'
+'...'
+null
+null
+null
+
+token symbolic names:
+null
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VOID
+VOLATILE
+WHILE
+IntegerLiteral
+FloatingPointLiteral
+BooleanLiteral
+CharacterLiteral
+StringLiteral
+NullLiteral
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ARROW
+COLONCOLON
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+Identifier
+AT
+ELLIPSIS
+WS
+COMMENT
+LINE_COMMENT
+
+rule names:
+literal
+type
+primitiveType
+numericType
+integralType
+floatingPointType
+referenceType
+classOrInterfaceType
+classType
+classType_lf_classOrInterfaceType
+classType_lfno_classOrInterfaceType
+interfaceType
+interfaceType_lf_classOrInterfaceType
+interfaceType_lfno_classOrInterfaceType
+typeVariable
+arrayType
+dims
+typeParameter
+typeParameterModifier
+typeBound
+additionalBound
+typeArguments
+typeArgumentList
+typeArgument
+wildcard
+wildcardBounds
+packageName
+typeName
+packageOrTypeName
+expressionName
+methodName
+ambiguousName
+compilationUnit
+packageDeclaration
+packageModifier
+importDeclaration
+singleTypeImportDeclaration
+typeImportOnDemandDeclaration
+singleStaticImportDeclaration
+staticImportOnDemandDeclaration
+typeDeclaration
+classDeclaration
+normalClassDeclaration
+classModifier
+typeParameters
+typeParameterList
+superclass
+superinterfaces
+interfaceTypeList
+classBody
+classBodyDeclaration
+classMemberDeclaration
+fieldDeclaration
+fieldModifier
+variableDeclaratorList
+variableDeclarator
+variableDeclaratorId
+variableInitializer
+unannType
+unannPrimitiveType
+unannReferenceType
+unannClassOrInterfaceType
+unannClassType
+unannClassType_lf_unannClassOrInterfaceType
+unannClassType_lfno_unannClassOrInterfaceType
+unannInterfaceType
+unannInterfaceType_lf_unannClassOrInterfaceType
+unannInterfaceType_lfno_unannClassOrInterfaceType
+unannTypeVariable
+unannArrayType
+methodDeclaration
+methodModifier
+methodHeader
+result
+methodDeclarator
+formalParameterList
+formalParameters
+formalParameter
+variableModifier
+lastFormalParameter
+receiverParameter
+throws_
+exceptionTypeList
+exceptionType
+methodBody
+instanceInitializer
+staticInitializer
+constructorDeclaration
+constructorModifier
+constructorDeclarator
+simpleTypeName
+constructorBody
+explicitConstructorInvocation
+enumDeclaration
+enumBody
+enumConstantList
+enumConstant
+enumConstantModifier
+enumBodyDeclarations
+interfaceDeclaration
+normalInterfaceDeclaration
+interfaceModifier
+extendsInterfaces
+interfaceBody
+interfaceMemberDeclaration
+constantDeclaration
+constantModifier
+interfaceMethodDeclaration
+interfaceMethodModifier
+annotationTypeDeclaration
+annotationTypeBody
+annotationTypeMemberDeclaration
+annotationTypeElementDeclaration
+annotationTypeElementModifier
+defaultValue
+annotation
+normalAnnotation
+elementValuePairList
+elementValuePair
+elementValue
+elementValueArrayInitializer
+elementValueList
+markerAnnotation
+singleElementAnnotation
+arrayInitializer
+variableInitializerList
+block
+blockStatements
+blockStatement
+localVariableDeclarationStatement
+localVariableDeclaration
+statement
+statementNoShortIf
+statementWithoutTrailingSubstatement
+emptyStatement
+labeledStatement
+labeledStatementNoShortIf
+expressionStatement
+statementExpression
+ifThenStatement
+ifThenElseStatement
+ifThenElseStatementNoShortIf
+assertStatement
+switchStatement
+switchBlock
+switchBlockStatementGroup
+switchLabels
+switchLabel
+enumConstantName
+whileStatement
+whileStatementNoShortIf
+doStatement
+forStatement
+forStatementNoShortIf
+basicForStatement
+basicForStatementNoShortIf
+forInit
+forUpdate
+statementExpressionList
+enhancedForStatement
+enhancedForStatementNoShortIf
+breakStatement
+continueStatement
+returnStatement
+throwStatement
+synchronizedStatement
+tryStatement
+catches
+catchClause
+catchFormalParameter
+catchType
+finally_
+tryWithResourcesStatement
+resourceSpecification
+resourceList
+resource
+primary
+primaryNoNewArray
+primaryNoNewArray_lf_arrayAccess
+primaryNoNewArray_lfno_arrayAccess
+primaryNoNewArray_lf_primary
+primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary
+primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary
+primaryNoNewArray_lfno_primary
+primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary
+primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary
+classInstanceCreationExpression
+classInstanceCreationExpression_lf_primary
+classInstanceCreationExpression_lfno_primary
+typeArgumentsOrDiamond
+fieldAccess
+fieldAccess_lf_primary
+fieldAccess_lfno_primary
+arrayAccess
+arrayAccess_lf_primary
+arrayAccess_lfno_primary
+methodInvocation
+methodInvocation_lf_primary
+methodInvocation_lfno_primary
+argumentList
+methodReference
+methodReference_lf_primary
+methodReference_lfno_primary
+arrayCreationExpression
+dimExprs
+dimExpr
+constantExpression
+expression
+lambdaExpression
+lambdaParameters
+inferredFormalParameterList
+lambdaBody
+assignmentExpression
+assignment
+leftHandSide
+assignmentOperator
+conditionalExpression
+conditionalOrExpression
+conditionalAndExpression
+inclusiveOrExpression
+exclusiveOrExpression
+andExpression
+equalityExpression
+relationalExpression
+shiftExpression
+additiveExpression
+multiplicativeExpression
+unaryExpression
+preIncrementExpression
+preDecrementExpression
+unaryExpressionNotPlusMinus
+postfixExpression
+postIncrementExpression
+postIncrementExpression_lf_postfixExpression
+postDecrementExpression
+postDecrementExpression_lf_postfixExpression
+castExpression
+
+
+atn:
+[4, 1, 107, 2858, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 479, 8, 1, 1, 2, 5, 2, 482, 8, 2, 10, 2, 12, 2, 485, 9, 2, 1, 2, 1, 2, 5, 2, 489, 8, 2, 10, 2, 12, 2, 492, 9, 2, 1, 2, 3, 2, 495, 8, 2, 1, 3, 1, 3, 3, 3, 499, 8, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 3, 6, 508, 8, 6, 1, 7, 1, 7, 3, 7, 512, 8, 7, 1, 7, 1, 7, 5, 7, 516, 8, 7, 10, 7, 12, 7, 519, 9, 7, 1, 8, 5, 8, 522, 8, 8, 10, 8, 12, 8, 525, 9, 8, 1, 8, 1, 8, 3, 8, 529, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 534, 8, 8, 10, 8, 12, 8, 537, 9, 8, 1, 8, 1, 8, 3, 8, 541, 8, 8, 3, 8, 543, 8, 8, 1, 9, 1, 9, 5, 9, 547, 8, 9, 10, 9, 12, 9, 550, 9, 9, 1, 9, 1, 9, 3, 9, 554, 8, 9, 1, 10, 5, 10, 557, 8, 10, 10, 10, 12, 10, 560, 9, 10, 1, 10, 1, 10, 3, 10, 564, 8, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 5, 14, 573, 8, 14, 10, 14, 12, 14, 576, 9, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 589, 8, 15, 1, 16, 5, 16, 592, 8, 16, 10, 16, 12, 16, 595, 9, 16, 1, 16, 1, 16, 1, 16, 5, 16, 600, 8, 16, 10, 16, 12, 16, 603, 9, 16, 1, 16, 1, 16, 5, 16, 607, 8, 16, 10, 16, 12, 16, 610, 9, 16, 1, 17, 5, 17, 613, 8, 17, 10, 17, 12, 17, 616, 9, 17, 1, 17, 1, 17, 3, 17, 620, 8, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 629, 8, 19, 10, 19, 12, 19, 632, 9, 19, 3, 19, 634, 8, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 5, 22, 646, 8, 22, 10, 22, 12, 22, 649, 9, 22, 1, 23, 1, 23, 3, 23, 653, 8, 23, 1, 24, 5, 24, 656, 8, 24, 10, 24, 12, 24, 659, 9, 24, 1, 24, 1, 24, 3, 24, 663, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 669, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 677, 8, 26, 10, 26, 12, 26, 680, 9, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 687, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 695, 8, 28, 10, 28, 12, 28, 698, 9, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 705, 8, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 715, 8, 31, 10, 31, 12, 31, 718, 9, 31, 1, 32, 3, 32, 721, 8, 32, 1, 32, 5, 32, 724, 8, 32, 10, 32, 12, 32, 727, 9, 32, 1, 32, 5, 32, 730, 8, 32, 10, 32, 12, 32, 733, 9, 32, 1, 32, 1, 32, 1, 33, 5, 33, 738, 8, 33, 10, 33, 12, 33, 741, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 747, 8, 33, 10, 33, 12, 33, 750, 9, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 760, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 789, 8, 40, 1, 41, 1, 41, 3, 41, 793, 8, 41, 1, 42, 5, 42, 796, 8, 42, 10, 42, 12, 42, 799, 9, 42, 1, 42, 1, 42, 1, 42, 3, 42, 804, 8, 42, 1, 42, 3, 42, 807, 8, 42, 1, 42, 3, 42, 810, 8, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 822, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 5, 45, 831, 8, 45, 10, 45, 12, 45, 834, 9, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 5, 48, 845, 8, 48, 10, 48, 12, 48, 848, 9, 48, 1, 49, 1, 49, 5, 49, 852, 8, 49, 10, 49, 12, 49, 855, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 863, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 870, 8, 51, 1, 52, 5, 52, 873, 8, 52, 10, 52, 12, 52, 876, 9, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 890, 8, 53, 1, 54, 1, 54, 1, 54, 5, 54, 895, 8, 54, 10, 54, 12, 54, 898, 9, 54, 1, 55, 1, 55, 1, 55, 3, 55, 903, 8, 55, 1, 56, 1, 56, 3, 56, 907, 8, 56, 1, 57, 1, 57, 3, 57, 911, 8, 57, 1, 58, 1, 58, 3, 58, 915, 8, 58, 1, 59, 1, 59, 3, 59, 919, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 924, 8, 60, 1, 61, 1, 61, 3, 61, 928, 8, 61, 1, 61, 1, 61, 5, 61, 932, 8, 61, 10, 61, 12, 61, 935, 9, 61, 1, 62, 1, 62, 3, 62, 939, 8, 62, 1, 62, 1, 62, 1, 62, 5, 62, 944, 8, 62, 10, 62, 12, 62, 947, 9, 62, 1, 62, 1, 62, 3, 62, 951, 8, 62, 3, 62, 953, 8, 62, 1, 63, 1, 63, 5, 63, 957, 8, 63, 10, 63, 12, 63, 960, 9, 63, 1, 63, 1, 63, 3, 63, 964, 8, 63, 1, 64, 1, 64, 3, 64, 968, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 987, 8, 69, 1, 70, 5, 70, 990, 8, 70, 10, 70, 12, 70, 993, 9, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1008, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1013, 8, 72, 1, 72, 1, 72, 5, 72, 1017, 8, 72, 10, 72, 12, 72, 1020, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1025, 8, 72, 3, 72, 1027, 8, 72, 1, 73, 1, 73, 3, 73, 1031, 8, 73, 1, 74, 1, 74, 1, 74, 3, 74, 1036, 8, 74, 1, 74, 1, 74, 3, 74, 1040, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1047, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 1052, 8, 76, 10, 76, 12, 76, 1055, 9, 76, 1, 76, 1, 76, 1, 76, 5, 76, 1060, 8, 76, 10, 76, 12, 76, 1063, 9, 76, 3, 76, 1065, 8, 76, 1, 77, 5, 77, 1068, 8, 77, 10, 77, 12, 77, 1071, 9, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 3, 78, 1078, 8, 78, 1, 79, 5, 79, 1081, 8, 79, 10, 79, 12, 79, 1084, 9, 79, 1, 79, 1, 79, 5, 79, 1088, 8, 79, 10, 79, 12, 79, 1091, 9, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 1097, 8, 79, 1, 80, 5, 80, 1100, 8, 80, 10, 80, 12, 80, 1103, 9, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1108, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 5, 82, 1118, 8, 82, 10, 82, 12, 82, 1121, 9, 82, 1, 83, 1, 83, 3, 83, 1125, 8, 83, 1, 84, 1, 84, 3, 84, 1129, 8, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 5, 87, 1137, 8, 87, 10, 87, 12, 87, 1140, 9, 87, 1, 87, 1, 87, 3, 87, 1144, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 1152, 8, 88, 1, 89, 3, 89, 1155, 8, 89, 1, 89, 1, 89, 1, 89, 3, 89, 1160, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 1168, 8, 91, 1, 91, 3, 91, 1171, 8, 91, 1, 91, 1, 91, 1, 92, 3, 92, 1176, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1181, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1186, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1191, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1198, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1203, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1211, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1216, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 1221, 8, 92, 1, 93, 5, 93, 1224, 8, 93, 10, 93, 12, 93, 1227, 9, 93, 1, 93, 1, 93, 1, 93, 3, 93, 1232, 8, 93, 1, 93, 1, 93, 1, 94, 1, 94, 3, 94, 1238, 8, 94, 1, 94, 3, 94, 1241, 8, 94, 1, 94, 3, 94, 1244, 8, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 5, 95, 1251, 8, 95, 10, 95, 12, 95, 1254, 9, 95, 1, 96, 5, 96, 1257, 8, 96, 10, 96, 12, 96, 1260, 9, 96, 1, 96, 1, 96, 1, 96, 3, 96, 1265, 8, 96, 1, 96, 3, 96, 1268, 8, 96, 1, 96, 3, 96, 1271, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 5, 98, 1277, 8, 98, 10, 98, 12, 98, 1280, 9, 98, 1, 99, 1, 99, 3, 99, 1284, 8, 99, 1, 100, 5, 100, 1287, 8, 100, 10, 100, 12, 100, 1290, 9, 100, 1, 100, 1, 100, 1, 100, 3, 100, 1295, 8, 100, 1, 100, 3, 100, 1298, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1309, 8, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 5, 103, 1316, 8, 103, 10, 103, 12, 103, 1319, 9, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1328, 8, 104, 1, 105, 5, 105, 1331, 8, 105, 10, 105, 12, 105, 1334, 9, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1344, 8, 106, 1, 107, 5, 107, 1347, 8, 107, 10, 107, 12, 107, 1350, 9, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 1361, 8, 108, 1, 109, 5, 109, 1364, 8, 109, 10, 109, 12, 109, 1367, 9, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 5, 110, 1376, 8, 110, 10, 110, 12, 110, 1379, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1388, 8, 111, 1, 112, 5, 112, 1391, 8, 112, 10, 112, 12, 112, 1394, 9, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1401, 8, 112, 1, 112, 3, 112, 1404, 8, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 3, 113, 1411, 8, 113, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 3, 115, 1419, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1425, 8, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 5, 117, 1432, 8, 117, 10, 117, 12, 117, 1435, 9, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 3, 119, 1444, 8, 119, 1, 120, 1, 120, 3, 120, 1448, 8, 120, 1, 120, 3, 120, 1451, 8, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 5, 121, 1458, 8, 121, 10, 121, 12, 121, 1461, 9, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 3, 124, 1474, 8, 124, 1, 124, 3, 124, 1477, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 5, 125, 1484, 8, 125, 10, 125, 12, 125, 1487, 9, 125, 1, 126, 1, 126, 3, 126, 1491, 8, 126, 1, 126, 1, 126, 1, 127, 1, 127, 5, 127, 1497, 8, 127, 10, 127, 12, 127, 1500, 9, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1505, 8, 128, 1, 129, 1, 129, 1, 129, 1, 130, 5, 130, 1511, 8, 130, 10, 130, 12, 130, 1514, 9, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1525, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 1532, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1546, 8, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 1568, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 1602, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 5, 144, 1612, 8, 144, 10, 144, 12, 144, 1615, 9, 144, 1, 144, 5, 144, 1618, 8, 144, 10, 144, 12, 144, 1621, 9, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 5, 146, 1630, 8, 146, 10, 146, 12, 146, 1633, 9, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1645, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 3, 152, 1671, 8, 152, 1, 153, 1, 153, 3, 153, 1675, 8, 153, 1, 154, 1, 154, 1, 154, 3, 154, 1680, 8, 154, 1, 154, 1, 154, 3, 154, 1684, 8, 154, 1, 154, 1, 154, 3, 154, 1688, 8, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 3, 155, 1696, 8, 155, 1, 155, 1, 155, 3, 155, 1700, 8, 155, 1, 155, 1, 155, 3, 155, 1704, 8, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 3, 156, 1711, 8, 156, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1718, 8, 158, 10, 158, 12, 158, 1721, 9, 158, 1, 159, 1, 159, 1, 159, 5, 159, 1726, 8, 159, 10, 159, 12, 159, 1729, 9, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 5, 160, 1741, 8, 160, 10, 160, 12, 160, 1744, 9, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 3, 161, 1755, 8, 161, 1, 161, 1, 161, 1, 162, 1, 162, 3, 162, 1761, 8, 162, 1, 162, 1, 162, 1, 163, 1, 163, 3, 163, 1767, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 3, 166, 1788, 8, 166, 1, 166, 1, 166, 1, 166, 3, 166, 1793, 8, 166, 1, 167, 1, 167, 5, 167, 1797, 8, 167, 10, 167, 12, 167, 1800, 9, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 5, 169, 1809, 8, 169, 10, 169, 12, 169, 1812, 9, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 5, 170, 1820, 8, 170, 10, 170, 12, 170, 1823, 9, 170, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 1832, 8, 172, 1, 172, 3, 172, 1835, 8, 172, 1, 173, 1, 173, 1, 173, 3, 173, 1840, 8, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 5, 174, 1847, 8, 174, 10, 174, 12, 174, 1850, 9, 174, 1, 175, 5, 175, 1853, 8, 175, 10, 175, 12, 175, 1856, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 3, 176, 1865, 8, 176, 1, 176, 5, 176, 1868, 8, 176, 10, 176, 12, 176, 1871, 9, 176, 1, 177, 1, 177, 1, 177, 1, 177, 5, 177, 1877, 8, 177, 10, 177, 12, 177, 1880, 9, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 1902, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 1910, 8, 179, 10, 179, 12, 179, 1913, 9, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 1934, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1941, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 1949, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 5, 183, 1955, 8, 183, 10, 183, 12, 183, 1958, 9, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 5, 183, 1966, 8, 183, 10, 183, 12, 183, 1969, 9, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 1991, 8, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 1999, 8, 185, 10, 185, 12, 185, 2002, 9, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 2010, 8, 185, 10, 185, 12, 185, 2013, 9, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 3, 185, 2034, 8, 185, 1, 186, 1, 186, 3, 186, 2038, 8, 186, 1, 186, 5, 186, 2041, 8, 186, 10, 186, 12, 186, 2044, 9, 186, 1, 186, 1, 186, 1, 186, 5, 186, 2049, 8, 186, 10, 186, 12, 186, 2052, 9, 186, 1, 186, 5, 186, 2055, 8, 186, 10, 186, 12, 186, 2058, 9, 186, 1, 186, 3, 186, 2061, 8, 186, 1, 186, 1, 186, 3, 186, 2065, 8, 186, 1, 186, 1, 186, 3, 186, 2069, 8, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2075, 8, 186, 1, 186, 5, 186, 2078, 8, 186, 10, 186, 12, 186, 2081, 9, 186, 1, 186, 1, 186, 3, 186, 2085, 8, 186, 1, 186, 1, 186, 3, 186, 2089, 8, 186, 1, 186, 1, 186, 3, 186, 2093, 8, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2099, 8, 186, 1, 186, 5, 186, 2102, 8, 186, 10, 186, 12, 186, 2105, 9, 186, 1, 186, 1, 186, 3, 186, 2109, 8, 186, 1, 186, 1, 186, 3, 186, 2113, 8, 186, 1, 186, 1, 186, 3, 186, 2117, 8, 186, 3, 186, 2119, 8, 186, 1, 187, 1, 187, 1, 187, 3, 187, 2124, 8, 187, 1, 187, 5, 187, 2127, 8, 187, 10, 187, 12, 187, 2130, 9, 187, 1, 187, 1, 187, 3, 187, 2134, 8, 187, 1, 187, 1, 187, 3, 187, 2138, 8, 187, 1, 187, 1, 187, 3, 187, 2142, 8, 187, 1, 188, 1, 188, 3, 188, 2146, 8, 188, 1, 188, 5, 188, 2149, 8, 188, 10, 188, 12, 188, 2152, 9, 188, 1, 188, 1, 188, 1, 188, 5, 188, 2157, 8, 188, 10, 188, 12, 188, 2160, 9, 188, 1, 188, 5, 188, 2163, 8, 188, 10, 188, 12, 188, 2166, 9, 188, 1, 188, 3, 188, 2169, 8, 188, 1, 188, 1, 188, 3, 188, 2173, 8, 188, 1, 188, 1, 188, 3, 188, 2177, 8, 188, 1, 188, 1, 188, 1, 188, 1, 188, 3, 188, 2183, 8, 188, 1, 188, 5, 188, 2186, 8, 188, 10, 188, 12, 188, 2189, 9, 188, 1, 188, 1, 188, 3, 188, 2193, 8, 188, 1, 188, 1, 188, 3, 188, 2197, 8, 188, 1, 188, 1, 188, 3, 188, 2201, 8, 188, 3, 188, 2203, 8, 188, 1, 189, 1, 189, 1, 189, 3, 189, 2208, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 3, 190, 2223, 8, 190, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 3, 192, 2237, 8, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 3, 193, 2249, 8, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 2256, 8, 193, 10, 193, 12, 193, 2259, 9, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 5, 194, 2271, 8, 194, 10, 194, 12, 194, 2274, 9, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 3, 195, 2286, 8, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 5, 195, 2293, 8, 195, 10, 195, 12, 195, 2296, 9, 195, 1, 196, 1, 196, 1, 196, 3, 196, 2301, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2308, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2313, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2320, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2325, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2332, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2337, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2344, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2349, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2357, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2362, 8, 196, 1, 196, 1, 196, 3, 196, 2366, 8, 196, 1, 197, 1, 197, 3, 197, 2370, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2375, 8, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 2382, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2389, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2394, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2401, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2406, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2413, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2418, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2426, 8, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2431, 8, 198, 1, 198, 1, 198, 3, 198, 2435, 8, 198, 1, 199, 1, 199, 1, 199, 5, 199, 2440, 8, 199, 10, 199, 12, 199, 2443, 9, 199, 1, 200, 1, 200, 1, 200, 3, 200, 2448, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2455, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2462, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2469, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2477, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2484, 8, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2492, 8, 200, 1, 201, 1, 201, 3, 201, 2496, 8, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 3, 202, 2503, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2510, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2517, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2525, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2532, 8, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 2540, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2546, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2552, 8, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 2564, 8, 203, 1, 204, 1, 204, 5, 204, 2568, 8, 204, 10, 204, 12, 204, 2571, 9, 204, 1, 205, 5, 205, 2574, 8, 205, 10, 205, 12, 205, 2577, 9, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 207, 1, 207, 3, 207, 2587, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 3, 209, 2596, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2603, 8, 209, 1, 210, 1, 210, 1, 210, 5, 210, 2608, 8, 210, 10, 210, 12, 210, 2611, 9, 210, 1, 211, 1, 211, 3, 211, 2615, 8, 211, 1, 212, 1, 212, 3, 212, 2619, 8, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 3, 214, 2628, 8, 214, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 2639, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 5, 217, 2647, 8, 217, 10, 217, 12, 217, 2650, 9, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 5, 218, 2658, 8, 218, 10, 218, 12, 218, 2661, 9, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 5, 219, 2669, 8, 219, 10, 219, 12, 219, 2672, 9, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 2680, 8, 220, 10, 220, 12, 220, 2683, 9, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2691, 8, 221, 10, 221, 12, 221, 2694, 9, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2705, 8, 222, 10, 222, 12, 222, 2708, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 5, 223, 2728, 8, 223, 10, 223, 12, 223, 2731, 9, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 5, 224, 2749, 8, 224, 10, 224, 12, 224, 2752, 9, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 2763, 8, 225, 10, 225, 12, 225, 2766, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 2780, 8, 226, 10, 226, 12, 226, 2783, 9, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 2792, 8, 227, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 2806, 8, 230, 1, 231, 1, 231, 3, 231, 2810, 8, 231, 1, 231, 1, 231, 5, 231, 2814, 8, 231, 10, 231, 12, 231, 2817, 9, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2837, 8, 236, 10, 236, 12, 236, 2840, 9, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 2848, 8, 236, 10, 236, 12, 236, 2851, 9, 236, 1, 236, 1, 236, 1, 236, 3, 236, 2856, 8, 236, 1, 236, 0, 13, 52, 56, 62, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 237, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 0, 4, 1, 0, 51, 56, 5, 0, 5, 5, 8, 8, 27, 27, 29, 29, 37, 37, 2, 0, 14, 14, 20, 20, 2, 0, 66, 66, 91, 101, 3099, 0, 474, 1, 0, 0, 0, 2, 478, 1, 0, 0, 0, 4, 494, 1, 0, 0, 0, 6, 498, 1, 0, 0, 0, 8, 500, 1, 0, 0, 0, 10, 502, 1, 0, 0, 0, 12, 507, 1, 0, 0, 0, 14, 511, 1, 0, 0, 0, 16, 542, 1, 0, 0, 0, 18, 544, 1, 0, 0, 0, 20, 558, 1, 0, 0, 0, 22, 565, 1, 0, 0, 0, 24, 567, 1, 0, 0, 0, 26, 569, 1, 0, 0, 0, 28, 574, 1, 0, 0, 0, 30, 588, 1, 0, 0, 0, 32, 593, 1, 0, 0, 0, 34, 614, 1, 0, 0, 0, 36, 621, 1, 0, 0, 0, 38, 633, 1, 0, 0, 0, 40, 635, 1, 0, 0, 0, 42, 638, 1, 0, 0, 0, 44, 642, 1, 0, 0, 0, 46, 652, 1, 0, 0, 0, 48, 657, 1, 0, 0, 0, 50, 668, 1, 0, 0, 0, 52, 670, 1, 0, 0, 0, 54, 686, 1, 0, 0, 0, 56, 688, 1, 0, 0, 0, 58, 704, 1, 0, 0, 0, 60, 706, 1, 0, 0, 0, 62, 708, 1, 0, 0, 0, 64, 720, 1, 0, 0, 0, 66, 739, 1, 0, 0, 0, 68, 753, 1, 0, 0, 0, 70, 759, 1, 0, 0, 0, 72, 761, 1, 0, 0, 0, 74, 765, 1, 0, 0, 0, 76, 771, 1, 0, 0, 0, 78, 778, 1, 0, 0, 0, 80, 788, 1, 0, 0, 0, 82, 792, 1, 0, 0, 0, 84, 797, 1, 0, 0, 0, 86, 821, 1, 0, 0, 0, 88, 823, 1, 0, 0, 0, 90, 827, 1, 0, 0, 0, 92, 835, 1, 0, 0, 0, 94, 838, 1, 0, 0, 0, 96, 841, 1, 0, 0, 0, 98, 849, 1, 0, 0, 0, 100, 862, 1, 0, 0, 0, 102, 869, 1, 0, 0, 0, 104, 874, 1, 0, 0, 0, 106, 889, 1, 0, 0, 0, 108, 891, 1, 0, 0, 0, 110, 899, 1, 0, 0, 0, 112, 904, 1, 0, 0, 0, 114, 910, 1, 0, 0, 0, 116, 914, 1, 0, 0, 0, 118, 918, 1, 0, 0, 0, 120, 923, 1, 0, 0, 0, 122, 927, 1, 0, 0, 0, 124, 952, 1, 0, 0, 0, 126, 954, 1, 0, 0, 0, 128, 965, 1, 0, 0, 0, 130, 969, 1, 0, 0, 0, 132, 971, 1, 0, 0, 0, 134, 973, 1, 0, 0, 0, 136, 975, 1, 0, 0, 0, 138, 986, 1, 0, 0, 0, 140, 991, 1, 0, 0, 0, 142, 1007, 1, 0, 0, 0, 144, 1026, 1, 0, 0, 0, 146, 1030, 1, 0, 0, 0, 148, 1032, 1, 0, 0, 0, 150, 1046, 1, 0, 0, 0, 152, 1064, 1, 0, 0, 0, 154, 1069, 1, 0, 0, 0, 156, 1077, 1, 0, 0, 0, 158, 1096, 1, 0, 0, 0, 160, 1101, 1, 0, 0, 0, 162, 1111, 1, 0, 0, 0, 164, 1114, 1, 0, 0, 0, 166, 1124, 1, 0, 0, 0, 168, 1128, 1, 0, 0, 0, 170, 1130, 1, 0, 0, 0, 172, 1132, 1, 0, 0, 0, 174, 1138, 1, 0, 0, 0, 176, 1151, 1, 0, 0, 0, 178, 1154, 1, 0, 0, 0, 180, 1163, 1, 0, 0, 0, 182, 1165, 1, 0, 0, 0, 184, 1220, 1, 0, 0, 0, 186, 1225, 1, 0, 0, 0, 188, 1235, 1, 0, 0, 0, 190, 1247, 1, 0, 0, 0, 192, 1258, 1, 0, 0, 0, 194, 1272, 1, 0, 0, 0, 196, 1274, 1, 0, 0, 0, 198, 1283, 1, 0, 0, 0, 200, 1288, 1, 0, 0, 0, 202, 1308, 1, 0, 0, 0, 204, 1310, 1, 0, 0, 0, 206, 1313, 1, 0, 0, 0, 208, 1327, 1, 0, 0, 0, 210, 1332, 1, 0, 0, 0, 212, 1343, 1, 0, 0, 0, 214, 1348, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1365, 1, 0, 0, 0, 220, 1373, 1, 0, 0, 0, 222, 1387, 1, 0, 0, 0, 224, 1392, 1, 0, 0, 0, 226, 1410, 1, 0, 0, 0, 228, 1412, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1428, 1, 0, 0, 0, 236, 1436, 1, 0, 0, 0, 238, 1443, 1, 0, 0, 0, 240, 1445, 1, 0, 0, 0, 242, 1454, 1, 0, 0, 0, 244, 1462, 1, 0, 0, 0, 246, 1465, 1, 0, 0, 0, 248, 1471, 1, 0, 0, 0, 250, 1480, 1, 0, 0, 0, 252, 1488, 1, 0, 0, 0, 254, 1494, 1, 0, 0, 0, 256, 1504, 1, 0, 0, 0, 258, 1506, 1, 0, 0, 0, 260, 1512, 1, 0, 0, 0, 262, 1524, 1, 0, 0, 0, 264, 1531, 1, 0, 0, 0, 266, 1545, 1, 0, 0, 0, 268, 1547, 1, 0, 0, 0, 270, 1549, 1, 0, 0, 0, 272, 1553, 1, 0, 0, 0, 274, 1557, 1, 0, 0, 0, 276, 1567, 1, 0, 0, 0, 278, 1569, 1, 0, 0, 0, 280, 1575, 1, 0, 0, 0, 282, 1583, 1, 0, 0, 0, 284, 1601, 1, 0, 0, 0, 286, 1603, 1, 0, 0, 0, 288, 1609, 1, 0, 0, 0, 290, 1624, 1, 0, 0, 0, 292, 1627, 1, 0, 0, 0, 294, 1644, 1, 0, 0, 0, 296, 1646, 1, 0, 0, 0, 298, 1648, 1, 0, 0, 0, 300, 1654, 1, 0, 0, 0, 302, 1660, 1, 0, 0, 0, 304, 1670, 1, 0, 0, 0, 306, 1674, 1, 0, 0, 0, 308, 1676, 1, 0, 0, 0, 310, 1692, 1, 0, 0, 0, 312, 1710, 1, 0, 0, 0, 314, 1712, 1, 0, 0, 0, 316, 1714, 1, 0, 0, 0, 318, 1722, 1, 0, 0, 0, 320, 1737, 1, 0, 0, 0, 322, 1752, 1, 0, 0, 0, 324, 1758, 1, 0, 0, 0, 326, 1764, 1, 0, 0, 0, 328, 1770, 1, 0, 0, 0, 330, 1774, 1, 0, 0, 0, 332, 1792, 1, 0, 0, 0, 334, 1794, 1, 0, 0, 0, 336, 1801, 1, 0, 0, 0, 338, 1810, 1, 0, 0, 0, 340, 1816, 1, 0, 0, 0, 342, 1824, 1, 0, 0, 0, 344, 1827, 1, 0, 0, 0, 346, 1836, 1, 0, 0, 0, 348, 1843, 1, 0, 0, 0, 350, 1854, 1, 0, 0, 0, 352, 1864, 1, 0, 0, 0, 354, 1901, 1, 0, 0, 0, 356, 1903, 1, 0, 0, 0, 358, 1933, 1, 0, 0, 0, 360, 1940, 1, 0, 0, 0, 362, 1942, 1, 0, 0, 0, 364, 1948, 1, 0, 0, 0, 366, 1990, 1, 0, 0, 0, 368, 1992, 1, 0, 0, 0, 370, 2033, 1, 0, 0, 0, 372, 2118, 1, 0, 0, 0, 374, 2120, 1, 0, 0, 0, 376, 2202, 1, 0, 0, 0, 378, 2207, 1, 0, 0, 0, 380, 2222, 1, 0, 0, 0, 382, 2224, 1, 0, 0, 0, 384, 2236, 1, 0, 0, 0, 386, 2248, 1, 0, 0, 0, 388, 2260, 1, 0, 0, 0, 390, 2285, 1, 0, 0, 0, 392, 2365, 1, 0, 0, 0, 394, 2367, 1, 0, 0, 0, 396, 2434, 1, 0, 0, 0, 398, 2436, 1, 0, 0, 0, 400, 2491, 1, 0, 0, 0, 402, 2493, 1, 0, 0, 0, 404, 2539, 1, 0, 0, 0, 406, 2563, 1, 0, 0, 0, 408, 2565, 1, 0, 0, 0, 410, 2575, 1, 0, 0, 0, 412, 2582, 1, 0, 0, 0, 414, 2586, 1, 0, 0, 0, 416, 2588, 1, 0, 0, 0, 418, 2602, 1, 0, 0, 0, 420, 2604, 1, 0, 0, 0, 422, 2614, 1, 0, 0, 0, 424, 2618, 1, 0, 0, 0, 426, 2620, 1, 0, 0, 0, 428, 2627, 1, 0, 0, 0, 430, 2629, 1, 0, 0, 0, 432, 2638, 1, 0, 0, 0, 434, 2640, 1, 0, 0, 0, 436, 2651, 1, 0, 0, 0, 438, 2662, 1, 0, 0, 0, 440, 2673, 1, 0, 0, 0, 442, 2684, 1, 0, 0, 0, 444, 2695, 1, 0, 0, 0, 446, 2709, 1, 0, 0, 0, 448, 2732, 1, 0, 0, 0, 450, 2753, 1, 0, 0, 0, 452, 2767, 1, 0, 0, 0, 454, 2791, 1, 0, 0, 0, 456, 2793, 1, 0, 0, 0, 458, 2796, 1, 0, 0, 0, 460, 2805, 1, 0, 0, 0, 462, 2809, 1, 0, 0, 0, 464, 2818, 1, 0, 0, 0, 466, 2821, 1, 0, 0, 0, 468, 2823, 1, 0, 0, 0, 470, 2826, 1, 0, 0, 0, 472, 2855, 1, 0, 0, 0, 474, 475, 7, 0, 0, 0, 475, 1, 1, 0, 0, 0, 476, 479, 3, 4, 2, 0, 477, 479, 3, 12, 6, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, 0, 0, 479, 3, 1, 0, 0, 0, 480, 482, 3, 230, 115, 0, 481, 480, 1, 0, 0, 0, 482, 485, 1, 0, 0, 0, 483, 481, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 486, 1, 0, 0, 0, 485, 483, 1, 0, 0, 0, 486, 495, 3, 6, 3, 0, 487, 489, 3, 230, 115, 0, 488, 487, 1, 0, 0, 0, 489, 492, 1, 0, 0, 0, 490, 488, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 493, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 495, 5, 3, 0, 0, 494, 483, 1, 0, 0, 0, 494, 490, 1, 0, 0, 0, 495, 5, 1, 0, 0, 0, 496, 499, 3, 8, 4, 0, 497, 499, 3, 10, 5, 0, 498, 496, 1, 0, 0, 0, 498, 497, 1, 0, 0, 0, 499, 7, 1, 0, 0, 0, 500, 501, 7, 1, 0, 0, 501, 9, 1, 0, 0, 0, 502, 503, 7, 2, 0, 0, 503, 11, 1, 0, 0, 0, 504, 508, 3, 14, 7, 0, 505, 508, 3, 28, 14, 0, 506, 508, 3, 30, 15, 0, 507, 504, 1, 0, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 13, 1, 0, 0, 0, 509, 512, 3, 20, 10, 0, 510, 512, 3, 26, 13, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 517, 1, 0, 0, 0, 513, 516, 3, 18, 9, 0, 514, 516, 3, 24, 12, 0, 515, 513, 1, 0, 0, 0, 515, 514, 1, 0, 0, 0, 516, 519, 1, 0, 0, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 15, 1, 0, 0, 0, 519, 517, 1, 0, 0, 0, 520, 522, 3, 230, 115, 0, 521, 520, 1, 0, 0, 0, 522, 525, 1, 0, 0, 0, 523, 521, 1, 0, 0, 0, 523, 524, 1, 0, 0, 0, 524, 526, 1, 0, 0, 0, 525, 523, 1, 0, 0, 0, 526, 528, 5, 102, 0, 0, 527, 529, 3, 42, 21, 0, 528, 527, 1, 0, 0, 0, 528, 529, 1, 0, 0, 0, 529, 543, 1, 0, 0, 0, 530, 531, 3, 14, 7, 0, 531, 535, 5, 65, 0, 0, 532, 534, 3, 230, 115, 0, 533, 532, 1, 0, 0, 0, 534, 537, 1, 0, 0, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 1, 0, 0, 0, 537, 535, 1, 0, 0, 0, 538, 540, 5, 102, 0, 0, 539, 541, 3, 42, 21, 0, 540, 539, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 543, 1, 0, 0, 0, 542, 523, 1, 0, 0, 0, 542, 530, 1, 0, 0, 0, 543, 17, 1, 0, 0, 0, 544, 548, 5, 65, 0, 0, 545, 547, 3, 230, 115, 0, 546, 545, 1, 0, 0, 0, 547, 550, 1, 0, 0, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 551, 1, 0, 0, 0, 550, 548, 1, 0, 0, 0, 551, 553, 5, 102, 0, 0, 552, 554, 3, 42, 21, 0, 553, 552, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 19, 1, 0, 0, 0, 555, 557, 3, 230, 115, 0, 556, 555, 1, 0, 0, 0, 557, 560, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 559, 1, 0, 0, 0, 559, 561, 1, 0, 0, 0, 560, 558, 1, 0, 0, 0, 561, 563, 5, 102, 0, 0, 562, 564, 3, 42, 21, 0, 563, 562, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 21, 1, 0, 0, 0, 565, 566, 3, 16, 8, 0, 566, 23, 1, 0, 0, 0, 567, 568, 3, 18, 9, 0, 568, 25, 1, 0, 0, 0, 569, 570, 3, 20, 10, 0, 570, 27, 1, 0, 0, 0, 571, 573, 3, 230, 115, 0, 572, 571, 1, 0, 0, 0, 573, 576, 1, 0, 0, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 574, 1, 0, 0, 0, 577, 578, 5, 102, 0, 0, 578, 29, 1, 0, 0, 0, 579, 580, 3, 4, 2, 0, 580, 581, 3, 32, 16, 0, 581, 589, 1, 0, 0, 0, 582, 583, 3, 14, 7, 0, 583, 584, 3, 32, 16, 0, 584, 589, 1, 0, 0, 0, 585, 586, 3, 28, 14, 0, 586, 587, 3, 32, 16, 0, 587, 589, 1, 0, 0, 0, 588, 579, 1, 0, 0, 0, 588, 582, 1, 0, 0, 0, 588, 585, 1, 0, 0, 0, 589, 31, 1, 0, 0, 0, 590, 592, 3, 230, 115, 0, 591, 590, 1, 0, 0, 0, 592, 595, 1, 0, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 596, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 596, 597, 5, 61, 0, 0, 597, 608, 5, 62, 0, 0, 598, 600, 3, 230, 115, 0, 599, 598, 1, 0, 0, 0, 600, 603, 1, 0, 0, 0, 601, 599, 1, 0, 0, 0, 601, 602, 1, 0, 0, 0, 602, 604, 1, 0, 0, 0, 603, 601, 1, 0, 0, 0, 604, 605, 5, 61, 0, 0, 605, 607, 5, 62, 0, 0, 606, 601, 1, 0, 0, 0, 607, 610, 1, 0, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 33, 1, 0, 0, 0, 610, 608, 1, 0, 0, 0, 611, 613, 3, 36, 18, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 619, 5, 102, 0, 0, 618, 620, 3, 38, 19, 0, 619, 618, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 35, 1, 0, 0, 0, 621, 622, 3, 230, 115, 0, 622, 37, 1, 0, 0, 0, 623, 624, 5, 17, 0, 0, 624, 634, 3, 28, 14, 0, 625, 626, 5, 17, 0, 0, 626, 630, 3, 14, 7, 0, 627, 629, 3, 40, 20, 0, 628, 627, 1, 0, 0, 0, 629, 632, 1, 0, 0, 0, 630, 628, 1, 0, 0, 0, 630, 631, 1, 0, 0, 0, 631, 634, 1, 0, 0, 0, 632, 630, 1, 0, 0, 0, 633, 623, 1, 0, 0, 0, 633, 625, 1, 0, 0, 0, 634, 39, 1, 0, 0, 0, 635, 636, 5, 85, 0, 0, 636, 637, 3, 22, 11, 0, 637, 41, 1, 0, 0, 0, 638, 639, 5, 68, 0, 0, 639, 640, 3, 44, 22, 0, 640, 641, 5, 67, 0, 0, 641, 43, 1, 0, 0, 0, 642, 647, 3, 46, 23, 0, 643, 644, 5, 64, 0, 0, 644, 646, 3, 46, 23, 0, 645, 643, 1, 0, 0, 0, 646, 649, 1, 0, 0, 0, 647, 645, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 45, 1, 0, 0, 0, 649, 647, 1, 0, 0, 0, 650, 653, 3, 12, 6, 0, 651, 653, 3, 48, 24, 0, 652, 650, 1, 0, 0, 0, 652, 651, 1, 0, 0, 0, 653, 47, 1, 0, 0, 0, 654, 656, 3, 230, 115, 0, 655, 654, 1, 0, 0, 0, 656, 659, 1, 0, 0, 0, 657, 655, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 660, 1, 0, 0, 0, 659, 657, 1, 0, 0, 0, 660, 662, 5, 71, 0, 0, 661, 663, 3, 50, 25, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 49, 1, 0, 0, 0, 664, 665, 5, 17, 0, 0, 665, 669, 3, 12, 6, 0, 666, 667, 5, 40, 0, 0, 667, 669, 3, 12, 6, 0, 668, 664, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 51, 1, 0, 0, 0, 670, 671, 6, 26, -1, 0, 671, 672, 5, 102, 0, 0, 672, 678, 1, 0, 0, 0, 673, 674, 10, 1, 0, 0, 674, 675, 5, 65, 0, 0, 675, 677, 5, 102, 0, 0, 676, 673, 1, 0, 0, 0, 677, 680, 1, 0, 0, 0, 678, 676, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 53, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 681, 687, 5, 102, 0, 0, 682, 683, 3, 56, 28, 0, 683, 684, 5, 65, 0, 0, 684, 685, 5, 102, 0, 0, 685, 687, 1, 0, 0, 0, 686, 681, 1, 0, 0, 0, 686, 682, 1, 0, 0, 0, 687, 55, 1, 0, 0, 0, 688, 689, 6, 28, -1, 0, 689, 690, 5, 102, 0, 0, 690, 696, 1, 0, 0, 0, 691, 692, 10, 1, 0, 0, 692, 693, 5, 65, 0, 0, 693, 695, 5, 102, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 57, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 705, 5, 102, 0, 0, 700, 701, 3, 62, 31, 0, 701, 702, 5, 65, 0, 0, 702, 703, 5, 102, 0, 0, 703, 705, 1, 0, 0, 0, 704, 699, 1, 0, 0, 0, 704, 700, 1, 0, 0, 0, 705, 59, 1, 0, 0, 0, 706, 707, 5, 102, 0, 0, 707, 61, 1, 0, 0, 0, 708, 709, 6, 31, -1, 0, 709, 710, 5, 102, 0, 0, 710, 716, 1, 0, 0, 0, 711, 712, 10, 1, 0, 0, 712, 713, 5, 65, 0, 0, 713, 715, 5, 102, 0, 0, 714, 711, 1, 0, 0, 0, 715, 718, 1, 0, 0, 0, 716, 714, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 63, 1, 0, 0, 0, 718, 716, 1, 0, 0, 0, 719, 721, 3, 66, 33, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 725, 1, 0, 0, 0, 722, 724, 3, 70, 35, 0, 723, 722, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 731, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 730, 3, 80, 40, 0, 729, 728, 1, 0, 0, 0, 730, 733, 1, 0, 0, 0, 731, 729, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 734, 1, 0, 0, 0, 733, 731, 1, 0, 0, 0, 734, 735, 5, 0, 0, 1, 735, 65, 1, 0, 0, 0, 736, 738, 3, 68, 34, 0, 737, 736, 1, 0, 0, 0, 738, 741, 1, 0, 0, 0, 739, 737, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 1, 0, 0, 0, 741, 739, 1, 0, 0, 0, 742, 743, 5, 32, 0, 0, 743, 748, 5, 102, 0, 0, 744, 745, 5, 65, 0, 0, 745, 747, 5, 102, 0, 0, 746, 744, 1, 0, 0, 0, 747, 750, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 751, 1, 0, 0, 0, 750, 748, 1, 0, 0, 0, 751, 752, 5, 63, 0, 0, 752, 67, 1, 0, 0, 0, 753, 754, 3, 230, 115, 0, 754, 69, 1, 0, 0, 0, 755, 760, 3, 72, 36, 0, 756, 760, 3, 74, 37, 0, 757, 760, 3, 76, 38, 0, 758, 760, 3, 78, 39, 0, 759, 755, 1, 0, 0, 0, 759, 756, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 759, 758, 1, 0, 0, 0, 760, 71, 1, 0, 0, 0, 761, 762, 5, 25, 0, 0, 762, 763, 3, 54, 27, 0, 763, 764, 5, 63, 0, 0, 764, 73, 1, 0, 0, 0, 765, 766, 5, 25, 0, 0, 766, 767, 3, 56, 28, 0, 767, 768, 5, 65, 0, 0, 768, 769, 5, 83, 0, 0, 769, 770, 5, 63, 0, 0, 770, 75, 1, 0, 0, 0, 771, 772, 5, 25, 0, 0, 772, 773, 5, 38, 0, 0, 773, 774, 3, 54, 27, 0, 774, 775, 5, 65, 0, 0, 775, 776, 5, 102, 0, 0, 776, 777, 5, 63, 0, 0, 777, 77, 1, 0, 0, 0, 778, 779, 5, 25, 0, 0, 779, 780, 5, 38, 0, 0, 780, 781, 3, 54, 27, 0, 781, 782, 5, 65, 0, 0, 782, 783, 5, 83, 0, 0, 783, 784, 5, 63, 0, 0, 784, 79, 1, 0, 0, 0, 785, 789, 3, 82, 41, 0, 786, 789, 3, 198, 99, 0, 787, 789, 5, 63, 0, 0, 788, 785, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 787, 1, 0, 0, 0, 789, 81, 1, 0, 0, 0, 790, 793, 3, 84, 42, 0, 791, 793, 3, 186, 93, 0, 792, 790, 1, 0, 0, 0, 792, 791, 1, 0, 0, 0, 793, 83, 1, 0, 0, 0, 794, 796, 3, 86, 43, 0, 795, 794, 1, 0, 0, 0, 796, 799, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 800, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 800, 801, 5, 9, 0, 0, 801, 803, 5, 102, 0, 0, 802, 804, 3, 88, 44, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 806, 1, 0, 0, 0, 805, 807, 3, 92, 46, 0, 806, 805, 1, 0, 0, 0, 806, 807, 1, 0, 0, 0, 807, 809, 1, 0, 0, 0, 808, 810, 3, 94, 47, 0, 809, 808, 1, 0, 0, 0, 809, 810, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 812, 3, 98, 49, 0, 812, 85, 1, 0, 0, 0, 813, 822, 3, 230, 115, 0, 814, 822, 5, 35, 0, 0, 815, 822, 5, 34, 0, 0, 816, 822, 5, 33, 0, 0, 817, 822, 5, 1, 0, 0, 818, 822, 5, 38, 0, 0, 819, 822, 5, 18, 0, 0, 820, 822, 5, 39, 0, 0, 821, 813, 1, 0, 0, 0, 821, 814, 1, 0, 0, 0, 821, 815, 1, 0, 0, 0, 821, 816, 1, 0, 0, 0, 821, 817, 1, 0, 0, 0, 821, 818, 1, 0, 0, 0, 821, 819, 1, 0, 0, 0, 821, 820, 1, 0, 0, 0, 822, 87, 1, 0, 0, 0, 823, 824, 5, 68, 0, 0, 824, 825, 3, 90, 45, 0, 825, 826, 5, 67, 0, 0, 826, 89, 1, 0, 0, 0, 827, 832, 3, 34, 17, 0, 828, 829, 5, 64, 0, 0, 829, 831, 3, 34, 17, 0, 830, 828, 1, 0, 0, 0, 831, 834, 1, 0, 0, 0, 832, 830, 1, 0, 0, 0, 832, 833, 1, 0, 0, 0, 833, 91, 1, 0, 0, 0, 834, 832, 1, 0, 0, 0, 835, 836, 5, 17, 0, 0, 836, 837, 3, 16, 8, 0, 837, 93, 1, 0, 0, 0, 838, 839, 5, 24, 0, 0, 839, 840, 3, 96, 48, 0, 840, 95, 1, 0, 0, 0, 841, 846, 3, 22, 11, 0, 842, 843, 5, 64, 0, 0, 843, 845, 3, 22, 11, 0, 844, 842, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 97, 1, 0, 0, 0, 848, 846, 1, 0, 0, 0, 849, 853, 5, 59, 0, 0, 850, 852, 3, 100, 50, 0, 851, 850, 1, 0, 0, 0, 852, 855, 1, 0, 0, 0, 853, 851, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 1, 0, 0, 0, 855, 853, 1, 0, 0, 0, 856, 857, 5, 60, 0, 0, 857, 99, 1, 0, 0, 0, 858, 863, 3, 102, 51, 0, 859, 863, 3, 170, 85, 0, 860, 863, 3, 172, 86, 0, 861, 863, 3, 174, 87, 0, 862, 858, 1, 0, 0, 0, 862, 859, 1, 0, 0, 0, 862, 860, 1, 0, 0, 0, 862, 861, 1, 0, 0, 0, 863, 101, 1, 0, 0, 0, 864, 870, 3, 104, 52, 0, 865, 870, 3, 140, 70, 0, 866, 870, 3, 82, 41, 0, 867, 870, 3, 198, 99, 0, 868, 870, 5, 63, 0, 0, 869, 864, 1, 0, 0, 0, 869, 865, 1, 0, 0, 0, 869, 866, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 869, 868, 1, 0, 0, 0, 870, 103, 1, 0, 0, 0, 871, 873, 3, 106, 53, 0, 872, 871, 1, 0, 0, 0, 873, 876, 1, 0, 0, 0, 874, 872, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 877, 1, 0, 0, 0, 876, 874, 1, 0, 0, 0, 877, 878, 3, 116, 58, 0, 878, 879, 3, 108, 54, 0, 879, 880, 5, 63, 0, 0, 880, 105, 1, 0, 0, 0, 881, 890, 3, 230, 115, 0, 882, 890, 5, 35, 0, 0, 883, 890, 5, 34, 0, 0, 884, 890, 5, 33, 0, 0, 885, 890, 5, 38, 0, 0, 886, 890, 5, 18, 0, 0, 887, 890, 5, 46, 0, 0, 888, 890, 5, 49, 0, 0, 889, 881, 1, 0, 0, 0, 889, 882, 1, 0, 0, 0, 889, 883, 1, 0, 0, 0, 889, 884, 1, 0, 0, 0, 889, 885, 1, 0, 0, 0, 889, 886, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 107, 1, 0, 0, 0, 891, 896, 3, 110, 55, 0, 892, 893, 5, 64, 0, 0, 893, 895, 3, 110, 55, 0, 894, 892, 1, 0, 0, 0, 895, 898, 1, 0, 0, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 109, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 902, 3, 112, 56, 0, 900, 901, 5, 66, 0, 0, 901, 903, 3, 114, 57, 0, 902, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 111, 1, 0, 0, 0, 904, 906, 5, 102, 0, 0, 905, 907, 3, 32, 16, 0, 906, 905, 1, 0, 0, 0, 906, 907, 1, 0, 0, 0, 907, 113, 1, 0, 0, 0, 908, 911, 3, 414, 207, 0, 909, 911, 3, 248, 124, 0, 910, 908, 1, 0, 0, 0, 910, 909, 1, 0, 0, 0, 911, 115, 1, 0, 0, 0, 912, 915, 3, 118, 59, 0, 913, 915, 3, 120, 60, 0, 914, 912, 1, 0, 0, 0, 914, 913, 1, 0, 0, 0, 915, 117, 1, 0, 0, 0, 916, 919, 3, 6, 3, 0, 917, 919, 5, 3, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 119, 1, 0, 0, 0, 920, 924, 3, 122, 61, 0, 921, 924, 3, 136, 68, 0, 922, 924, 3, 138, 69, 0, 923, 920, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, 923, 922, 1, 0, 0, 0, 924, 121, 1, 0, 0, 0, 925, 928, 3, 128, 64, 0, 926, 928, 3, 134, 67, 0, 927, 925, 1, 0, 0, 0, 927, 926, 1, 0, 0, 0, 928, 933, 1, 0, 0, 0, 929, 932, 3, 126, 63, 0, 930, 932, 3, 132, 66, 0, 931, 929, 1, 0, 0, 0, 931, 930, 1, 0, 0, 0, 932, 935, 1, 0, 0, 0, 933, 931, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 123, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 936, 938, 5, 102, 0, 0, 937, 939, 3, 42, 21, 0, 938, 937, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 953, 1, 0, 0, 0, 940, 941, 3, 122, 61, 0, 941, 945, 5, 65, 0, 0, 942, 944, 3, 230, 115, 0, 943, 942, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 945, 946, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 945, 1, 0, 0, 0, 948, 950, 5, 102, 0, 0, 949, 951, 3, 42, 21, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 953, 1, 0, 0, 0, 952, 936, 1, 0, 0, 0, 952, 940, 1, 0, 0, 0, 953, 125, 1, 0, 0, 0, 954, 958, 5, 65, 0, 0, 955, 957, 3, 230, 115, 0, 956, 955, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, 956, 1, 0, 0, 0, 958, 959, 1, 0, 0, 0, 959, 961, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 961, 963, 5, 102, 0, 0, 962, 964, 3, 42, 21, 0, 963, 962, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 127, 1, 0, 0, 0, 965, 967, 5, 102, 0, 0, 966, 968, 3, 42, 21, 0, 967, 966, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 129, 1, 0, 0, 0, 969, 970, 3, 124, 62, 0, 970, 131, 1, 0, 0, 0, 971, 972, 3, 126, 63, 0, 972, 133, 1, 0, 0, 0, 973, 974, 3, 128, 64, 0, 974, 135, 1, 0, 0, 0, 975, 976, 5, 102, 0, 0, 976, 137, 1, 0, 0, 0, 977, 978, 3, 118, 59, 0, 978, 979, 3, 32, 16, 0, 979, 987, 1, 0, 0, 0, 980, 981, 3, 122, 61, 0, 981, 982, 3, 32, 16, 0, 982, 987, 1, 0, 0, 0, 983, 984, 3, 136, 68, 0, 984, 985, 3, 32, 16, 0, 985, 987, 1, 0, 0, 0, 986, 977, 1, 0, 0, 0, 986, 980, 1, 0, 0, 0, 986, 983, 1, 0, 0, 0, 987, 139, 1, 0, 0, 0, 988, 990, 3, 142, 71, 0, 989, 988, 1, 0, 0, 0, 990, 993, 1, 0, 0, 0, 991, 989, 1, 0, 0, 0, 991, 992, 1, 0, 0, 0, 992, 994, 1, 0, 0, 0, 993, 991, 1, 0, 0, 0, 994, 995, 3, 144, 72, 0, 995, 996, 3, 168, 84, 0, 996, 141, 1, 0, 0, 0, 997, 1008, 3, 230, 115, 0, 998, 1008, 5, 35, 0, 0, 999, 1008, 5, 34, 0, 0, 1000, 1008, 5, 33, 0, 0, 1001, 1008, 5, 1, 0, 0, 1002, 1008, 5, 38, 0, 0, 1003, 1008, 5, 18, 0, 0, 1004, 1008, 5, 42, 0, 0, 1005, 1008, 5, 30, 0, 0, 1006, 1008, 5, 39, 0, 0, 1007, 997, 1, 0, 0, 0, 1007, 998, 1, 0, 0, 0, 1007, 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 143, 1, 0, 0, 0, 1009, 1010, 3, 146, 73, 0, 1010, 1012, 3, 148, 74, 0, 1011, 1013, 3, 162, 81, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1027, 1, 0, 0, 0, 1014, 1018, 3, 88, 44, 0, 1015, 1017, 3, 230, 115, 0, 1016, 1015, 1, 0, 0, 0, 1017, 1020, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1022, 3, 146, 73, 0, 1022, 1024, 3, 148, 74, 0, 1023, 1025, 3, 162, 81, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1027, 1, 0, 0, 0, 1026, 1009, 1, 0, 0, 0, 1026, 1014, 1, 0, 0, 0, 1027, 145, 1, 0, 0, 0, 1028, 1031, 3, 116, 58, 0, 1029, 1031, 5, 48, 0, 0, 1030, 1028, 1, 0, 0, 0, 1030, 1029, 1, 0, 0, 0, 1031, 147, 1, 0, 0, 0, 1032, 1033, 5, 102, 0, 0, 1033, 1035, 5, 57, 0, 0, 1034, 1036, 3, 150, 75, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1039, 5, 58, 0, 0, 1038, 1040, 3, 32, 16, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 149, 1, 0, 0, 0, 1041, 1042, 3, 152, 76, 0, 1042, 1043, 5, 64, 0, 0, 1043, 1044, 3, 158, 79, 0, 1044, 1047, 1, 0, 0, 0, 1045, 1047, 3, 158, 79, 0, 1046, 1041, 1, 0, 0, 0, 1046, 1045, 1, 0, 0, 0, 1047, 151, 1, 0, 0, 0, 1048, 1053, 3, 154, 77, 0, 1049, 1050, 5, 64, 0, 0, 1050, 1052, 3, 154, 77, 0, 1051, 1049, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1065, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1061, 3, 160, 80, 0, 1057, 1058, 5, 64, 0, 0, 1058, 1060, 3, 154, 77, 0, 1059, 1057, 1, 0, 0, 0, 1060, 1063, 1, 0, 0, 0, 1061, 1059, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1065, 1, 0, 0, 0, 1063, 1061, 1, 0, 0, 0, 1064, 1048, 1, 0, 0, 0, 1064, 1056, 1, 0, 0, 0, 1065, 153, 1, 0, 0, 0, 1066, 1068, 3, 156, 78, 0, 1067, 1066, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 1073, 3, 116, 58, 0, 1073, 1074, 3, 112, 56, 0, 1074, 155, 1, 0, 0, 0, 1075, 1078, 3, 230, 115, 0, 1076, 1078, 5, 18, 0, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1076, 1, 0, 0, 0, 1078, 157, 1, 0, 0, 0, 1079, 1081, 3, 156, 78, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1084, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1085, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1085, 1089, 3, 116, 58, 0, 1086, 1088, 3, 230, 115, 0, 1087, 1086, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 5, 104, 0, 0, 1093, 1094, 3, 112, 56, 0, 1094, 1097, 1, 0, 0, 0, 1095, 1097, 3, 154, 77, 0, 1096, 1082, 1, 0, 0, 0, 1096, 1095, 1, 0, 0, 0, 1097, 159, 1, 0, 0, 0, 1098, 1100, 3, 230, 115, 0, 1099, 1098, 1, 0, 0, 0, 1100, 1103, 1, 0, 0, 0, 1101, 1099, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1104, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1104, 1107, 3, 116, 58, 0, 1105, 1106, 5, 102, 0, 0, 1106, 1108, 5, 65, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 5, 43, 0, 0, 1110, 161, 1, 0, 0, 0, 1111, 1112, 5, 45, 0, 0, 1112, 1113, 3, 164, 82, 0, 1113, 163, 1, 0, 0, 0, 1114, 1119, 3, 166, 83, 0, 1115, 1116, 5, 64, 0, 0, 1116, 1118, 3, 166, 83, 0, 1117, 1115, 1, 0, 0, 0, 1118, 1121, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 165, 1, 0, 0, 0, 1121, 1119, 1, 0, 0, 0, 1122, 1125, 3, 16, 8, 0, 1123, 1125, 3, 28, 14, 0, 1124, 1122, 1, 0, 0, 0, 1124, 1123, 1, 0, 0, 0, 1125, 167, 1, 0, 0, 0, 1126, 1129, 3, 252, 126, 0, 1127, 1129, 5, 63, 0, 0, 1128, 1126, 1, 0, 0, 0, 1128, 1127, 1, 0, 0, 0, 1129, 169, 1, 0, 0, 0, 1130, 1131, 3, 252, 126, 0, 1131, 171, 1, 0, 0, 0, 1132, 1133, 5, 38, 0, 0, 1133, 1134, 3, 252, 126, 0, 1134, 173, 1, 0, 0, 0, 1135, 1137, 3, 176, 88, 0, 1136, 1135, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1138, 1139, 1, 0, 0, 0, 1139, 1141, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1141, 1143, 3, 178, 89, 0, 1142, 1144, 3, 162, 81, 0, 1143, 1142, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 3, 182, 91, 0, 1146, 175, 1, 0, 0, 0, 1147, 1152, 3, 230, 115, 0, 1148, 1152, 5, 35, 0, 0, 1149, 1152, 5, 34, 0, 0, 1150, 1152, 5, 33, 0, 0, 1151, 1147, 1, 0, 0, 0, 1151, 1148, 1, 0, 0, 0, 1151, 1149, 1, 0, 0, 0, 1151, 1150, 1, 0, 0, 0, 1152, 177, 1, 0, 0, 0, 1153, 1155, 3, 88, 44, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1157, 3, 180, 90, 0, 1157, 1159, 5, 57, 0, 0, 1158, 1160, 3, 150, 75, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 5, 58, 0, 0, 1162, 179, 1, 0, 0, 0, 1163, 1164, 5, 102, 0, 0, 1164, 181, 1, 0, 0, 0, 1165, 1167, 5, 59, 0, 0, 1166, 1168, 3, 184, 92, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1171, 3, 254, 127, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 5, 60, 0, 0, 1173, 183, 1, 0, 0, 0, 1174, 1176, 3, 42, 21, 0, 1175, 1174, 1, 0, 0, 0, 1175, 1176, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1178, 5, 43, 0, 0, 1178, 1180, 5, 57, 0, 0, 1179, 1181, 3, 398, 199, 0, 1180, 1179, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 5, 58, 0, 0, 1183, 1221, 5, 63, 0, 0, 1184, 1186, 3, 42, 21, 0, 1185, 1184, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1188, 5, 40, 0, 0, 1188, 1190, 5, 57, 0, 0, 1189, 1191, 3, 398, 199, 0, 1190, 1189, 1, 0, 0, 0, 1190, 1191, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 5, 58, 0, 0, 1193, 1221, 5, 63, 0, 0, 1194, 1195, 3, 58, 29, 0, 1195, 1197, 5, 65, 0, 0, 1196, 1198, 3, 42, 21, 0, 1197, 1196, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1200, 5, 40, 0, 0, 1200, 1202, 5, 57, 0, 0, 1201, 1203, 3, 398, 199, 0, 1202, 1201, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1205, 5, 58, 0, 0, 1205, 1206, 5, 63, 0, 0, 1206, 1221, 1, 0, 0, 0, 1207, 1208, 3, 352, 176, 0, 1208, 1210, 5, 65, 0, 0, 1209, 1211, 3, 42, 21, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 40, 0, 0, 1213, 1215, 5, 57, 0, 0, 1214, 1216, 3, 398, 199, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 58, 0, 0, 1218, 1219, 5, 63, 0, 0, 1219, 1221, 1, 0, 0, 0, 1220, 1175, 1, 0, 0, 0, 1220, 1185, 1, 0, 0, 0, 1220, 1194, 1, 0, 0, 0, 1220, 1207, 1, 0, 0, 0, 1221, 185, 1, 0, 0, 0, 1222, 1224, 3, 86, 43, 0, 1223, 1222, 1, 0, 0, 0, 1224, 1227, 1, 0, 0, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1228, 1, 0, 0, 0, 1227, 1225, 1, 0, 0, 0, 1228, 1229, 5, 16, 0, 0, 1229, 1231, 5, 102, 0, 0, 1230, 1232, 3, 94, 47, 0, 1231, 1230, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1233, 1, 0, 0, 0, 1233, 1234, 3, 188, 94, 0, 1234, 187, 1, 0, 0, 0, 1235, 1237, 5, 59, 0, 0, 1236, 1238, 3, 190, 95, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1240, 1, 0, 0, 0, 1239, 1241, 5, 64, 0, 0, 1240, 1239, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1243, 1, 0, 0, 0, 1242, 1244, 3, 196, 98, 0, 1243, 1242, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, 5, 60, 0, 0, 1246, 189, 1, 0, 0, 0, 1247, 1252, 3, 192, 96, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1251, 3, 192, 96, 0, 1250, 1248, 1, 0, 0, 0, 1251, 1254, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 191, 1, 0, 0, 0, 1254, 1252, 1, 0, 0, 0, 1255, 1257, 3, 194, 97, 0, 1256, 1255, 1, 0, 0, 0, 1257, 1260, 1, 0, 0, 0, 1258, 1256, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1261, 1, 0, 0, 0, 1260, 1258, 1, 0, 0, 0, 1261, 1267, 5, 102, 0, 0, 1262, 1264, 5, 57, 0, 0, 1263, 1265, 3, 398, 199, 0, 1264, 1263, 1, 0, 0, 0, 1264, 1265, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1268, 5, 58, 0, 0, 1267, 1262, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1270, 1, 0, 0, 0, 1269, 1271, 3, 98, 49, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 193, 1, 0, 0, 0, 1272, 1273, 3, 230, 115, 0, 1273, 195, 1, 0, 0, 0, 1274, 1278, 5, 63, 0, 0, 1275, 1277, 3, 100, 50, 0, 1276, 1275, 1, 0, 0, 0, 1277, 1280, 1, 0, 0, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 197, 1, 0, 0, 0, 1280, 1278, 1, 0, 0, 0, 1281, 1284, 3, 200, 100, 0, 1282, 1284, 3, 218, 109, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1282, 1, 0, 0, 0, 1284, 199, 1, 0, 0, 0, 1285, 1287, 3, 202, 101, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1290, 1, 0, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1291, 1, 0, 0, 0, 1290, 1288, 1, 0, 0, 0, 1291, 1292, 5, 28, 0, 0, 1292, 1294, 5, 102, 0, 0, 1293, 1295, 3, 88, 44, 0, 1294, 1293, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1297, 1, 0, 0, 0, 1296, 1298, 3, 204, 102, 0, 1297, 1296, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 3, 206, 103, 0, 1300, 201, 1, 0, 0, 0, 1301, 1309, 3, 230, 115, 0, 1302, 1309, 5, 35, 0, 0, 1303, 1309, 5, 34, 0, 0, 1304, 1309, 5, 33, 0, 0, 1305, 1309, 5, 1, 0, 0, 1306, 1309, 5, 38, 0, 0, 1307, 1309, 5, 39, 0, 0, 1308, 1301, 1, 0, 0, 0, 1308, 1302, 1, 0, 0, 0, 1308, 1303, 1, 0, 0, 0, 1308, 1304, 1, 0, 0, 0, 1308, 1305, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 203, 1, 0, 0, 0, 1310, 1311, 5, 17, 0, 0, 1311, 1312, 3, 96, 48, 0, 1312, 205, 1, 0, 0, 0, 1313, 1317, 5, 59, 0, 0, 1314, 1316, 3, 208, 104, 0, 1315, 1314, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1315, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1320, 1, 0, 0, 0, 1319, 1317, 1, 0, 0, 0, 1320, 1321, 5, 60, 0, 0, 1321, 207, 1, 0, 0, 0, 1322, 1328, 3, 210, 105, 0, 1323, 1328, 3, 214, 107, 0, 1324, 1328, 3, 82, 41, 0, 1325, 1328, 3, 198, 99, 0, 1326, 1328, 5, 63, 0, 0, 1327, 1322, 1, 0, 0, 0, 1327, 1323, 1, 0, 0, 0, 1327, 1324, 1, 0, 0, 0, 1327, 1325, 1, 0, 0, 0, 1327, 1326, 1, 0, 0, 0, 1328, 209, 1, 0, 0, 0, 1329, 1331, 3, 212, 106, 0, 1330, 1329, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1335, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1336, 3, 116, 58, 0, 1336, 1337, 3, 108, 54, 0, 1337, 1338, 5, 63, 0, 0, 1338, 211, 1, 0, 0, 0, 1339, 1344, 3, 230, 115, 0, 1340, 1344, 5, 35, 0, 0, 1341, 1344, 5, 38, 0, 0, 1342, 1344, 5, 18, 0, 0, 1343, 1339, 1, 0, 0, 0, 1343, 1340, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1343, 1342, 1, 0, 0, 0, 1344, 213, 1, 0, 0, 0, 1345, 1347, 3, 216, 108, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1350, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1348, 1, 0, 0, 0, 1351, 1352, 3, 144, 72, 0, 1352, 1353, 3, 168, 84, 0, 1353, 215, 1, 0, 0, 0, 1354, 1361, 3, 230, 115, 0, 1355, 1361, 5, 35, 0, 0, 1356, 1361, 5, 1, 0, 0, 1357, 1361, 5, 12, 0, 0, 1358, 1361, 5, 38, 0, 0, 1359, 1361, 5, 39, 0, 0, 1360, 1354, 1, 0, 0, 0, 1360, 1355, 1, 0, 0, 0, 1360, 1356, 1, 0, 0, 0, 1360, 1357, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1364, 3, 202, 101, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1367, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1365, 1, 0, 0, 0, 1368, 1369, 5, 103, 0, 0, 1369, 1370, 5, 28, 0, 0, 1370, 1371, 5, 102, 0, 0, 1371, 1372, 3, 220, 110, 0, 1372, 219, 1, 0, 0, 0, 1373, 1377, 5, 59, 0, 0, 1374, 1376, 3, 222, 111, 0, 1375, 1374, 1, 0, 0, 0, 1376, 1379, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 1, 0, 0, 0, 1379, 1377, 1, 0, 0, 0, 1380, 1381, 5, 60, 0, 0, 1381, 221, 1, 0, 0, 0, 1382, 1388, 3, 224, 112, 0, 1383, 1388, 3, 210, 105, 0, 1384, 1388, 3, 82, 41, 0, 1385, 1388, 3, 198, 99, 0, 1386, 1388, 5, 63, 0, 0, 1387, 1382, 1, 0, 0, 0, 1387, 1383, 1, 0, 0, 0, 1387, 1384, 1, 0, 0, 0, 1387, 1385, 1, 0, 0, 0, 1387, 1386, 1, 0, 0, 0, 1388, 223, 1, 0, 0, 0, 1389, 1391, 3, 226, 113, 0, 1390, 1389, 1, 0, 0, 0, 1391, 1394, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1395, 1, 0, 0, 0, 1394, 1392, 1, 0, 0, 0, 1395, 1396, 3, 116, 58, 0, 1396, 1397, 5, 102, 0, 0, 1397, 1398, 5, 57, 0, 0, 1398, 1400, 5, 58, 0, 0, 1399, 1401, 3, 32, 16, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1403, 1, 0, 0, 0, 1402, 1404, 3, 228, 114, 0, 1403, 1402, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 63, 0, 0, 1406, 225, 1, 0, 0, 0, 1407, 1411, 3, 230, 115, 0, 1408, 1411, 5, 35, 0, 0, 1409, 1411, 5, 1, 0, 0, 1410, 1407, 1, 0, 0, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1409, 1, 0, 0, 0, 1411, 227, 1, 0, 0, 0, 1412, 1413, 5, 12, 0, 0, 1413, 1414, 3, 238, 119, 0, 1414, 229, 1, 0, 0, 0, 1415, 1419, 3, 232, 116, 0, 1416, 1419, 3, 244, 122, 0, 1417, 1419, 3, 246, 123, 0, 1418, 1415, 1, 0, 0, 0, 1418, 1416, 1, 0, 0, 0, 1418, 1417, 1, 0, 0, 0, 1419, 231, 1, 0, 0, 0, 1420, 1421, 5, 103, 0, 0, 1421, 1422, 3, 54, 27, 0, 1422, 1424, 5, 57, 0, 0, 1423, 1425, 3, 234, 117, 0, 1424, 1423, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 5, 58, 0, 0, 1427, 233, 1, 0, 0, 0, 1428, 1433, 3, 236, 118, 0, 1429, 1430, 5, 64, 0, 0, 1430, 1432, 3, 236, 118, 0, 1431, 1429, 1, 0, 0, 0, 1432, 1435, 1, 0, 0, 0, 1433, 1431, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 235, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1436, 1437, 5, 102, 0, 0, 1437, 1438, 5, 66, 0, 0, 1438, 1439, 3, 238, 119, 0, 1439, 237, 1, 0, 0, 0, 1440, 1444, 3, 432, 216, 0, 1441, 1444, 3, 240, 120, 0, 1442, 1444, 3, 230, 115, 0, 1443, 1440, 1, 0, 0, 0, 1443, 1441, 1, 0, 0, 0, 1443, 1442, 1, 0, 0, 0, 1444, 239, 1, 0, 0, 0, 1445, 1447, 5, 59, 0, 0, 1446, 1448, 3, 242, 121, 0, 1447, 1446, 1, 0, 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 1450, 1, 0, 0, 0, 1449, 1451, 5, 64, 0, 0, 1450, 1449, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1453, 5, 60, 0, 0, 1453, 241, 1, 0, 0, 0, 1454, 1459, 3, 238, 119, 0, 1455, 1456, 5, 64, 0, 0, 1456, 1458, 3, 238, 119, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 243, 1, 0, 0, 0, 1461, 1459, 1, 0, 0, 0, 1462, 1463, 5, 103, 0, 0, 1463, 1464, 3, 54, 27, 0, 1464, 245, 1, 0, 0, 0, 1465, 1466, 5, 103, 0, 0, 1466, 1467, 3, 54, 27, 0, 1467, 1468, 5, 57, 0, 0, 1468, 1469, 3, 238, 119, 0, 1469, 1470, 5, 58, 0, 0, 1470, 247, 1, 0, 0, 0, 1471, 1473, 5, 59, 0, 0, 1472, 1474, 3, 250, 125, 0, 1473, 1472, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1476, 1, 0, 0, 0, 1475, 1477, 5, 64, 0, 0, 1476, 1475, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1479, 5, 60, 0, 0, 1479, 249, 1, 0, 0, 0, 1480, 1485, 3, 114, 57, 0, 1481, 1482, 5, 64, 0, 0, 1482, 1484, 3, 114, 57, 0, 1483, 1481, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1483, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 251, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 1490, 5, 59, 0, 0, 1489, 1491, 3, 254, 127, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 5, 60, 0, 0, 1493, 253, 1, 0, 0, 0, 1494, 1498, 3, 256, 128, 0, 1495, 1497, 3, 256, 128, 0, 1496, 1495, 1, 0, 0, 0, 1497, 1500, 1, 0, 0, 0, 1498, 1496, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 255, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1505, 3, 258, 129, 0, 1502, 1505, 3, 82, 41, 0, 1503, 1505, 3, 262, 131, 0, 1504, 1501, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1504, 1503, 1, 0, 0, 0, 1505, 257, 1, 0, 0, 0, 1506, 1507, 3, 260, 130, 0, 1507, 1508, 5, 63, 0, 0, 1508, 259, 1, 0, 0, 0, 1509, 1511, 3, 156, 78, 0, 1510, 1509, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1510, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1515, 1, 0, 0, 0, 1514, 1512, 1, 0, 0, 0, 1515, 1516, 3, 116, 58, 0, 1516, 1517, 3, 108, 54, 0, 1517, 261, 1, 0, 0, 0, 1518, 1525, 3, 266, 133, 0, 1519, 1525, 3, 270, 135, 0, 1520, 1525, 3, 278, 139, 0, 1521, 1525, 3, 280, 140, 0, 1522, 1525, 3, 298, 149, 0, 1523, 1525, 3, 304, 152, 0, 1524, 1518, 1, 0, 0, 0, 1524, 1519, 1, 0, 0, 0, 1524, 1520, 1, 0, 0, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1522, 1, 0, 0, 0, 1524, 1523, 1, 0, 0, 0, 1525, 263, 1, 0, 0, 0, 1526, 1532, 3, 266, 133, 0, 1527, 1532, 3, 272, 136, 0, 1528, 1532, 3, 282, 141, 0, 1529, 1532, 3, 300, 150, 0, 1530, 1532, 3, 306, 153, 0, 1531, 1526, 1, 0, 0, 0, 1531, 1527, 1, 0, 0, 0, 1531, 1528, 1, 0, 0, 0, 1531, 1529, 1, 0, 0, 0, 1531, 1530, 1, 0, 0, 0, 1532, 265, 1, 0, 0, 0, 1533, 1546, 3, 252, 126, 0, 1534, 1546, 3, 268, 134, 0, 1535, 1546, 3, 274, 137, 0, 1536, 1546, 3, 284, 142, 0, 1537, 1546, 3, 286, 143, 0, 1538, 1546, 3, 302, 151, 0, 1539, 1546, 3, 322, 161, 0, 1540, 1546, 3, 324, 162, 0, 1541, 1546, 3, 326, 163, 0, 1542, 1546, 3, 330, 165, 0, 1543, 1546, 3, 328, 164, 0, 1544, 1546, 3, 332, 166, 0, 1545, 1533, 1, 0, 0, 0, 1545, 1534, 1, 0, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1536, 1, 0, 0, 0, 1545, 1537, 1, 0, 0, 0, 1545, 1538, 1, 0, 0, 0, 1545, 1539, 1, 0, 0, 0, 1545, 1540, 1, 0, 0, 0, 1545, 1541, 1, 0, 0, 0, 1545, 1542, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1546, 267, 1, 0, 0, 0, 1547, 1548, 5, 63, 0, 0, 1548, 269, 1, 0, 0, 0, 1549, 1550, 5, 102, 0, 0, 1550, 1551, 5, 72, 0, 0, 1551, 1552, 3, 262, 131, 0, 1552, 271, 1, 0, 0, 0, 1553, 1554, 5, 102, 0, 0, 1554, 1555, 5, 72, 0, 0, 1555, 1556, 3, 264, 132, 0, 1556, 273, 1, 0, 0, 0, 1557, 1558, 3, 276, 138, 0, 1558, 1559, 5, 63, 0, 0, 1559, 275, 1, 0, 0, 0, 1560, 1568, 3, 426, 213, 0, 1561, 1568, 3, 456, 228, 0, 1562, 1568, 3, 458, 229, 0, 1563, 1568, 3, 464, 232, 0, 1564, 1568, 3, 468, 234, 0, 1565, 1568, 3, 392, 196, 0, 1566, 1568, 3, 372, 186, 0, 1567, 1560, 1, 0, 0, 0, 1567, 1561, 1, 0, 0, 0, 1567, 1562, 1, 0, 0, 0, 1567, 1563, 1, 0, 0, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1566, 1, 0, 0, 0, 1568, 277, 1, 0, 0, 0, 1569, 1570, 5, 22, 0, 0, 1570, 1571, 5, 57, 0, 0, 1571, 1572, 3, 414, 207, 0, 1572, 1573, 5, 58, 0, 0, 1573, 1574, 3, 262, 131, 0, 1574, 279, 1, 0, 0, 0, 1575, 1576, 5, 22, 0, 0, 1576, 1577, 5, 57, 0, 0, 1577, 1578, 3, 414, 207, 0, 1578, 1579, 5, 58, 0, 0, 1579, 1580, 3, 264, 132, 0, 1580, 1581, 5, 15, 0, 0, 1581, 1582, 3, 262, 131, 0, 1582, 281, 1, 0, 0, 0, 1583, 1584, 5, 22, 0, 0, 1584, 1585, 5, 57, 0, 0, 1585, 1586, 3, 414, 207, 0, 1586, 1587, 5, 58, 0, 0, 1587, 1588, 3, 264, 132, 0, 1588, 1589, 5, 15, 0, 0, 1589, 1590, 3, 264, 132, 0, 1590, 283, 1, 0, 0, 0, 1591, 1592, 5, 2, 0, 0, 1592, 1593, 3, 414, 207, 0, 1593, 1594, 5, 63, 0, 0, 1594, 1602, 1, 0, 0, 0, 1595, 1596, 5, 2, 0, 0, 1596, 1597, 3, 414, 207, 0, 1597, 1598, 5, 72, 0, 0, 1598, 1599, 3, 414, 207, 0, 1599, 1600, 5, 63, 0, 0, 1600, 1602, 1, 0, 0, 0, 1601, 1591, 1, 0, 0, 0, 1601, 1595, 1, 0, 0, 0, 1602, 285, 1, 0, 0, 0, 1603, 1604, 5, 41, 0, 0, 1604, 1605, 5, 57, 0, 0, 1605, 1606, 3, 414, 207, 0, 1606, 1607, 5, 58, 0, 0, 1607, 1608, 3, 288, 144, 0, 1608, 287, 1, 0, 0, 0, 1609, 1613, 5, 59, 0, 0, 1610, 1612, 3, 290, 145, 0, 1611, 1610, 1, 0, 0, 0, 1612, 1615, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1613, 1614, 1, 0, 0, 0, 1614, 1619, 1, 0, 0, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1618, 3, 294, 147, 0, 1617, 1616, 1, 0, 0, 0, 1618, 1621, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1623, 5, 60, 0, 0, 1623, 289, 1, 0, 0, 0, 1624, 1625, 3, 292, 146, 0, 1625, 1626, 3, 254, 127, 0, 1626, 291, 1, 0, 0, 0, 1627, 1631, 3, 294, 147, 0, 1628, 1630, 3, 294, 147, 0, 1629, 1628, 1, 0, 0, 0, 1630, 1633, 1, 0, 0, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 293, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1634, 1635, 5, 6, 0, 0, 1635, 1636, 3, 412, 206, 0, 1636, 1637, 5, 72, 0, 0, 1637, 1645, 1, 0, 0, 0, 1638, 1639, 5, 6, 0, 0, 1639, 1640, 3, 296, 148, 0, 1640, 1641, 5, 72, 0, 0, 1641, 1645, 1, 0, 0, 0, 1642, 1643, 5, 12, 0, 0, 1643, 1645, 5, 72, 0, 0, 1644, 1634, 1, 0, 0, 0, 1644, 1638, 1, 0, 0, 0, 1644, 1642, 1, 0, 0, 0, 1645, 295, 1, 0, 0, 0, 1646, 1647, 5, 102, 0, 0, 1647, 297, 1, 0, 0, 0, 1648, 1649, 5, 50, 0, 0, 1649, 1650, 5, 57, 0, 0, 1650, 1651, 3, 414, 207, 0, 1651, 1652, 5, 58, 0, 0, 1652, 1653, 3, 262, 131, 0, 1653, 299, 1, 0, 0, 0, 1654, 1655, 5, 50, 0, 0, 1655, 1656, 5, 57, 0, 0, 1656, 1657, 3, 414, 207, 0, 1657, 1658, 5, 58, 0, 0, 1658, 1659, 3, 264, 132, 0, 1659, 301, 1, 0, 0, 0, 1660, 1661, 5, 13, 0, 0, 1661, 1662, 3, 262, 131, 0, 1662, 1663, 5, 50, 0, 0, 1663, 1664, 5, 57, 0, 0, 1664, 1665, 3, 414, 207, 0, 1665, 1666, 5, 58, 0, 0, 1666, 1667, 5, 63, 0, 0, 1667, 303, 1, 0, 0, 0, 1668, 1671, 3, 308, 154, 0, 1669, 1671, 3, 318, 159, 0, 1670, 1668, 1, 0, 0, 0, 1670, 1669, 1, 0, 0, 0, 1671, 305, 1, 0, 0, 0, 1672, 1675, 3, 310, 155, 0, 1673, 1675, 3, 320, 160, 0, 1674, 1672, 1, 0, 0, 0, 1674, 1673, 1, 0, 0, 0, 1675, 307, 1, 0, 0, 0, 1676, 1677, 5, 21, 0, 0, 1677, 1679, 5, 57, 0, 0, 1678, 1680, 3, 312, 156, 0, 1679, 1678, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1683, 5, 63, 0, 0, 1682, 1684, 3, 414, 207, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 5, 63, 0, 0, 1686, 1688, 3, 314, 157, 0, 1687, 1686, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1690, 5, 58, 0, 0, 1690, 1691, 3, 262, 131, 0, 1691, 309, 1, 0, 0, 0, 1692, 1693, 5, 21, 0, 0, 1693, 1695, 5, 57, 0, 0, 1694, 1696, 3, 312, 156, 0, 1695, 1694, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1699, 5, 63, 0, 0, 1698, 1700, 3, 414, 207, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1703, 5, 63, 0, 0, 1702, 1704, 3, 314, 157, 0, 1703, 1702, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1705, 1, 0, 0, 0, 1705, 1706, 5, 58, 0, 0, 1706, 1707, 3, 264, 132, 0, 1707, 311, 1, 0, 0, 0, 1708, 1711, 3, 316, 158, 0, 1709, 1711, 3, 260, 130, 0, 1710, 1708, 1, 0, 0, 0, 1710, 1709, 1, 0, 0, 0, 1711, 313, 1, 0, 0, 0, 1712, 1713, 3, 316, 158, 0, 1713, 315, 1, 0, 0, 0, 1714, 1719, 3, 276, 138, 0, 1715, 1716, 5, 64, 0, 0, 1716, 1718, 3, 276, 138, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1721, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 317, 1, 0, 0, 0, 1721, 1719, 1, 0, 0, 0, 1722, 1723, 5, 21, 0, 0, 1723, 1727, 5, 57, 0, 0, 1724, 1726, 3, 156, 78, 0, 1725, 1724, 1, 0, 0, 0, 1726, 1729, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1728, 1730, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1730, 1731, 3, 116, 58, 0, 1731, 1732, 3, 112, 56, 0, 1732, 1733, 5, 72, 0, 0, 1733, 1734, 3, 414, 207, 0, 1734, 1735, 5, 58, 0, 0, 1735, 1736, 3, 262, 131, 0, 1736, 319, 1, 0, 0, 0, 1737, 1738, 5, 21, 0, 0, 1738, 1742, 5, 57, 0, 0, 1739, 1741, 3, 156, 78, 0, 1740, 1739, 1, 0, 0, 0, 1741, 1744, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1742, 1, 0, 0, 0, 1745, 1746, 3, 116, 58, 0, 1746, 1747, 3, 112, 56, 0, 1747, 1748, 5, 72, 0, 0, 1748, 1749, 3, 414, 207, 0, 1749, 1750, 5, 58, 0, 0, 1750, 1751, 3, 264, 132, 0, 1751, 321, 1, 0, 0, 0, 1752, 1754, 5, 4, 0, 0, 1753, 1755, 5, 102, 0, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 5, 63, 0, 0, 1757, 323, 1, 0, 0, 0, 1758, 1760, 5, 11, 0, 0, 1759, 1761, 5, 102, 0, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 5, 63, 0, 0, 1763, 325, 1, 0, 0, 0, 1764, 1766, 5, 36, 0, 0, 1765, 1767, 3, 414, 207, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 5, 63, 0, 0, 1769, 327, 1, 0, 0, 0, 1770, 1771, 5, 44, 0, 0, 1771, 1772, 3, 414, 207, 0, 1772, 1773, 5, 63, 0, 0, 1773, 329, 1, 0, 0, 0, 1774, 1775, 5, 42, 0, 0, 1775, 1776, 5, 57, 0, 0, 1776, 1777, 3, 414, 207, 0, 1777, 1778, 5, 58, 0, 0, 1778, 1779, 3, 252, 126, 0, 1779, 331, 1, 0, 0, 0, 1780, 1781, 5, 47, 0, 0, 1781, 1782, 3, 252, 126, 0, 1782, 1783, 3, 334, 167, 0, 1783, 1793, 1, 0, 0, 0, 1784, 1785, 5, 47, 0, 0, 1785, 1787, 3, 252, 126, 0, 1786, 1788, 3, 334, 167, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 3, 342, 171, 0, 1790, 1793, 1, 0, 0, 0, 1791, 1793, 3, 344, 172, 0, 1792, 1780, 1, 0, 0, 0, 1792, 1784, 1, 0, 0, 0, 1792, 1791, 1, 0, 0, 0, 1793, 333, 1, 0, 0, 0, 1794, 1798, 3, 336, 168, 0, 1795, 1797, 3, 336, 168, 0, 1796, 1795, 1, 0, 0, 0, 1797, 1800, 1, 0, 0, 0, 1798, 1796, 1, 0, 0, 0, 1798, 1799, 1, 0, 0, 0, 1799, 335, 1, 0, 0, 0, 1800, 1798, 1, 0, 0, 0, 1801, 1802, 5, 7, 0, 0, 1802, 1803, 5, 57, 0, 0, 1803, 1804, 3, 338, 169, 0, 1804, 1805, 5, 58, 0, 0, 1805, 1806, 3, 252, 126, 0, 1806, 337, 1, 0, 0, 0, 1807, 1809, 3, 156, 78, 0, 1808, 1807, 1, 0, 0, 0, 1809, 1812, 1, 0, 0, 0, 1810, 1808, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 1813, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1813, 1814, 3, 340, 170, 0, 1814, 1815, 3, 112, 56, 0, 1815, 339, 1, 0, 0, 0, 1816, 1821, 3, 124, 62, 0, 1817, 1818, 5, 86, 0, 0, 1818, 1820, 3, 16, 8, 0, 1819, 1817, 1, 0, 0, 0, 1820, 1823, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 341, 1, 0, 0, 0, 1823, 1821, 1, 0, 0, 0, 1824, 1825, 5, 19, 0, 0, 1825, 1826, 3, 252, 126, 0, 1826, 343, 1, 0, 0, 0, 1827, 1828, 5, 47, 0, 0, 1828, 1829, 3, 346, 173, 0, 1829, 1831, 3, 252, 126, 0, 1830, 1832, 3, 334, 167, 0, 1831, 1830, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1834, 1, 0, 0, 0, 1833, 1835, 3, 342, 171, 0, 1834, 1833, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 345, 1, 0, 0, 0, 1836, 1837, 5, 57, 0, 0, 1837, 1839, 3, 348, 174, 0, 1838, 1840, 5, 63, 0, 0, 1839, 1838, 1, 0, 0, 0, 1839, 1840, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1842, 5, 58, 0, 0, 1842, 347, 1, 0, 0, 0, 1843, 1848, 3, 350, 175, 0, 1844, 1845, 5, 63, 0, 0, 1845, 1847, 3, 350, 175, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 349, 1, 0, 0, 0, 1850, 1848, 1, 0, 0, 0, 1851, 1853, 3, 156, 78, 0, 1852, 1851, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1857, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1858, 3, 116, 58, 0, 1858, 1859, 3, 112, 56, 0, 1859, 1860, 5, 66, 0, 0, 1860, 1861, 3, 414, 207, 0, 1861, 351, 1, 0, 0, 0, 1862, 1865, 3, 366, 183, 0, 1863, 1865, 3, 406, 203, 0, 1864, 1862, 1, 0, 0, 0, 1864, 1863, 1, 0, 0, 0, 1865, 1869, 1, 0, 0, 0, 1866, 1868, 3, 360, 180, 0, 1867, 1866, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1867, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 353, 1, 0, 0, 0, 1871, 1869, 1, 0, 0, 0, 1872, 1902, 3, 0, 0, 0, 1873, 1878, 3, 54, 27, 0, 1874, 1875, 5, 61, 0, 0, 1875, 1877, 5, 62, 0, 0, 1876, 1874, 1, 0, 0, 0, 1877, 1880, 1, 0, 0, 0, 1878, 1876, 1, 0, 0, 0, 1878, 1879, 1, 0, 0, 0, 1879, 1881, 1, 0, 0, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1882, 5, 65, 0, 0, 1882, 1883, 5, 9, 0, 0, 1883, 1902, 1, 0, 0, 0, 1884, 1885, 5, 48, 0, 0, 1885, 1886, 5, 65, 0, 0, 1886, 1902, 5, 9, 0, 0, 1887, 1902, 5, 43, 0, 0, 1888, 1889, 3, 54, 27, 0, 1889, 1890, 5, 65, 0, 0, 1890, 1891, 5, 43, 0, 0, 1891, 1902, 1, 0, 0, 0, 1892, 1893, 5, 57, 0, 0, 1893, 1894, 3, 414, 207, 0, 1894, 1895, 5, 58, 0, 0, 1895, 1902, 1, 0, 0, 0, 1896, 1902, 3, 372, 186, 0, 1897, 1902, 3, 380, 190, 0, 1898, 1902, 3, 386, 193, 0, 1899, 1902, 3, 392, 196, 0, 1900, 1902, 3, 400, 200, 0, 1901, 1872, 1, 0, 0, 0, 1901, 1873, 1, 0, 0, 0, 1901, 1884, 1, 0, 0, 0, 1901, 1887, 1, 0, 0, 0, 1901, 1888, 1, 0, 0, 0, 1901, 1892, 1, 0, 0, 0, 1901, 1896, 1, 0, 0, 0, 1901, 1897, 1, 0, 0, 0, 1901, 1898, 1, 0, 0, 0, 1901, 1899, 1, 0, 0, 0, 1901, 1900, 1, 0, 0, 0, 1902, 355, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 357, 1, 0, 0, 0, 1905, 1934, 3, 0, 0, 0, 1906, 1911, 3, 54, 27, 0, 1907, 1908, 5, 61, 0, 0, 1908, 1910, 5, 62, 0, 0, 1909, 1907, 1, 0, 0, 0, 1910, 1913, 1, 0, 0, 0, 1911, 1909, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 1, 0, 0, 0, 1913, 1911, 1, 0, 0, 0, 1914, 1915, 5, 65, 0, 0, 1915, 1916, 5, 9, 0, 0, 1916, 1934, 1, 0, 0, 0, 1917, 1918, 5, 48, 0, 0, 1918, 1919, 5, 65, 0, 0, 1919, 1934, 5, 9, 0, 0, 1920, 1934, 5, 43, 0, 0, 1921, 1922, 3, 54, 27, 0, 1922, 1923, 5, 65, 0, 0, 1923, 1924, 5, 43, 0, 0, 1924, 1934, 1, 0, 0, 0, 1925, 1926, 5, 57, 0, 0, 1926, 1927, 3, 414, 207, 0, 1927, 1928, 5, 58, 0, 0, 1928, 1934, 1, 0, 0, 0, 1929, 1934, 3, 372, 186, 0, 1930, 1934, 3, 380, 190, 0, 1931, 1934, 3, 392, 196, 0, 1932, 1934, 3, 400, 200, 0, 1933, 1905, 1, 0, 0, 0, 1933, 1906, 1, 0, 0, 0, 1933, 1917, 1, 0, 0, 0, 1933, 1920, 1, 0, 0, 0, 1933, 1921, 1, 0, 0, 0, 1933, 1925, 1, 0, 0, 0, 1933, 1929, 1, 0, 0, 0, 1933, 1930, 1, 0, 0, 0, 1933, 1931, 1, 0, 0, 0, 1933, 1932, 1, 0, 0, 0, 1934, 359, 1, 0, 0, 0, 1935, 1941, 3, 374, 187, 0, 1936, 1941, 3, 382, 191, 0, 1937, 1941, 3, 388, 194, 0, 1938, 1941, 3, 394, 197, 0, 1939, 1941, 3, 402, 201, 0, 1940, 1935, 1, 0, 0, 0, 1940, 1936, 1, 0, 0, 0, 1940, 1937, 1, 0, 0, 0, 1940, 1938, 1, 0, 0, 0, 1940, 1939, 1, 0, 0, 0, 1941, 361, 1, 0, 0, 0, 1942, 1943, 1, 0, 0, 0, 1943, 363, 1, 0, 0, 0, 1944, 1949, 3, 374, 187, 0, 1945, 1949, 3, 382, 191, 0, 1946, 1949, 3, 394, 197, 0, 1947, 1949, 3, 402, 201, 0, 1948, 1944, 1, 0, 0, 0, 1948, 1945, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1947, 1, 0, 0, 0, 1949, 365, 1, 0, 0, 0, 1950, 1991, 3, 0, 0, 0, 1951, 1956, 3, 54, 27, 0, 1952, 1953, 5, 61, 0, 0, 1953, 1955, 5, 62, 0, 0, 1954, 1952, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1959, 1, 0, 0, 0, 1958, 1956, 1, 0, 0, 0, 1959, 1960, 5, 65, 0, 0, 1960, 1961, 5, 9, 0, 0, 1961, 1991, 1, 0, 0, 0, 1962, 1967, 3, 118, 59, 0, 1963, 1964, 5, 61, 0, 0, 1964, 1966, 5, 62, 0, 0, 1965, 1963, 1, 0, 0, 0, 1966, 1969, 1, 0, 0, 0, 1967, 1965, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1970, 1, 0, 0, 0, 1969, 1967, 1, 0, 0, 0, 1970, 1971, 5, 65, 0, 0, 1971, 1972, 5, 9, 0, 0, 1972, 1991, 1, 0, 0, 0, 1973, 1974, 5, 48, 0, 0, 1974, 1975, 5, 65, 0, 0, 1975, 1991, 5, 9, 0, 0, 1976, 1991, 5, 43, 0, 0, 1977, 1978, 3, 54, 27, 0, 1978, 1979, 5, 65, 0, 0, 1979, 1980, 5, 43, 0, 0, 1980, 1991, 1, 0, 0, 0, 1981, 1982, 5, 57, 0, 0, 1982, 1983, 3, 414, 207, 0, 1983, 1984, 5, 58, 0, 0, 1984, 1991, 1, 0, 0, 0, 1985, 1991, 3, 376, 188, 0, 1986, 1991, 3, 384, 192, 0, 1987, 1991, 3, 390, 195, 0, 1988, 1991, 3, 396, 198, 0, 1989, 1991, 3, 404, 202, 0, 1990, 1950, 1, 0, 0, 0, 1990, 1951, 1, 0, 0, 0, 1990, 1962, 1, 0, 0, 0, 1990, 1973, 1, 0, 0, 0, 1990, 1976, 1, 0, 0, 0, 1990, 1977, 1, 0, 0, 0, 1990, 1981, 1, 0, 0, 0, 1990, 1985, 1, 0, 0, 0, 1990, 1986, 1, 0, 0, 0, 1990, 1987, 1, 0, 0, 0, 1990, 1988, 1, 0, 0, 0, 1990, 1989, 1, 0, 0, 0, 1991, 367, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 369, 1, 0, 0, 0, 1994, 2034, 3, 0, 0, 0, 1995, 2000, 3, 54, 27, 0, 1996, 1997, 5, 61, 0, 0, 1997, 1999, 5, 62, 0, 0, 1998, 1996, 1, 0, 0, 0, 1999, 2002, 1, 0, 0, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2003, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2003, 2004, 5, 65, 0, 0, 2004, 2005, 5, 9, 0, 0, 2005, 2034, 1, 0, 0, 0, 2006, 2011, 3, 118, 59, 0, 2007, 2008, 5, 61, 0, 0, 2008, 2010, 5, 62, 0, 0, 2009, 2007, 1, 0, 0, 0, 2010, 2013, 1, 0, 0, 0, 2011, 2009, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2014, 1, 0, 0, 0, 2013, 2011, 1, 0, 0, 0, 2014, 2015, 5, 65, 0, 0, 2015, 2016, 5, 9, 0, 0, 2016, 2034, 1, 0, 0, 0, 2017, 2018, 5, 48, 0, 0, 2018, 2019, 5, 65, 0, 0, 2019, 2034, 5, 9, 0, 0, 2020, 2034, 5, 43, 0, 0, 2021, 2022, 3, 54, 27, 0, 2022, 2023, 5, 65, 0, 0, 2023, 2024, 5, 43, 0, 0, 2024, 2034, 1, 0, 0, 0, 2025, 2026, 5, 57, 0, 0, 2026, 2027, 3, 414, 207, 0, 2027, 2028, 5, 58, 0, 0, 2028, 2034, 1, 0, 0, 0, 2029, 2034, 3, 376, 188, 0, 2030, 2034, 3, 384, 192, 0, 2031, 2034, 3, 396, 198, 0, 2032, 2034, 3, 404, 202, 0, 2033, 1994, 1, 0, 0, 0, 2033, 1995, 1, 0, 0, 0, 2033, 2006, 1, 0, 0, 0, 2033, 2017, 1, 0, 0, 0, 2033, 2020, 1, 0, 0, 0, 2033, 2021, 1, 0, 0, 0, 2033, 2025, 1, 0, 0, 0, 2033, 2029, 1, 0, 0, 0, 2033, 2030, 1, 0, 0, 0, 2033, 2031, 1, 0, 0, 0, 2033, 2032, 1, 0, 0, 0, 2034, 371, 1, 0, 0, 0, 2035, 2037, 5, 31, 0, 0, 2036, 2038, 3, 42, 21, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2042, 1, 0, 0, 0, 2039, 2041, 3, 230, 115, 0, 2040, 2039, 1, 0, 0, 0, 2041, 2044, 1, 0, 0, 0, 2042, 2040, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2045, 1, 0, 0, 0, 2044, 2042, 1, 0, 0, 0, 2045, 2056, 5, 102, 0, 0, 2046, 2050, 5, 65, 0, 0, 2047, 2049, 3, 230, 115, 0, 2048, 2047, 1, 0, 0, 0, 2049, 2052, 1, 0, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2051, 1, 0, 0, 0, 2051, 2053, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, 2053, 2055, 5, 102, 0, 0, 2054, 2046, 1, 0, 0, 0, 2055, 2058, 1, 0, 0, 0, 2056, 2054, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2060, 1, 0, 0, 0, 2058, 2056, 1, 0, 0, 0, 2059, 2061, 3, 378, 189, 0, 2060, 2059, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2064, 5, 57, 0, 0, 2063, 2065, 3, 398, 199, 0, 2064, 2063, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2066, 1, 0, 0, 0, 2066, 2068, 5, 58, 0, 0, 2067, 2069, 3, 98, 49, 0, 2068, 2067, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 2119, 1, 0, 0, 0, 2070, 2071, 3, 58, 29, 0, 2071, 2072, 5, 65, 0, 0, 2072, 2074, 5, 31, 0, 0, 2073, 2075, 3, 42, 21, 0, 2074, 2073, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2079, 1, 0, 0, 0, 2076, 2078, 3, 230, 115, 0, 2077, 2076, 1, 0, 0, 0, 2078, 2081, 1, 0, 0, 0, 2079, 2077, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2082, 1, 0, 0, 0, 2081, 2079, 1, 0, 0, 0, 2082, 2084, 5, 102, 0, 0, 2083, 2085, 3, 378, 189, 0, 2084, 2083, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2088, 5, 57, 0, 0, 2087, 2089, 3, 398, 199, 0, 2088, 2087, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2090, 1, 0, 0, 0, 2090, 2092, 5, 58, 0, 0, 2091, 2093, 3, 98, 49, 0, 2092, 2091, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2119, 1, 0, 0, 0, 2094, 2095, 3, 352, 176, 0, 2095, 2096, 5, 65, 0, 0, 2096, 2098, 5, 31, 0, 0, 2097, 2099, 3, 42, 21, 0, 2098, 2097, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2103, 1, 0, 0, 0, 2100, 2102, 3, 230, 115, 0, 2101, 2100, 1, 0, 0, 0, 2102, 2105, 1, 0, 0, 0, 2103, 2101, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2106, 1, 0, 0, 0, 2105, 2103, 1, 0, 0, 0, 2106, 2108, 5, 102, 0, 0, 2107, 2109, 3, 378, 189, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 5, 57, 0, 0, 2111, 2113, 3, 398, 199, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 5, 58, 0, 0, 2115, 2117, 3, 98, 49, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2119, 1, 0, 0, 0, 2118, 2035, 1, 0, 0, 0, 2118, 2070, 1, 0, 0, 0, 2118, 2094, 1, 0, 0, 0, 2119, 373, 1, 0, 0, 0, 2120, 2121, 5, 65, 0, 0, 2121, 2123, 5, 31, 0, 0, 2122, 2124, 3, 42, 21, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2128, 1, 0, 0, 0, 2125, 2127, 3, 230, 115, 0, 2126, 2125, 1, 0, 0, 0, 2127, 2130, 1, 0, 0, 0, 2128, 2126, 1, 0, 0, 0, 2128, 2129, 1, 0, 0, 0, 2129, 2131, 1, 0, 0, 0, 2130, 2128, 1, 0, 0, 0, 2131, 2133, 5, 102, 0, 0, 2132, 2134, 3, 378, 189, 0, 2133, 2132, 1, 0, 0, 0, 2133, 2134, 1, 0, 0, 0, 2134, 2135, 1, 0, 0, 0, 2135, 2137, 5, 57, 0, 0, 2136, 2138, 3, 398, 199, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 5, 58, 0, 0, 2140, 2142, 3, 98, 49, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 375, 1, 0, 0, 0, 2143, 2145, 5, 31, 0, 0, 2144, 2146, 3, 42, 21, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2150, 1, 0, 0, 0, 2147, 2149, 3, 230, 115, 0, 2148, 2147, 1, 0, 0, 0, 2149, 2152, 1, 0, 0, 0, 2150, 2148, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2153, 1, 0, 0, 0, 2152, 2150, 1, 0, 0, 0, 2153, 2164, 5, 102, 0, 0, 2154, 2158, 5, 65, 0, 0, 2155, 2157, 3, 230, 115, 0, 2156, 2155, 1, 0, 0, 0, 2157, 2160, 1, 0, 0, 0, 2158, 2156, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2161, 1, 0, 0, 0, 2160, 2158, 1, 0, 0, 0, 2161, 2163, 5, 102, 0, 0, 2162, 2154, 1, 0, 0, 0, 2163, 2166, 1, 0, 0, 0, 2164, 2162, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2168, 1, 0, 0, 0, 2166, 2164, 1, 0, 0, 0, 2167, 2169, 3, 378, 189, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 5, 57, 0, 0, 2171, 2173, 3, 398, 199, 0, 2172, 2171, 1, 0, 0, 0, 2172, 2173, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2176, 5, 58, 0, 0, 2175, 2177, 3, 98, 49, 0, 2176, 2175, 1, 0, 0, 0, 2176, 2177, 1, 0, 0, 0, 2177, 2203, 1, 0, 0, 0, 2178, 2179, 3, 58, 29, 0, 2179, 2180, 5, 65, 0, 0, 2180, 2182, 5, 31, 0, 0, 2181, 2183, 3, 42, 21, 0, 2182, 2181, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2187, 1, 0, 0, 0, 2184, 2186, 3, 230, 115, 0, 2185, 2184, 1, 0, 0, 0, 2186, 2189, 1, 0, 0, 0, 2187, 2185, 1, 0, 0, 0, 2187, 2188, 1, 0, 0, 0, 2188, 2190, 1, 0, 0, 0, 2189, 2187, 1, 0, 0, 0, 2190, 2192, 5, 102, 0, 0, 2191, 2193, 3, 378, 189, 0, 2192, 2191, 1, 0, 0, 0, 2192, 2193, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2196, 5, 57, 0, 0, 2195, 2197, 3, 398, 199, 0, 2196, 2195, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 1, 0, 0, 0, 2198, 2200, 5, 58, 0, 0, 2199, 2201, 3, 98, 49, 0, 2200, 2199, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2203, 1, 0, 0, 0, 2202, 2143, 1, 0, 0, 0, 2202, 2178, 1, 0, 0, 0, 2203, 377, 1, 0, 0, 0, 2204, 2208, 3, 42, 21, 0, 2205, 2206, 5, 68, 0, 0, 2206, 2208, 5, 67, 0, 0, 2207, 2204, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 379, 1, 0, 0, 0, 2209, 2210, 3, 352, 176, 0, 2210, 2211, 5, 65, 0, 0, 2211, 2212, 5, 102, 0, 0, 2212, 2223, 1, 0, 0, 0, 2213, 2214, 5, 40, 0, 0, 2214, 2215, 5, 65, 0, 0, 2215, 2223, 5, 102, 0, 0, 2216, 2217, 3, 54, 27, 0, 2217, 2218, 5, 65, 0, 0, 2218, 2219, 5, 40, 0, 0, 2219, 2220, 5, 65, 0, 0, 2220, 2221, 5, 102, 0, 0, 2221, 2223, 1, 0, 0, 0, 2222, 2209, 1, 0, 0, 0, 2222, 2213, 1, 0, 0, 0, 2222, 2216, 1, 0, 0, 0, 2223, 381, 1, 0, 0, 0, 2224, 2225, 5, 65, 0, 0, 2225, 2226, 5, 102, 0, 0, 2226, 383, 1, 0, 0, 0, 2227, 2228, 5, 40, 0, 0, 2228, 2229, 5, 65, 0, 0, 2229, 2237, 5, 102, 0, 0, 2230, 2231, 3, 54, 27, 0, 2231, 2232, 5, 65, 0, 0, 2232, 2233, 5, 40, 0, 0, 2233, 2234, 5, 65, 0, 0, 2234, 2235, 5, 102, 0, 0, 2235, 2237, 1, 0, 0, 0, 2236, 2227, 1, 0, 0, 0, 2236, 2230, 1, 0, 0, 0, 2237, 385, 1, 0, 0, 0, 2238, 2239, 3, 58, 29, 0, 2239, 2240, 5, 61, 0, 0, 2240, 2241, 3, 414, 207, 0, 2241, 2242, 5, 62, 0, 0, 2242, 2249, 1, 0, 0, 0, 2243, 2244, 3, 358, 179, 0, 2244, 2245, 5, 61, 0, 0, 2245, 2246, 3, 414, 207, 0, 2246, 2247, 5, 62, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2238, 1, 0, 0, 0, 2248, 2243, 1, 0, 0, 0, 2249, 2257, 1, 0, 0, 0, 2250, 2251, 3, 356, 178, 0, 2251, 2252, 5, 61, 0, 0, 2252, 2253, 3, 414, 207, 0, 2253, 2254, 5, 62, 0, 0, 2254, 2256, 1, 0, 0, 0, 2255, 2250, 1, 0, 0, 0, 2256, 2259, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 387, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2260, 2261, 3, 364, 182, 0, 2261, 2262, 5, 61, 0, 0, 2262, 2263, 3, 414, 207, 0, 2263, 2264, 5, 62, 0, 0, 2264, 2272, 1, 0, 0, 0, 2265, 2266, 3, 362, 181, 0, 2266, 2267, 5, 61, 0, 0, 2267, 2268, 3, 414, 207, 0, 2268, 2269, 5, 62, 0, 0, 2269, 2271, 1, 0, 0, 0, 2270, 2265, 1, 0, 0, 0, 2271, 2274, 1, 0, 0, 0, 2272, 2270, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 389, 1, 0, 0, 0, 2274, 2272, 1, 0, 0, 0, 2275, 2276, 3, 58, 29, 0, 2276, 2277, 5, 61, 0, 0, 2277, 2278, 3, 414, 207, 0, 2278, 2279, 5, 62, 0, 0, 2279, 2286, 1, 0, 0, 0, 2280, 2281, 3, 370, 185, 0, 2281, 2282, 5, 61, 0, 0, 2282, 2283, 3, 414, 207, 0, 2283, 2284, 5, 62, 0, 0, 2284, 2286, 1, 0, 0, 0, 2285, 2275, 1, 0, 0, 0, 2285, 2280, 1, 0, 0, 0, 2286, 2294, 1, 0, 0, 0, 2287, 2288, 3, 368, 184, 0, 2288, 2289, 5, 61, 0, 0, 2289, 2290, 3, 414, 207, 0, 2290, 2291, 5, 62, 0, 0, 2291, 2293, 1, 0, 0, 0, 2292, 2287, 1, 0, 0, 0, 2293, 2296, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 391, 1, 0, 0, 0, 2296, 2294, 1, 0, 0, 0, 2297, 2298, 3, 60, 30, 0, 2298, 2300, 5, 57, 0, 0, 2299, 2301, 3, 398, 199, 0, 2300, 2299, 1, 0, 0, 0, 2300, 2301, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2303, 5, 58, 0, 0, 2303, 2366, 1, 0, 0, 0, 2304, 2305, 3, 54, 27, 0, 2305, 2307, 5, 65, 0, 0, 2306, 2308, 3, 42, 21, 0, 2307, 2306, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2309, 1, 0, 0, 0, 2309, 2310, 5, 102, 0, 0, 2310, 2312, 5, 57, 0, 0, 2311, 2313, 3, 398, 199, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2315, 5, 58, 0, 0, 2315, 2366, 1, 0, 0, 0, 2316, 2317, 3, 58, 29, 0, 2317, 2319, 5, 65, 0, 0, 2318, 2320, 3, 42, 21, 0, 2319, 2318, 1, 0, 0, 0, 2319, 2320, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2322, 5, 102, 0, 0, 2322, 2324, 5, 57, 0, 0, 2323, 2325, 3, 398, 199, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2327, 5, 58, 0, 0, 2327, 2366, 1, 0, 0, 0, 2328, 2329, 3, 352, 176, 0, 2329, 2331, 5, 65, 0, 0, 2330, 2332, 3, 42, 21, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2334, 5, 102, 0, 0, 2334, 2336, 5, 57, 0, 0, 2335, 2337, 3, 398, 199, 0, 2336, 2335, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 5, 58, 0, 0, 2339, 2366, 1, 0, 0, 0, 2340, 2341, 5, 40, 0, 0, 2341, 2343, 5, 65, 0, 0, 2342, 2344, 3, 42, 21, 0, 2343, 2342, 1, 0, 0, 0, 2343, 2344, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2346, 5, 102, 0, 0, 2346, 2348, 5, 57, 0, 0, 2347, 2349, 3, 398, 199, 0, 2348, 2347, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2366, 5, 58, 0, 0, 2351, 2352, 3, 54, 27, 0, 2352, 2353, 5, 65, 0, 0, 2353, 2354, 5, 40, 0, 0, 2354, 2356, 5, 65, 0, 0, 2355, 2357, 3, 42, 21, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 5, 102, 0, 0, 2359, 2361, 5, 57, 0, 0, 2360, 2362, 3, 398, 199, 0, 2361, 2360, 1, 0, 0, 0, 2361, 2362, 1, 0, 0, 0, 2362, 2363, 1, 0, 0, 0, 2363, 2364, 5, 58, 0, 0, 2364, 2366, 1, 0, 0, 0, 2365, 2297, 1, 0, 0, 0, 2365, 2304, 1, 0, 0, 0, 2365, 2316, 1, 0, 0, 0, 2365, 2328, 1, 0, 0, 0, 2365, 2340, 1, 0, 0, 0, 2365, 2351, 1, 0, 0, 0, 2366, 393, 1, 0, 0, 0, 2367, 2369, 5, 65, 0, 0, 2368, 2370, 3, 42, 21, 0, 2369, 2368, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 5, 102, 0, 0, 2372, 2374, 5, 57, 0, 0, 2373, 2375, 3, 398, 199, 0, 2374, 2373, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 5, 58, 0, 0, 2377, 395, 1, 0, 0, 0, 2378, 2379, 3, 60, 30, 0, 2379, 2381, 5, 57, 0, 0, 2380, 2382, 3, 398, 199, 0, 2381, 2380, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2383, 1, 0, 0, 0, 2383, 2384, 5, 58, 0, 0, 2384, 2435, 1, 0, 0, 0, 2385, 2386, 3, 54, 27, 0, 2386, 2388, 5, 65, 0, 0, 2387, 2389, 3, 42, 21, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2391, 5, 102, 0, 0, 2391, 2393, 5, 57, 0, 0, 2392, 2394, 3, 398, 199, 0, 2393, 2392, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 5, 58, 0, 0, 2396, 2435, 1, 0, 0, 0, 2397, 2398, 3, 58, 29, 0, 2398, 2400, 5, 65, 0, 0, 2399, 2401, 3, 42, 21, 0, 2400, 2399, 1, 0, 0, 0, 2400, 2401, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2403, 5, 102, 0, 0, 2403, 2405, 5, 57, 0, 0, 2404, 2406, 3, 398, 199, 0, 2405, 2404, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2408, 5, 58, 0, 0, 2408, 2435, 1, 0, 0, 0, 2409, 2410, 5, 40, 0, 0, 2410, 2412, 5, 65, 0, 0, 2411, 2413, 3, 42, 21, 0, 2412, 2411, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2415, 5, 102, 0, 0, 2415, 2417, 5, 57, 0, 0, 2416, 2418, 3, 398, 199, 0, 2417, 2416, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2435, 5, 58, 0, 0, 2420, 2421, 3, 54, 27, 0, 2421, 2422, 5, 65, 0, 0, 2422, 2423, 5, 40, 0, 0, 2423, 2425, 5, 65, 0, 0, 2424, 2426, 3, 42, 21, 0, 2425, 2424, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2428, 5, 102, 0, 0, 2428, 2430, 5, 57, 0, 0, 2429, 2431, 3, 398, 199, 0, 2430, 2429, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 5, 58, 0, 0, 2433, 2435, 1, 0, 0, 0, 2434, 2378, 1, 0, 0, 0, 2434, 2385, 1, 0, 0, 0, 2434, 2397, 1, 0, 0, 0, 2434, 2409, 1, 0, 0, 0, 2434, 2420, 1, 0, 0, 0, 2435, 397, 1, 0, 0, 0, 2436, 2441, 3, 414, 207, 0, 2437, 2438, 5, 64, 0, 0, 2438, 2440, 3, 414, 207, 0, 2439, 2437, 1, 0, 0, 0, 2440, 2443, 1, 0, 0, 0, 2441, 2439, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 399, 1, 0, 0, 0, 2443, 2441, 1, 0, 0, 0, 2444, 2445, 3, 58, 29, 0, 2445, 2447, 5, 90, 0, 0, 2446, 2448, 3, 42, 21, 0, 2447, 2446, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2450, 5, 102, 0, 0, 2450, 2492, 1, 0, 0, 0, 2451, 2452, 3, 12, 6, 0, 2452, 2454, 5, 90, 0, 0, 2453, 2455, 3, 42, 21, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 5, 102, 0, 0, 2457, 2492, 1, 0, 0, 0, 2458, 2459, 3, 352, 176, 0, 2459, 2461, 5, 90, 0, 0, 2460, 2462, 3, 42, 21, 0, 2461, 2460, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 5, 102, 0, 0, 2464, 2492, 1, 0, 0, 0, 2465, 2466, 5, 40, 0, 0, 2466, 2468, 5, 90, 0, 0, 2467, 2469, 3, 42, 21, 0, 2468, 2467, 1, 0, 0, 0, 2468, 2469, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2492, 5, 102, 0, 0, 2471, 2472, 3, 54, 27, 0, 2472, 2473, 5, 65, 0, 0, 2473, 2474, 5, 40, 0, 0, 2474, 2476, 5, 90, 0, 0, 2475, 2477, 3, 42, 21, 0, 2476, 2475, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2479, 5, 102, 0, 0, 2479, 2492, 1, 0, 0, 0, 2480, 2481, 3, 16, 8, 0, 2481, 2483, 5, 90, 0, 0, 2482, 2484, 3, 42, 21, 0, 2483, 2482, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2486, 5, 31, 0, 0, 2486, 2492, 1, 0, 0, 0, 2487, 2488, 3, 30, 15, 0, 2488, 2489, 5, 90, 0, 0, 2489, 2490, 5, 31, 0, 0, 2490, 2492, 1, 0, 0, 0, 2491, 2444, 1, 0, 0, 0, 2491, 2451, 1, 0, 0, 0, 2491, 2458, 1, 0, 0, 0, 2491, 2465, 1, 0, 0, 0, 2491, 2471, 1, 0, 0, 0, 2491, 2480, 1, 0, 0, 0, 2491, 2487, 1, 0, 0, 0, 2492, 401, 1, 0, 0, 0, 2493, 2495, 5, 90, 0, 0, 2494, 2496, 3, 42, 21, 0, 2495, 2494, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 2497, 1, 0, 0, 0, 2497, 2498, 5, 102, 0, 0, 2498, 403, 1, 0, 0, 0, 2499, 2500, 3, 58, 29, 0, 2500, 2502, 5, 90, 0, 0, 2501, 2503, 3, 42, 21, 0, 2502, 2501, 1, 0, 0, 0, 2502, 2503, 1, 0, 0, 0, 2503, 2504, 1, 0, 0, 0, 2504, 2505, 5, 102, 0, 0, 2505, 2540, 1, 0, 0, 0, 2506, 2507, 3, 12, 6, 0, 2507, 2509, 5, 90, 0, 0, 2508, 2510, 3, 42, 21, 0, 2509, 2508, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 5, 102, 0, 0, 2512, 2540, 1, 0, 0, 0, 2513, 2514, 5, 40, 0, 0, 2514, 2516, 5, 90, 0, 0, 2515, 2517, 3, 42, 21, 0, 2516, 2515, 1, 0, 0, 0, 2516, 2517, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 2540, 5, 102, 0, 0, 2519, 2520, 3, 54, 27, 0, 2520, 2521, 5, 65, 0, 0, 2521, 2522, 5, 40, 0, 0, 2522, 2524, 5, 90, 0, 0, 2523, 2525, 3, 42, 21, 0, 2524, 2523, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 2527, 5, 102, 0, 0, 2527, 2540, 1, 0, 0, 0, 2528, 2529, 3, 16, 8, 0, 2529, 2531, 5, 90, 0, 0, 2530, 2532, 3, 42, 21, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 31, 0, 0, 2534, 2540, 1, 0, 0, 0, 2535, 2536, 3, 30, 15, 0, 2536, 2537, 5, 90, 0, 0, 2537, 2538, 5, 31, 0, 0, 2538, 2540, 1, 0, 0, 0, 2539, 2499, 1, 0, 0, 0, 2539, 2506, 1, 0, 0, 0, 2539, 2513, 1, 0, 0, 0, 2539, 2519, 1, 0, 0, 0, 2539, 2528, 1, 0, 0, 0, 2539, 2535, 1, 0, 0, 0, 2540, 405, 1, 0, 0, 0, 2541, 2542, 5, 31, 0, 0, 2542, 2543, 3, 4, 2, 0, 2543, 2545, 3, 408, 204, 0, 2544, 2546, 3, 32, 16, 0, 2545, 2544, 1, 0, 0, 0, 2545, 2546, 1, 0, 0, 0, 2546, 2564, 1, 0, 0, 0, 2547, 2548, 5, 31, 0, 0, 2548, 2549, 3, 14, 7, 0, 2549, 2551, 3, 408, 204, 0, 2550, 2552, 3, 32, 16, 0, 2551, 2550, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2564, 1, 0, 0, 0, 2553, 2554, 5, 31, 0, 0, 2554, 2555, 3, 4, 2, 0, 2555, 2556, 3, 32, 16, 0, 2556, 2557, 3, 248, 124, 0, 2557, 2564, 1, 0, 0, 0, 2558, 2559, 5, 31, 0, 0, 2559, 2560, 3, 14, 7, 0, 2560, 2561, 3, 32, 16, 0, 2561, 2562, 3, 248, 124, 0, 2562, 2564, 1, 0, 0, 0, 2563, 2541, 1, 0, 0, 0, 2563, 2547, 1, 0, 0, 0, 2563, 2553, 1, 0, 0, 0, 2563, 2558, 1, 0, 0, 0, 2564, 407, 1, 0, 0, 0, 2565, 2569, 3, 410, 205, 0, 2566, 2568, 3, 410, 205, 0, 2567, 2566, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 409, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2574, 3, 230, 115, 0, 2573, 2572, 1, 0, 0, 0, 2574, 2577, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2578, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2579, 5, 61, 0, 0, 2579, 2580, 3, 414, 207, 0, 2580, 2581, 5, 62, 0, 0, 2581, 411, 1, 0, 0, 0, 2582, 2583, 3, 414, 207, 0, 2583, 413, 1, 0, 0, 0, 2584, 2587, 3, 416, 208, 0, 2585, 2587, 3, 424, 212, 0, 2586, 2584, 1, 0, 0, 0, 2586, 2585, 1, 0, 0, 0, 2587, 415, 1, 0, 0, 0, 2588, 2589, 3, 418, 209, 0, 2589, 2590, 5, 89, 0, 0, 2590, 2591, 3, 422, 211, 0, 2591, 417, 1, 0, 0, 0, 2592, 2603, 5, 102, 0, 0, 2593, 2595, 5, 57, 0, 0, 2594, 2596, 3, 150, 75, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2603, 5, 58, 0, 0, 2598, 2599, 5, 57, 0, 0, 2599, 2600, 3, 420, 210, 0, 2600, 2601, 5, 58, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2592, 1, 0, 0, 0, 2602, 2593, 1, 0, 0, 0, 2602, 2598, 1, 0, 0, 0, 2603, 419, 1, 0, 0, 0, 2604, 2609, 5, 102, 0, 0, 2605, 2606, 5, 64, 0, 0, 2606, 2608, 5, 102, 0, 0, 2607, 2605, 1, 0, 0, 0, 2608, 2611, 1, 0, 0, 0, 2609, 2607, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 421, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2615, 3, 414, 207, 0, 2613, 2615, 3, 252, 126, 0, 2614, 2612, 1, 0, 0, 0, 2614, 2613, 1, 0, 0, 0, 2615, 423, 1, 0, 0, 0, 2616, 2619, 3, 432, 216, 0, 2617, 2619, 3, 426, 213, 0, 2618, 2616, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 425, 1, 0, 0, 0, 2620, 2621, 3, 428, 214, 0, 2621, 2622, 3, 430, 215, 0, 2622, 2623, 3, 414, 207, 0, 2623, 427, 1, 0, 0, 0, 2624, 2628, 3, 58, 29, 0, 2625, 2628, 3, 380, 190, 0, 2626, 2628, 3, 386, 193, 0, 2627, 2624, 1, 0, 0, 0, 2627, 2625, 1, 0, 0, 0, 2627, 2626, 1, 0, 0, 0, 2628, 429, 1, 0, 0, 0, 2629, 2630, 7, 3, 0, 0, 2630, 431, 1, 0, 0, 0, 2631, 2639, 3, 434, 217, 0, 2632, 2633, 3, 434, 217, 0, 2633, 2634, 5, 71, 0, 0, 2634, 2635, 3, 414, 207, 0, 2635, 2636, 5, 72, 0, 0, 2636, 2637, 3, 432, 216, 0, 2637, 2639, 1, 0, 0, 0, 2638, 2631, 1, 0, 0, 0, 2638, 2632, 1, 0, 0, 0, 2639, 433, 1, 0, 0, 0, 2640, 2641, 6, 217, -1, 0, 2641, 2642, 3, 436, 218, 0, 2642, 2648, 1, 0, 0, 0, 2643, 2644, 10, 1, 0, 0, 2644, 2645, 5, 78, 0, 0, 2645, 2647, 3, 436, 218, 0, 2646, 2643, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 435, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2651, 2652, 6, 218, -1, 0, 2652, 2653, 3, 438, 219, 0, 2653, 2659, 1, 0, 0, 0, 2654, 2655, 10, 1, 0, 0, 2655, 2656, 5, 77, 0, 0, 2656, 2658, 3, 438, 219, 0, 2657, 2654, 1, 0, 0, 0, 2658, 2661, 1, 0, 0, 0, 2659, 2657, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 437, 1, 0, 0, 0, 2661, 2659, 1, 0, 0, 0, 2662, 2663, 6, 219, -1, 0, 2663, 2664, 3, 440, 220, 0, 2664, 2670, 1, 0, 0, 0, 2665, 2666, 10, 1, 0, 0, 2666, 2667, 5, 86, 0, 0, 2667, 2669, 3, 440, 220, 0, 2668, 2665, 1, 0, 0, 0, 2669, 2672, 1, 0, 0, 0, 2670, 2668, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 439, 1, 0, 0, 0, 2672, 2670, 1, 0, 0, 0, 2673, 2674, 6, 220, -1, 0, 2674, 2675, 3, 442, 221, 0, 2675, 2681, 1, 0, 0, 0, 2676, 2677, 10, 1, 0, 0, 2677, 2678, 5, 87, 0, 0, 2678, 2680, 3, 442, 221, 0, 2679, 2676, 1, 0, 0, 0, 2680, 2683, 1, 0, 0, 0, 2681, 2679, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 441, 1, 0, 0, 0, 2683, 2681, 1, 0, 0, 0, 2684, 2685, 6, 221, -1, 0, 2685, 2686, 3, 444, 222, 0, 2686, 2692, 1, 0, 0, 0, 2687, 2688, 10, 1, 0, 0, 2688, 2689, 5, 85, 0, 0, 2689, 2691, 3, 444, 222, 0, 2690, 2687, 1, 0, 0, 0, 2691, 2694, 1, 0, 0, 0, 2692, 2690, 1, 0, 0, 0, 2692, 2693, 1, 0, 0, 0, 2693, 443, 1, 0, 0, 0, 2694, 2692, 1, 0, 0, 0, 2695, 2696, 6, 222, -1, 0, 2696, 2697, 3, 446, 223, 0, 2697, 2706, 1, 0, 0, 0, 2698, 2699, 10, 2, 0, 0, 2699, 2700, 5, 73, 0, 0, 2700, 2705, 3, 446, 223, 0, 2701, 2702, 10, 1, 0, 0, 2702, 2703, 5, 76, 0, 0, 2703, 2705, 3, 446, 223, 0, 2704, 2698, 1, 0, 0, 0, 2704, 2701, 1, 0, 0, 0, 2705, 2708, 1, 0, 0, 0, 2706, 2704, 1, 0, 0, 0, 2706, 2707, 1, 0, 0, 0, 2707, 445, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2709, 2710, 6, 223, -1, 0, 2710, 2711, 3, 448, 224, 0, 2711, 2729, 1, 0, 0, 0, 2712, 2713, 10, 5, 0, 0, 2713, 2714, 5, 68, 0, 0, 2714, 2728, 3, 448, 224, 0, 2715, 2716, 10, 4, 0, 0, 2716, 2717, 5, 67, 0, 0, 2717, 2728, 3, 448, 224, 0, 2718, 2719, 10, 3, 0, 0, 2719, 2720, 5, 74, 0, 0, 2720, 2728, 3, 448, 224, 0, 2721, 2722, 10, 2, 0, 0, 2722, 2723, 5, 75, 0, 0, 2723, 2728, 3, 448, 224, 0, 2724, 2725, 10, 1, 0, 0, 2725, 2726, 5, 26, 0, 0, 2726, 2728, 3, 12, 6, 0, 2727, 2712, 1, 0, 0, 0, 2727, 2715, 1, 0, 0, 0, 2727, 2718, 1, 0, 0, 0, 2727, 2721, 1, 0, 0, 0, 2727, 2724, 1, 0, 0, 0, 2728, 2731, 1, 0, 0, 0, 2729, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 447, 1, 0, 0, 0, 2731, 2729, 1, 0, 0, 0, 2732, 2733, 6, 224, -1, 0, 2733, 2734, 3, 450, 225, 0, 2734, 2750, 1, 0, 0, 0, 2735, 2736, 10, 3, 0, 0, 2736, 2737, 5, 68, 0, 0, 2737, 2738, 5, 68, 0, 0, 2738, 2749, 3, 450, 225, 0, 2739, 2740, 10, 2, 0, 0, 2740, 2741, 5, 67, 0, 0, 2741, 2742, 5, 67, 0, 0, 2742, 2749, 3, 450, 225, 0, 2743, 2744, 10, 1, 0, 0, 2744, 2745, 5, 67, 0, 0, 2745, 2746, 5, 67, 0, 0, 2746, 2747, 5, 67, 0, 0, 2747, 2749, 3, 450, 225, 0, 2748, 2735, 1, 0, 0, 0, 2748, 2739, 1, 0, 0, 0, 2748, 2743, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 449, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2754, 6, 225, -1, 0, 2754, 2755, 3, 452, 226, 0, 2755, 2764, 1, 0, 0, 0, 2756, 2757, 10, 2, 0, 0, 2757, 2758, 5, 81, 0, 0, 2758, 2763, 3, 452, 226, 0, 2759, 2760, 10, 1, 0, 0, 2760, 2761, 5, 82, 0, 0, 2761, 2763, 3, 452, 226, 0, 2762, 2756, 1, 0, 0, 0, 2762, 2759, 1, 0, 0, 0, 2763, 2766, 1, 0, 0, 0, 2764, 2762, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 451, 1, 0, 0, 0, 2766, 2764, 1, 0, 0, 0, 2767, 2768, 6, 226, -1, 0, 2768, 2769, 3, 454, 227, 0, 2769, 2781, 1, 0, 0, 0, 2770, 2771, 10, 3, 0, 0, 2771, 2772, 5, 83, 0, 0, 2772, 2780, 3, 454, 227, 0, 2773, 2774, 10, 2, 0, 0, 2774, 2775, 5, 84, 0, 0, 2775, 2780, 3, 454, 227, 0, 2776, 2777, 10, 1, 0, 0, 2777, 2778, 5, 88, 0, 0, 2778, 2780, 3, 454, 227, 0, 2779, 2770, 1, 0, 0, 0, 2779, 2773, 1, 0, 0, 0, 2779, 2776, 1, 0, 0, 0, 2780, 2783, 1, 0, 0, 0, 2781, 2779, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 453, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2792, 3, 456, 228, 0, 2785, 2792, 3, 458, 229, 0, 2786, 2787, 5, 81, 0, 0, 2787, 2792, 3, 454, 227, 0, 2788, 2789, 5, 82, 0, 0, 2789, 2792, 3, 454, 227, 0, 2790, 2792, 3, 460, 230, 0, 2791, 2784, 1, 0, 0, 0, 2791, 2785, 1, 0, 0, 0, 2791, 2786, 1, 0, 0, 0, 2791, 2788, 1, 0, 0, 0, 2791, 2790, 1, 0, 0, 0, 2792, 455, 1, 0, 0, 0, 2793, 2794, 5, 79, 0, 0, 2794, 2795, 3, 454, 227, 0, 2795, 457, 1, 0, 0, 0, 2796, 2797, 5, 80, 0, 0, 2797, 2798, 3, 454, 227, 0, 2798, 459, 1, 0, 0, 0, 2799, 2806, 3, 462, 231, 0, 2800, 2801, 5, 70, 0, 0, 2801, 2806, 3, 454, 227, 0, 2802, 2803, 5, 69, 0, 0, 2803, 2806, 3, 454, 227, 0, 2804, 2806, 3, 472, 236, 0, 2805, 2799, 1, 0, 0, 0, 2805, 2800, 1, 0, 0, 0, 2805, 2802, 1, 0, 0, 0, 2805, 2804, 1, 0, 0, 0, 2806, 461, 1, 0, 0, 0, 2807, 2810, 3, 352, 176, 0, 2808, 2810, 3, 58, 29, 0, 2809, 2807, 1, 0, 0, 0, 2809, 2808, 1, 0, 0, 0, 2810, 2815, 1, 0, 0, 0, 2811, 2814, 3, 466, 233, 0, 2812, 2814, 3, 470, 235, 0, 2813, 2811, 1, 0, 0, 0, 2813, 2812, 1, 0, 0, 0, 2814, 2817, 1, 0, 0, 0, 2815, 2813, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 463, 1, 0, 0, 0, 2817, 2815, 1, 0, 0, 0, 2818, 2819, 3, 462, 231, 0, 2819, 2820, 5, 79, 0, 0, 2820, 465, 1, 0, 0, 0, 2821, 2822, 5, 79, 0, 0, 2822, 467, 1, 0, 0, 0, 2823, 2824, 3, 462, 231, 0, 2824, 2825, 5, 80, 0, 0, 2825, 469, 1, 0, 0, 0, 2826, 2827, 5, 80, 0, 0, 2827, 471, 1, 0, 0, 0, 2828, 2829, 5, 57, 0, 0, 2829, 2830, 3, 4, 2, 0, 2830, 2831, 5, 58, 0, 0, 2831, 2832, 3, 454, 227, 0, 2832, 2856, 1, 0, 0, 0, 2833, 2834, 5, 57, 0, 0, 2834, 2838, 3, 12, 6, 0, 2835, 2837, 3, 40, 20, 0, 2836, 2835, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 2841, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2842, 5, 58, 0, 0, 2842, 2843, 3, 460, 230, 0, 2843, 2856, 1, 0, 0, 0, 2844, 2845, 5, 57, 0, 0, 2845, 2849, 3, 12, 6, 0, 2846, 2848, 3, 40, 20, 0, 2847, 2846, 1, 0, 0, 0, 2848, 2851, 1, 0, 0, 0, 2849, 2847, 1, 0, 0, 0, 2849, 2850, 1, 0, 0, 0, 2850, 2852, 1, 0, 0, 0, 2851, 2849, 1, 0, 0, 0, 2852, 2853, 5, 58, 0, 0, 2853, 2854, 3, 416, 208, 0, 2854, 2856, 1, 0, 0, 0, 2855, 2828, 1, 0, 0, 0, 2855, 2833, 1, 0, 0, 0, 2855, 2844, 1, 0, 0, 0, 2856, 473, 1, 0, 0, 0, 324, 478, 483, 490, 494, 498, 507, 511, 515, 517, 523, 528, 535, 540, 542, 548, 553, 558, 563, 574, 588, 593, 601, 608, 614, 619, 630, 633, 647, 652, 657, 662, 668, 678, 686, 696, 704, 716, 720, 725, 731, 739, 748, 759, 788, 792, 797, 803, 806, 809, 821, 832, 846, 853, 862, 869, 874, 889, 896, 902, 906, 910, 914, 918, 923, 927, 931, 933, 938, 945, 950, 952, 958, 963, 967, 986, 991, 1007, 1012, 1018, 1024, 1026, 1030, 1035, 1039, 1046, 1053, 1061, 1064, 1069, 1077, 1082, 1089, 1096, 1101, 1107, 1119, 1124, 1128, 1138, 1143, 1151, 1154, 1159, 1167, 1170, 1175, 1180, 1185, 1190, 1197, 1202, 1210, 1215, 1220, 1225, 1231, 1237, 1240, 1243, 1252, 1258, 1264, 1267, 1270, 1278, 1283, 1288, 1294, 1297, 1308, 1317, 1327, 1332, 1343, 1348, 1360, 1365, 1377, 1387, 1392, 1400, 1403, 1410, 1418, 1424, 1433, 1443, 1447, 1450, 1459, 1473, 1476, 1485, 1490, 1498, 1504, 1512, 1524, 1531, 1545, 1567, 1601, 1613, 1619, 1631, 1644, 1670, 1674, 1679, 1683, 1687, 1695, 1699, 1703, 1710, 1719, 1727, 1742, 1754, 1760, 1766, 1787, 1792, 1798, 1810, 1821, 1831, 1834, 1839, 1848, 1854, 1864, 1869, 1878, 1901, 1911, 1933, 1940, 1948, 1956, 1967, 1990, 2000, 2011, 2033, 2037, 2042, 2050, 2056, 2060, 2064, 2068, 2074, 2079, 2084, 2088, 2092, 2098, 2103, 2108, 2112, 2116, 2118, 2123, 2128, 2133, 2137, 2141, 2145, 2150, 2158, 2164, 2168, 2172, 2176, 2182, 2187, 2192, 2196, 2200, 2202, 2207, 2222, 2236, 2248, 2257, 2272, 2285, 2294, 2300, 2307, 2312, 2319, 2324, 2331, 2336, 2343, 2348, 2356, 2361, 2365, 2369, 2374, 2381, 2388, 2393, 2400, 2405, 2412, 2417, 2425, 2430, 2434, 2441, 2447, 2454, 2461, 2468, 2476, 2483, 2491, 2495, 2502, 2509, 2516, 2524, 2531, 2539, 2545, 2551, 2563, 2569, 2575, 2586, 2595, 2602, 2609, 2614, 2618, 2627, 2638, 2648, 2659, 2670, 2681, 2692, 2704, 2706, 2727, 2729, 2748, 2750, 2762, 2764, 2779, 2781, 2791, 2805, 2809, 2813, 2815, 2838, 2849, 2855]
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/antlr/Java8.tokens b/benchmarks/src/main/java/org/antlr/Java8.tokens
new file mode 100644
index 000000000..52ef1eee3
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8.tokens
@@ -0,0 +1,205 @@
+ABSTRACT=1
+ASSERT=2
+BOOLEAN=3
+BREAK=4
+BYTE=5
+CASE=6
+CATCH=7
+CHAR=8
+CLASS=9
+CONST=10
+CONTINUE=11
+DEFAULT=12
+DO=13
+DOUBLE=14
+ELSE=15
+ENUM=16
+EXTENDS=17
+FINAL=18
+FINALLY=19
+FLOAT=20
+FOR=21
+IF=22
+GOTO=23
+IMPLEMENTS=24
+IMPORT=25
+INSTANCEOF=26
+INT=27
+INTERFACE=28
+LONG=29
+NATIVE=30
+NEW=31
+PACKAGE=32
+PRIVATE=33
+PROTECTED=34
+PUBLIC=35
+RETURN=36
+SHORT=37
+STATIC=38
+STRICTFP=39
+SUPER=40
+SWITCH=41
+SYNCHRONIZED=42
+THIS=43
+THROW=44
+THROWS=45
+TRANSIENT=46
+TRY=47
+VOID=48
+VOLATILE=49
+WHILE=50
+IntegerLiteral=51
+FloatingPointLiteral=52
+BooleanLiteral=53
+CharacterLiteral=54
+StringLiteral=55
+NullLiteral=56
+LPAREN=57
+RPAREN=58
+LBRACE=59
+RBRACE=60
+LBRACK=61
+RBRACK=62
+SEMI=63
+COMMA=64
+DOT=65
+ASSIGN=66
+GT=67
+LT=68
+BANG=69
+TILDE=70
+QUESTION=71
+COLON=72
+EQUAL=73
+LE=74
+GE=75
+NOTEQUAL=76
+AND=77
+OR=78
+INC=79
+DEC=80
+ADD=81
+SUB=82
+MUL=83
+DIV=84
+BITAND=85
+BITOR=86
+CARET=87
+MOD=88
+ARROW=89
+COLONCOLON=90
+ADD_ASSIGN=91
+SUB_ASSIGN=92
+MUL_ASSIGN=93
+DIV_ASSIGN=94
+AND_ASSIGN=95
+OR_ASSIGN=96
+XOR_ASSIGN=97
+MOD_ASSIGN=98
+LSHIFT_ASSIGN=99
+RSHIFT_ASSIGN=100
+URSHIFT_ASSIGN=101
+Identifier=102
+AT=103
+ELLIPSIS=104
+WS=105
+COMMENT=106
+LINE_COMMENT=107
+'abstract'=1
+'assert'=2
+'boolean'=3
+'break'=4
+'byte'=5
+'case'=6
+'catch'=7
+'char'=8
+'class'=9
+'const'=10
+'continue'=11
+'default'=12
+'do'=13
+'double'=14
+'else'=15
+'enum'=16
+'extends'=17
+'final'=18
+'finally'=19
+'float'=20
+'for'=21
+'if'=22
+'goto'=23
+'implements'=24
+'import'=25
+'instanceof'=26
+'int'=27
+'interface'=28
+'long'=29
+'native'=30
+'new'=31
+'package'=32
+'private'=33
+'protected'=34
+'public'=35
+'return'=36
+'short'=37
+'static'=38
+'strictfp'=39
+'super'=40
+'switch'=41
+'synchronized'=42
+'this'=43
+'throw'=44
+'throws'=45
+'transient'=46
+'try'=47
+'void'=48
+'volatile'=49
+'while'=50
+'null'=56
+'('=57
+')'=58
+'{'=59
+'}'=60
+'['=61
+']'=62
+';'=63
+','=64
+'.'=65
+'='=66
+'>'=67
+'<'=68
+'!'=69
+'~'=70
+'?'=71
+':'=72
+'=='=73
+'<='=74
+'>='=75
+'!='=76
+'&&'=77
+'||'=78
+'++'=79
+'--'=80
+'+'=81
+'-'=82
+'*'=83
+'/'=84
+'&'=85
+'|'=86
+'^'=87
+'%'=88
+'->'=89
+'::'=90
+'+='=91
+'-='=92
+'*='=93
+'/='=94
+'&='=95
+'|='=96
+'^='=97
+'%='=98
+'<<='=99
+'>>='=100
+'>>>='=101
+'@'=103
+'...'=104
diff --git a/benchmarks/src/main/java/org/antlr/Java8BaseListener.java b/benchmarks/src/main/java/org/antlr/Java8BaseListener.java
new file mode 100644
index 000000000..21685afaf
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8BaseListener.java
@@ -0,0 +1,2886 @@
+// Generated from Java8.g4 by ANTLR 4.13.1
+
+package org.antlr;
+
+
+import org.antlr.v4.runtime.ParserRuleContext;
+import org.antlr.v4.runtime.tree.ErrorNode;
+import org.antlr.v4.runtime.tree.TerminalNode;
+
+/**
+ * This class provides an empty implementation of {@link Java8Listener},
+ * which can be extended to create a listener which only needs to handle a subset
+ * of the available methods.
+ */
+@SuppressWarnings("CheckReturnValue")
+public class Java8BaseListener implements Java8Listener {
+ /**
+ * {@inheritDoc}
+ *
+ *
The default implementation does nothing.
+ */
+ @Override public void enterLiteral(Java8Parser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLiteral(Java8Parser.LiteralContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterType(Java8Parser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitType(Java8Parser.TypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNumericType(Java8Parser.NumericTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNumericType(Java8Parser.NumericTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIntegralType(Java8Parser.IntegralTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIntegralType(Java8Parser.IntegralTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReferenceType(Java8Parser.ReferenceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReferenceType(Java8Parser.ReferenceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassType(Java8Parser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassType(Java8Parser.ClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeVariable(Java8Parser.TypeVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeVariable(Java8Parser.TypeVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayType(Java8Parser.ArrayTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayType(Java8Parser.ArrayTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDims(Java8Parser.DimsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDims(Java8Parser.DimsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameter(Java8Parser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameter(Java8Parser.TypeParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeBound(Java8Parser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeBound(Java8Parser.TypeBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgument(Java8Parser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgument(Java8Parser.TypeArgumentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWildcard(Java8Parser.WildcardContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWildcard(Java8Parser.WildcardContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageName(Java8Parser.PackageNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageName(Java8Parser.PackageNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeName(Java8Parser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeName(Java8Parser.TypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionName(Java8Parser.ExpressionNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionName(Java8Parser.ExpressionNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodName(Java8Parser.MethodNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodName(Java8Parser.MethodNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPackageModifier(Java8Parser.PackageModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPackageModifier(Java8Parser.PackageModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassModifier(Java8Parser.ClassModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassModifier(Java8Parser.ClassModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameters(Java8Parser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameters(Java8Parser.TypeParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSuperclass(Java8Parser.SuperclassContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSuperclass(Java8Parser.SuperclassContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBody(Java8Parser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBody(Java8Parser.ClassBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldModifier(Java8Parser.FieldModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldModifier(Java8Parser.FieldModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannType(Java8Parser.UnannTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannType(Java8Parser.UnannTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodModifier(Java8Parser.MethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodModifier(Java8Parser.MethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodHeader(Java8Parser.MethodHeaderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodHeader(Java8Parser.MethodHeaderContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResult(Java8Parser.ResultContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResult(Java8Parser.ResultContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameters(Java8Parser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameters(Java8Parser.FormalParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFormalParameter(Java8Parser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFormalParameter(Java8Parser.FormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableModifier(Java8Parser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableModifier(Java8Parser.VariableModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterThrows_(Java8Parser.Throws_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitThrows_(Java8Parser.Throws_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExceptionType(Java8Parser.ExceptionTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExceptionType(Java8Parser.ExceptionTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodBody(Java8Parser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodBody(Java8Parser.MethodBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumBody(Java8Parser.EnumBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumBody(Java8Parser.EnumBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstant(Java8Parser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstant(Java8Parser.EnumConstantContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantModifier(Java8Parser.ConstantModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantModifier(Java8Parser.ConstantModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDefaultValue(Java8Parser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDefaultValue(Java8Parser.DefaultValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAnnotation(Java8Parser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAnnotation(Java8Parser.AnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValuePair(Java8Parser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValuePair(Java8Parser.ElementValuePairContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValue(Java8Parser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValue(Java8Parser.ElementValueContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterElementValueList(Java8Parser.ElementValueListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitElementValueList(Java8Parser.ElementValueListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlock(Java8Parser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlock(Java8Parser.BlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockStatements(Java8Parser.BlockStatementsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockStatements(Java8Parser.BlockStatementsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBlockStatement(Java8Parser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBlockStatement(Java8Parser.BlockStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatement(Java8Parser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatement(Java8Parser.StatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatementExpression(Java8Parser.StatementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatementExpression(Java8Parser.StatementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAssertStatement(Java8Parser.AssertStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAssertStatement(Java8Parser.AssertStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWhileStatement(Java8Parser.WhileStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWhileStatement(Java8Parser.WhileStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDoStatement(Java8Parser.DoStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDoStatement(Java8Parser.DoStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForStatement(Java8Parser.ForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForStatement(Java8Parser.ForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForInit(Java8Parser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForInit(Java8Parser.ForInitContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterForUpdate(Java8Parser.ForUpdateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitForUpdate(Java8Parser.ForUpdateContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterBreakStatement(Java8Parser.BreakStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitBreakStatement(Java8Parser.BreakStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterContinueStatement(Java8Parser.ContinueStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitContinueStatement(Java8Parser.ContinueStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterReturnStatement(Java8Parser.ReturnStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitReturnStatement(Java8Parser.ReturnStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterThrowStatement(Java8Parser.ThrowStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitThrowStatement(Java8Parser.ThrowStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTryStatement(Java8Parser.TryStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTryStatement(Java8Parser.TryStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatches(Java8Parser.CatchesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatches(Java8Parser.CatchesContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchClause(Java8Parser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchClause(Java8Parser.CatchClauseContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCatchType(Java8Parser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCatchType(Java8Parser.CatchTypeContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFinally_(Java8Parser.Finally_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFinally_(Java8Parser.Finally_Context ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResourceList(Java8Parser.ResourceListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResourceList(Java8Parser.ResourceListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterResource(Java8Parser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitResource(Java8Parser.ResourceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimary(Java8Parser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimary(Java8Parser.PrimaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldAccess(Java8Parser.FieldAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldAccess(Java8Parser.FieldAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayAccess(Java8Parser.ArrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayAccess(Java8Parser.ArrayAccessContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArgumentList(Java8Parser.ArgumentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArgumentList(Java8Parser.ArgumentListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodReference(Java8Parser.MethodReferenceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodReference(Java8Parser.MethodReferenceContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDimExprs(Java8Parser.DimExprsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDimExprs(Java8Parser.DimExprsContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterDimExpr(Java8Parser.DimExprContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitDimExpr(Java8Parser.DimExprContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExpression(Java8Parser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExpression(Java8Parser.ExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLambdaBody(Java8Parser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLambdaBody(Java8Parser.LambdaBodyContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAssignment(Java8Parser.AssignmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAssignment(Java8Parser.AssignmentContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAndExpression(Java8Parser.AndExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAndExpression(Java8Parser.AndExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterCastExpression(Java8Parser.CastExpressionContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitCastExpression(Java8Parser.CastExpressionContext ctx) { }
+
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void enterEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void exitEveryRule(ParserRuleContext ctx) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitTerminal(TerminalNode node) { }
+ /**
+ * {@inheritDoc}
+ *
+ * The default implementation does nothing.
+ */
+ @Override public void visitErrorNode(ErrorNode node) { }
+}
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/antlr/Java8Lexer.interp b/benchmarks/src/main/java/org/antlr/Java8Lexer.interp
new file mode 100644
index 000000000..7bf0acf04
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.interp
@@ -0,0 +1,384 @@
+token literal names:
+null
+'abstract'
+'assert'
+'boolean'
+'break'
+'byte'
+'case'
+'catch'
+'char'
+'class'
+'const'
+'continue'
+'default'
+'do'
+'double'
+'else'
+'enum'
+'extends'
+'final'
+'finally'
+'float'
+'for'
+'if'
+'goto'
+'implements'
+'import'
+'instanceof'
+'int'
+'interface'
+'long'
+'native'
+'new'
+'package'
+'private'
+'protected'
+'public'
+'return'
+'short'
+'static'
+'strictfp'
+'super'
+'switch'
+'synchronized'
+'this'
+'throw'
+'throws'
+'transient'
+'try'
+'void'
+'volatile'
+'while'
+null
+null
+null
+null
+null
+'null'
+'('
+')'
+'{'
+'}'
+'['
+']'
+';'
+','
+'.'
+'='
+'>'
+'<'
+'!'
+'~'
+'?'
+':'
+'=='
+'<='
+'>='
+'!='
+'&&'
+'||'
+'++'
+'--'
+'+'
+'-'
+'*'
+'/'
+'&'
+'|'
+'^'
+'%'
+'->'
+'::'
+'+='
+'-='
+'*='
+'/='
+'&='
+'|='
+'^='
+'%='
+'<<='
+'>>='
+'>>>='
+null
+'@'
+'...'
+null
+null
+null
+
+token symbolic names:
+null
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VOID
+VOLATILE
+WHILE
+IntegerLiteral
+FloatingPointLiteral
+BooleanLiteral
+CharacterLiteral
+StringLiteral
+NullLiteral
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ARROW
+COLONCOLON
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+Identifier
+AT
+ELLIPSIS
+WS
+COMMENT
+LINE_COMMENT
+
+rule names:
+ABSTRACT
+ASSERT
+BOOLEAN
+BREAK
+BYTE
+CASE
+CATCH
+CHAR
+CLASS
+CONST
+CONTINUE
+DEFAULT
+DO
+DOUBLE
+ELSE
+ENUM
+EXTENDS
+FINAL
+FINALLY
+FLOAT
+FOR
+IF
+GOTO
+IMPLEMENTS
+IMPORT
+INSTANCEOF
+INT
+INTERFACE
+LONG
+NATIVE
+NEW
+PACKAGE
+PRIVATE
+PROTECTED
+PUBLIC
+RETURN
+SHORT
+STATIC
+STRICTFP
+SUPER
+SWITCH
+SYNCHRONIZED
+THIS
+THROW
+THROWS
+TRANSIENT
+TRY
+VOID
+VOLATILE
+WHILE
+IntegerLiteral
+DecimalIntegerLiteral
+HexIntegerLiteral
+OctalIntegerLiteral
+BinaryIntegerLiteral
+IntegerTypeSuffix
+DecimalNumeral
+Digits
+Digit
+NonZeroDigit
+DigitsAndUnderscores
+DigitOrUnderscore
+Underscores
+HexNumeral
+HexDigits
+HexDigit
+HexDigitsAndUnderscores
+HexDigitOrUnderscore
+OctalNumeral
+OctalDigits
+OctalDigit
+OctalDigitsAndUnderscores
+OctalDigitOrUnderscore
+BinaryNumeral
+BinaryDigits
+BinaryDigit
+BinaryDigitsAndUnderscores
+BinaryDigitOrUnderscore
+FloatingPointLiteral
+DecimalFloatingPointLiteral
+ExponentPart
+ExponentIndicator
+SignedInteger
+Sign
+FloatTypeSuffix
+HexadecimalFloatingPointLiteral
+HexSignificand
+BinaryExponent
+BinaryExponentIndicator
+BooleanLiteral
+CharacterLiteral
+SingleCharacter
+StringLiteral
+StringCharacters
+StringCharacter
+EscapeSequence
+OctalEscape
+ZeroToThree
+UnicodeEscape
+NullLiteral
+LPAREN
+RPAREN
+LBRACE
+RBRACE
+LBRACK
+RBRACK
+SEMI
+COMMA
+DOT
+ASSIGN
+GT
+LT
+BANG
+TILDE
+QUESTION
+COLON
+EQUAL
+LE
+GE
+NOTEQUAL
+AND
+OR
+INC
+DEC
+ADD
+SUB
+MUL
+DIV
+BITAND
+BITOR
+CARET
+MOD
+ARROW
+COLONCOLON
+ADD_ASSIGN
+SUB_ASSIGN
+MUL_ASSIGN
+DIV_ASSIGN
+AND_ASSIGN
+OR_ASSIGN
+XOR_ASSIGN
+MOD_ASSIGN
+LSHIFT_ASSIGN
+RSHIFT_ASSIGN
+URSHIFT_ASSIGN
+Identifier
+JavaLetter
+JavaLetterOrDigit
+AT
+ELLIPSIS
+WS
+COMMENT
+LINE_COMMENT
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[4, 0, 107, 1094, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 651, 8, 50, 1, 51, 1, 51, 3, 51, 655, 8, 51, 1, 52, 1, 52, 3, 52, 659, 8, 52, 1, 53, 1, 53, 3, 53, 663, 8, 53, 1, 54, 1, 54, 3, 54, 667, 8, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 3, 56, 674, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 679, 8, 56, 3, 56, 681, 8, 56, 1, 57, 1, 57, 3, 57, 685, 8, 57, 1, 57, 3, 57, 688, 8, 57, 1, 58, 1, 58, 3, 58, 692, 8, 58, 1, 59, 1, 59, 1, 60, 4, 60, 697, 8, 60, 11, 60, 12, 60, 698, 1, 61, 1, 61, 3, 61, 703, 8, 61, 1, 62, 4, 62, 706, 8, 62, 11, 62, 12, 62, 707, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 716, 8, 64, 1, 64, 3, 64, 719, 8, 64, 1, 65, 1, 65, 1, 66, 4, 66, 724, 8, 66, 11, 66, 12, 66, 725, 1, 67, 1, 67, 3, 67, 730, 8, 67, 1, 68, 1, 68, 3, 68, 734, 8, 68, 1, 68, 1, 68, 1, 69, 1, 69, 3, 69, 740, 8, 69, 1, 69, 3, 69, 743, 8, 69, 1, 70, 1, 70, 1, 71, 4, 71, 748, 8, 71, 11, 71, 12, 71, 749, 1, 72, 1, 72, 3, 72, 754, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 3, 74, 762, 8, 74, 1, 74, 3, 74, 765, 8, 74, 1, 75, 1, 75, 1, 76, 4, 76, 770, 8, 76, 11, 76, 12, 76, 771, 1, 77, 1, 77, 3, 77, 776, 8, 77, 1, 78, 1, 78, 3, 78, 780, 8, 78, 1, 79, 1, 79, 1, 79, 3, 79, 785, 8, 79, 1, 79, 3, 79, 788, 8, 79, 1, 79, 3, 79, 791, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 796, 8, 79, 1, 79, 3, 79, 799, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 804, 8, 79, 1, 79, 1, 79, 1, 79, 3, 79, 809, 8, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 3, 82, 817, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 3, 85, 828, 8, 85, 1, 86, 1, 86, 3, 86, 832, 8, 86, 1, 86, 1, 86, 1, 86, 3, 86, 837, 8, 86, 1, 86, 1, 86, 3, 86, 841, 8, 86, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 857, 8, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 867, 8, 90, 1, 91, 1, 91, 1, 92, 1, 92, 3, 92, 873, 8, 92, 1, 92, 1, 92, 1, 93, 4, 93, 878, 8, 93, 11, 93, 12, 93, 879, 1, 94, 1, 94, 3, 94, 884, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 890, 8, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 903, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 5, 145, 1036, 8, 145, 10, 145, 12, 145, 1039, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 1047, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1055, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 4, 150, 1064, 8, 150, 11, 150, 12, 150, 1065, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 1074, 8, 151, 10, 151, 12, 151, 1077, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1088, 8, 152, 10, 152, 12, 152, 1091, 9, 152, 1, 152, 1, 152, 1, 1075, 0, 153, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 52, 159, 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 53, 181, 54, 183, 0, 185, 55, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, 197, 0, 199, 56, 201, 57, 203, 58, 205, 59, 207, 60, 209, 61, 211, 62, 213, 63, 215, 64, 217, 65, 219, 66, 221, 67, 223, 68, 225, 69, 227, 70, 229, 71, 231, 72, 233, 73, 235, 74, 237, 75, 239, 76, 241, 77, 243, 78, 245, 79, 247, 80, 249, 81, 251, 82, 253, 83, 255, 84, 257, 85, 259, 86, 261, 87, 263, 88, 265, 89, 267, 90, 269, 91, 271, 92, 273, 93, 275, 94, 277, 95, 279, 96, 281, 97, 283, 98, 285, 99, 287, 100, 289, 101, 291, 102, 293, 0, 295, 0, 297, 103, 299, 104, 301, 105, 303, 106, 305, 107, 1, 0, 22, 2, 0, 76, 76, 108, 108, 1, 0, 49, 57, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 55, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4, 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 80, 80, 112, 112, 2, 0, 39, 39, 92, 92, 2, 0, 34, 34, 92, 92, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 1, 0, 48, 51, 4, 0, 36, 36, 65, 90, 95, 95, 97, 122, 2, 0, 0, 127, 55296, 56319, 1, 0, 55296, 56319, 1, 0, 56320, 57343, 5, 0, 36, 36, 48, 57, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 12, 13, 32, 32, 2, 0, 10, 10, 13, 13, 1108, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 1, 307, 1, 0, 0, 0, 3, 316, 1, 0, 0, 0, 5, 323, 1, 0, 0, 0, 7, 331, 1, 0, 0, 0, 9, 337, 1, 0, 0, 0, 11, 342, 1, 0, 0, 0, 13, 347, 1, 0, 0, 0, 15, 353, 1, 0, 0, 0, 17, 358, 1, 0, 0, 0, 19, 364, 1, 0, 0, 0, 21, 370, 1, 0, 0, 0, 23, 379, 1, 0, 0, 0, 25, 387, 1, 0, 0, 0, 27, 390, 1, 0, 0, 0, 29, 397, 1, 0, 0, 0, 31, 402, 1, 0, 0, 0, 33, 407, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 421, 1, 0, 0, 0, 39, 429, 1, 0, 0, 0, 41, 435, 1, 0, 0, 0, 43, 439, 1, 0, 0, 0, 45, 442, 1, 0, 0, 0, 47, 447, 1, 0, 0, 0, 49, 458, 1, 0, 0, 0, 51, 465, 1, 0, 0, 0, 53, 476, 1, 0, 0, 0, 55, 480, 1, 0, 0, 0, 57, 490, 1, 0, 0, 0, 59, 495, 1, 0, 0, 0, 61, 502, 1, 0, 0, 0, 63, 506, 1, 0, 0, 0, 65, 514, 1, 0, 0, 0, 67, 522, 1, 0, 0, 0, 69, 532, 1, 0, 0, 0, 71, 539, 1, 0, 0, 0, 73, 546, 1, 0, 0, 0, 75, 552, 1, 0, 0, 0, 77, 559, 1, 0, 0, 0, 79, 568, 1, 0, 0, 0, 81, 574, 1, 0, 0, 0, 83, 581, 1, 0, 0, 0, 85, 594, 1, 0, 0, 0, 87, 599, 1, 0, 0, 0, 89, 605, 1, 0, 0, 0, 91, 612, 1, 0, 0, 0, 93, 622, 1, 0, 0, 0, 95, 626, 1, 0, 0, 0, 97, 631, 1, 0, 0, 0, 99, 640, 1, 0, 0, 0, 101, 650, 1, 0, 0, 0, 103, 652, 1, 0, 0, 0, 105, 656, 1, 0, 0, 0, 107, 660, 1, 0, 0, 0, 109, 664, 1, 0, 0, 0, 111, 668, 1, 0, 0, 0, 113, 680, 1, 0, 0, 0, 115, 682, 1, 0, 0, 0, 117, 691, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 696, 1, 0, 0, 0, 123, 702, 1, 0, 0, 0, 125, 705, 1, 0, 0, 0, 127, 709, 1, 0, 0, 0, 129, 713, 1, 0, 0, 0, 131, 720, 1, 0, 0, 0, 133, 723, 1, 0, 0, 0, 135, 729, 1, 0, 0, 0, 137, 731, 1, 0, 0, 0, 139, 737, 1, 0, 0, 0, 141, 744, 1, 0, 0, 0, 143, 747, 1, 0, 0, 0, 145, 753, 1, 0, 0, 0, 147, 755, 1, 0, 0, 0, 149, 759, 1, 0, 0, 0, 151, 766, 1, 0, 0, 0, 153, 769, 1, 0, 0, 0, 155, 775, 1, 0, 0, 0, 157, 779, 1, 0, 0, 0, 159, 808, 1, 0, 0, 0, 161, 810, 1, 0, 0, 0, 163, 813, 1, 0, 0, 0, 165, 816, 1, 0, 0, 0, 167, 820, 1, 0, 0, 0, 169, 822, 1, 0, 0, 0, 171, 824, 1, 0, 0, 0, 173, 840, 1, 0, 0, 0, 175, 842, 1, 0, 0, 0, 177, 845, 1, 0, 0, 0, 179, 856, 1, 0, 0, 0, 181, 866, 1, 0, 0, 0, 183, 868, 1, 0, 0, 0, 185, 870, 1, 0, 0, 0, 187, 877, 1, 0, 0, 0, 189, 883, 1, 0, 0, 0, 191, 889, 1, 0, 0, 0, 193, 902, 1, 0, 0, 0, 195, 904, 1, 0, 0, 0, 197, 906, 1, 0, 0, 0, 199, 913, 1, 0, 0, 0, 201, 918, 1, 0, 0, 0, 203, 920, 1, 0, 0, 0, 205, 922, 1, 0, 0, 0, 207, 924, 1, 0, 0, 0, 209, 926, 1, 0, 0, 0, 211, 928, 1, 0, 0, 0, 213, 930, 1, 0, 0, 0, 215, 932, 1, 0, 0, 0, 217, 934, 1, 0, 0, 0, 219, 936, 1, 0, 0, 0, 221, 938, 1, 0, 0, 0, 223, 940, 1, 0, 0, 0, 225, 942, 1, 0, 0, 0, 227, 944, 1, 0, 0, 0, 229, 946, 1, 0, 0, 0, 231, 948, 1, 0, 0, 0, 233, 950, 1, 0, 0, 0, 235, 953, 1, 0, 0, 0, 237, 956, 1, 0, 0, 0, 239, 959, 1, 0, 0, 0, 241, 962, 1, 0, 0, 0, 243, 965, 1, 0, 0, 0, 245, 968, 1, 0, 0, 0, 247, 971, 1, 0, 0, 0, 249, 974, 1, 0, 0, 0, 251, 976, 1, 0, 0, 0, 253, 978, 1, 0, 0, 0, 255, 980, 1, 0, 0, 0, 257, 982, 1, 0, 0, 0, 259, 984, 1, 0, 0, 0, 261, 986, 1, 0, 0, 0, 263, 988, 1, 0, 0, 0, 265, 990, 1, 0, 0, 0, 267, 993, 1, 0, 0, 0, 269, 996, 1, 0, 0, 0, 271, 999, 1, 0, 0, 0, 273, 1002, 1, 0, 0, 0, 275, 1005, 1, 0, 0, 0, 277, 1008, 1, 0, 0, 0, 279, 1011, 1, 0, 0, 0, 281, 1014, 1, 0, 0, 0, 283, 1017, 1, 0, 0, 0, 285, 1020, 1, 0, 0, 0, 287, 1024, 1, 0, 0, 0, 289, 1028, 1, 0, 0, 0, 291, 1033, 1, 0, 0, 0, 293, 1046, 1, 0, 0, 0, 295, 1054, 1, 0, 0, 0, 297, 1056, 1, 0, 0, 0, 299, 1058, 1, 0, 0, 0, 301, 1063, 1, 0, 0, 0, 303, 1069, 1, 0, 0, 0, 305, 1083, 1, 0, 0, 0, 307, 308, 5, 97, 0, 0, 308, 309, 5, 98, 0, 0, 309, 310, 5, 115, 0, 0, 310, 311, 5, 116, 0, 0, 311, 312, 5, 114, 0, 0, 312, 313, 5, 97, 0, 0, 313, 314, 5, 99, 0, 0, 314, 315, 5, 116, 0, 0, 315, 2, 1, 0, 0, 0, 316, 317, 5, 97, 0, 0, 317, 318, 5, 115, 0, 0, 318, 319, 5, 115, 0, 0, 319, 320, 5, 101, 0, 0, 320, 321, 5, 114, 0, 0, 321, 322, 5, 116, 0, 0, 322, 4, 1, 0, 0, 0, 323, 324, 5, 98, 0, 0, 324, 325, 5, 111, 0, 0, 325, 326, 5, 111, 0, 0, 326, 327, 5, 108, 0, 0, 327, 328, 5, 101, 0, 0, 328, 329, 5, 97, 0, 0, 329, 330, 5, 110, 0, 0, 330, 6, 1, 0, 0, 0, 331, 332, 5, 98, 0, 0, 332, 333, 5, 114, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 97, 0, 0, 335, 336, 5, 107, 0, 0, 336, 8, 1, 0, 0, 0, 337, 338, 5, 98, 0, 0, 338, 339, 5, 121, 0, 0, 339, 340, 5, 116, 0, 0, 340, 341, 5, 101, 0, 0, 341, 10, 1, 0, 0, 0, 342, 343, 5, 99, 0, 0, 343, 344, 5, 97, 0, 0, 344, 345, 5, 115, 0, 0, 345, 346, 5, 101, 0, 0, 346, 12, 1, 0, 0, 0, 347, 348, 5, 99, 0, 0, 348, 349, 5, 97, 0, 0, 349, 350, 5, 116, 0, 0, 350, 351, 5, 99, 0, 0, 351, 352, 5, 104, 0, 0, 352, 14, 1, 0, 0, 0, 353, 354, 5, 99, 0, 0, 354, 355, 5, 104, 0, 0, 355, 356, 5, 97, 0, 0, 356, 357, 5, 114, 0, 0, 357, 16, 1, 0, 0, 0, 358, 359, 5, 99, 0, 0, 359, 360, 5, 108, 0, 0, 360, 361, 5, 97, 0, 0, 361, 362, 5, 115, 0, 0, 362, 363, 5, 115, 0, 0, 363, 18, 1, 0, 0, 0, 364, 365, 5, 99, 0, 0, 365, 366, 5, 111, 0, 0, 366, 367, 5, 110, 0, 0, 367, 368, 5, 115, 0, 0, 368, 369, 5, 116, 0, 0, 369, 20, 1, 0, 0, 0, 370, 371, 5, 99, 0, 0, 371, 372, 5, 111, 0, 0, 372, 373, 5, 110, 0, 0, 373, 374, 5, 116, 0, 0, 374, 375, 5, 105, 0, 0, 375, 376, 5, 110, 0, 0, 376, 377, 5, 117, 0, 0, 377, 378, 5, 101, 0, 0, 378, 22, 1, 0, 0, 0, 379, 380, 5, 100, 0, 0, 380, 381, 5, 101, 0, 0, 381, 382, 5, 102, 0, 0, 382, 383, 5, 97, 0, 0, 383, 384, 5, 117, 0, 0, 384, 385, 5, 108, 0, 0, 385, 386, 5, 116, 0, 0, 386, 24, 1, 0, 0, 0, 387, 388, 5, 100, 0, 0, 388, 389, 5, 111, 0, 0, 389, 26, 1, 0, 0, 0, 390, 391, 5, 100, 0, 0, 391, 392, 5, 111, 0, 0, 392, 393, 5, 117, 0, 0, 393, 394, 5, 98, 0, 0, 394, 395, 5, 108, 0, 0, 395, 396, 5, 101, 0, 0, 396, 28, 1, 0, 0, 0, 397, 398, 5, 101, 0, 0, 398, 399, 5, 108, 0, 0, 399, 400, 5, 115, 0, 0, 400, 401, 5, 101, 0, 0, 401, 30, 1, 0, 0, 0, 402, 403, 5, 101, 0, 0, 403, 404, 5, 110, 0, 0, 404, 405, 5, 117, 0, 0, 405, 406, 5, 109, 0, 0, 406, 32, 1, 0, 0, 0, 407, 408, 5, 101, 0, 0, 408, 409, 5, 120, 0, 0, 409, 410, 5, 116, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, 110, 0, 0, 412, 413, 5, 100, 0, 0, 413, 414, 5, 115, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 102, 0, 0, 416, 417, 5, 105, 0, 0, 417, 418, 5, 110, 0, 0, 418, 419, 5, 97, 0, 0, 419, 420, 5, 108, 0, 0, 420, 36, 1, 0, 0, 0, 421, 422, 5, 102, 0, 0, 422, 423, 5, 105, 0, 0, 423, 424, 5, 110, 0, 0, 424, 425, 5, 97, 0, 0, 425, 426, 5, 108, 0, 0, 426, 427, 5, 108, 0, 0, 427, 428, 5, 121, 0, 0, 428, 38, 1, 0, 0, 0, 429, 430, 5, 102, 0, 0, 430, 431, 5, 108, 0, 0, 431, 432, 5, 111, 0, 0, 432, 433, 5, 97, 0, 0, 433, 434, 5, 116, 0, 0, 434, 40, 1, 0, 0, 0, 435, 436, 5, 102, 0, 0, 436, 437, 5, 111, 0, 0, 437, 438, 5, 114, 0, 0, 438, 42, 1, 0, 0, 0, 439, 440, 5, 105, 0, 0, 440, 441, 5, 102, 0, 0, 441, 44, 1, 0, 0, 0, 442, 443, 5, 103, 0, 0, 443, 444, 5, 111, 0, 0, 444, 445, 5, 116, 0, 0, 445, 446, 5, 111, 0, 0, 446, 46, 1, 0, 0, 0, 447, 448, 5, 105, 0, 0, 448, 449, 5, 109, 0, 0, 449, 450, 5, 112, 0, 0, 450, 451, 5, 108, 0, 0, 451, 452, 5, 101, 0, 0, 452, 453, 5, 109, 0, 0, 453, 454, 5, 101, 0, 0, 454, 455, 5, 110, 0, 0, 455, 456, 5, 116, 0, 0, 456, 457, 5, 115, 0, 0, 457, 48, 1, 0, 0, 0, 458, 459, 5, 105, 0, 0, 459, 460, 5, 109, 0, 0, 460, 461, 5, 112, 0, 0, 461, 462, 5, 111, 0, 0, 462, 463, 5, 114, 0, 0, 463, 464, 5, 116, 0, 0, 464, 50, 1, 0, 0, 0, 465, 466, 5, 105, 0, 0, 466, 467, 5, 110, 0, 0, 467, 468, 5, 115, 0, 0, 468, 469, 5, 116, 0, 0, 469, 470, 5, 97, 0, 0, 470, 471, 5, 110, 0, 0, 471, 472, 5, 99, 0, 0, 472, 473, 5, 101, 0, 0, 473, 474, 5, 111, 0, 0, 474, 475, 5, 102, 0, 0, 475, 52, 1, 0, 0, 0, 476, 477, 5, 105, 0, 0, 477, 478, 5, 110, 0, 0, 478, 479, 5, 116, 0, 0, 479, 54, 1, 0, 0, 0, 480, 481, 5, 105, 0, 0, 481, 482, 5, 110, 0, 0, 482, 483, 5, 116, 0, 0, 483, 484, 5, 101, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 102, 0, 0, 486, 487, 5, 97, 0, 0, 487, 488, 5, 99, 0, 0, 488, 489, 5, 101, 0, 0, 489, 56, 1, 0, 0, 0, 490, 491, 5, 108, 0, 0, 491, 492, 5, 111, 0, 0, 492, 493, 5, 110, 0, 0, 493, 494, 5, 103, 0, 0, 494, 58, 1, 0, 0, 0, 495, 496, 5, 110, 0, 0, 496, 497, 5, 97, 0, 0, 497, 498, 5, 116, 0, 0, 498, 499, 5, 105, 0, 0, 499, 500, 5, 118, 0, 0, 500, 501, 5, 101, 0, 0, 501, 60, 1, 0, 0, 0, 502, 503, 5, 110, 0, 0, 503, 504, 5, 101, 0, 0, 504, 505, 5, 119, 0, 0, 505, 62, 1, 0, 0, 0, 506, 507, 5, 112, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 99, 0, 0, 509, 510, 5, 107, 0, 0, 510, 511, 5, 97, 0, 0, 511, 512, 5, 103, 0, 0, 512, 513, 5, 101, 0, 0, 513, 64, 1, 0, 0, 0, 514, 515, 5, 112, 0, 0, 515, 516, 5, 114, 0, 0, 516, 517, 5, 105, 0, 0, 517, 518, 5, 118, 0, 0, 518, 519, 5, 97, 0, 0, 519, 520, 5, 116, 0, 0, 520, 521, 5, 101, 0, 0, 521, 66, 1, 0, 0, 0, 522, 523, 5, 112, 0, 0, 523, 524, 5, 114, 0, 0, 524, 525, 5, 111, 0, 0, 525, 526, 5, 116, 0, 0, 526, 527, 5, 101, 0, 0, 527, 528, 5, 99, 0, 0, 528, 529, 5, 116, 0, 0, 529, 530, 5, 101, 0, 0, 530, 531, 5, 100, 0, 0, 531, 68, 1, 0, 0, 0, 532, 533, 5, 112, 0, 0, 533, 534, 5, 117, 0, 0, 534, 535, 5, 98, 0, 0, 535, 536, 5, 108, 0, 0, 536, 537, 5, 105, 0, 0, 537, 538, 5, 99, 0, 0, 538, 70, 1, 0, 0, 0, 539, 540, 5, 114, 0, 0, 540, 541, 5, 101, 0, 0, 541, 542, 5, 116, 0, 0, 542, 543, 5, 117, 0, 0, 543, 544, 5, 114, 0, 0, 544, 545, 5, 110, 0, 0, 545, 72, 1, 0, 0, 0, 546, 547, 5, 115, 0, 0, 547, 548, 5, 104, 0, 0, 548, 549, 5, 111, 0, 0, 549, 550, 5, 114, 0, 0, 550, 551, 5, 116, 0, 0, 551, 74, 1, 0, 0, 0, 552, 553, 5, 115, 0, 0, 553, 554, 5, 116, 0, 0, 554, 555, 5, 97, 0, 0, 555, 556, 5, 116, 0, 0, 556, 557, 5, 105, 0, 0, 557, 558, 5, 99, 0, 0, 558, 76, 1, 0, 0, 0, 559, 560, 5, 115, 0, 0, 560, 561, 5, 116, 0, 0, 561, 562, 5, 114, 0, 0, 562, 563, 5, 105, 0, 0, 563, 564, 5, 99, 0, 0, 564, 565, 5, 116, 0, 0, 565, 566, 5, 102, 0, 0, 566, 567, 5, 112, 0, 0, 567, 78, 1, 0, 0, 0, 568, 569, 5, 115, 0, 0, 569, 570, 5, 117, 0, 0, 570, 571, 5, 112, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 114, 0, 0, 573, 80, 1, 0, 0, 0, 574, 575, 5, 115, 0, 0, 575, 576, 5, 119, 0, 0, 576, 577, 5, 105, 0, 0, 577, 578, 5, 116, 0, 0, 578, 579, 5, 99, 0, 0, 579, 580, 5, 104, 0, 0, 580, 82, 1, 0, 0, 0, 581, 582, 5, 115, 0, 0, 582, 583, 5, 121, 0, 0, 583, 584, 5, 110, 0, 0, 584, 585, 5, 99, 0, 0, 585, 586, 5, 104, 0, 0, 586, 587, 5, 114, 0, 0, 587, 588, 5, 111, 0, 0, 588, 589, 5, 110, 0, 0, 589, 590, 5, 105, 0, 0, 590, 591, 5, 122, 0, 0, 591, 592, 5, 101, 0, 0, 592, 593, 5, 100, 0, 0, 593, 84, 1, 0, 0, 0, 594, 595, 5, 116, 0, 0, 595, 596, 5, 104, 0, 0, 596, 597, 5, 105, 0, 0, 597, 598, 5, 115, 0, 0, 598, 86, 1, 0, 0, 0, 599, 600, 5, 116, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 114, 0, 0, 602, 603, 5, 111, 0, 0, 603, 604, 5, 119, 0, 0, 604, 88, 1, 0, 0, 0, 605, 606, 5, 116, 0, 0, 606, 607, 5, 104, 0, 0, 607, 608, 5, 114, 0, 0, 608, 609, 5, 111, 0, 0, 609, 610, 5, 119, 0, 0, 610, 611, 5, 115, 0, 0, 611, 90, 1, 0, 0, 0, 612, 613, 5, 116, 0, 0, 613, 614, 5, 114, 0, 0, 614, 615, 5, 97, 0, 0, 615, 616, 5, 110, 0, 0, 616, 617, 5, 115, 0, 0, 617, 618, 5, 105, 0, 0, 618, 619, 5, 101, 0, 0, 619, 620, 5, 110, 0, 0, 620, 621, 5, 116, 0, 0, 621, 92, 1, 0, 0, 0, 622, 623, 5, 116, 0, 0, 623, 624, 5, 114, 0, 0, 624, 625, 5, 121, 0, 0, 625, 94, 1, 0, 0, 0, 626, 627, 5, 118, 0, 0, 627, 628, 5, 111, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, 5, 100, 0, 0, 630, 96, 1, 0, 0, 0, 631, 632, 5, 118, 0, 0, 632, 633, 5, 111, 0, 0, 633, 634, 5, 108, 0, 0, 634, 635, 5, 97, 0, 0, 635, 636, 5, 116, 0, 0, 636, 637, 5, 105, 0, 0, 637, 638, 5, 108, 0, 0, 638, 639, 5, 101, 0, 0, 639, 98, 1, 0, 0, 0, 640, 641, 5, 119, 0, 0, 641, 642, 5, 104, 0, 0, 642, 643, 5, 105, 0, 0, 643, 644, 5, 108, 0, 0, 644, 645, 5, 101, 0, 0, 645, 100, 1, 0, 0, 0, 646, 651, 3, 103, 51, 0, 647, 651, 3, 105, 52, 0, 648, 651, 3, 107, 53, 0, 649, 651, 3, 109, 54, 0, 650, 646, 1, 0, 0, 0, 650, 647, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 649, 1, 0, 0, 0, 651, 102, 1, 0, 0, 0, 652, 654, 3, 113, 56, 0, 653, 655, 3, 111, 55, 0, 654, 653, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 104, 1, 0, 0, 0, 656, 658, 3, 127, 63, 0, 657, 659, 3, 111, 55, 0, 658, 657, 1, 0, 0, 0, 658, 659, 1, 0, 0, 0, 659, 106, 1, 0, 0, 0, 660, 662, 3, 137, 68, 0, 661, 663, 3, 111, 55, 0, 662, 661, 1, 0, 0, 0, 662, 663, 1, 0, 0, 0, 663, 108, 1, 0, 0, 0, 664, 666, 3, 147, 73, 0, 665, 667, 3, 111, 55, 0, 666, 665, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 110, 1, 0, 0, 0, 668, 669, 7, 0, 0, 0, 669, 112, 1, 0, 0, 0, 670, 681, 5, 48, 0, 0, 671, 678, 3, 119, 59, 0, 672, 674, 3, 115, 57, 0, 673, 672, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 679, 1, 0, 0, 0, 675, 676, 3, 125, 62, 0, 676, 677, 3, 115, 57, 0, 677, 679, 1, 0, 0, 0, 678, 673, 1, 0, 0, 0, 678, 675, 1, 0, 0, 0, 679, 681, 1, 0, 0, 0, 680, 670, 1, 0, 0, 0, 680, 671, 1, 0, 0, 0, 681, 114, 1, 0, 0, 0, 682, 687, 3, 117, 58, 0, 683, 685, 3, 121, 60, 0, 684, 683, 1, 0, 0, 0, 684, 685, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 688, 3, 117, 58, 0, 687, 684, 1, 0, 0, 0, 687, 688, 1, 0, 0, 0, 688, 116, 1, 0, 0, 0, 689, 692, 5, 48, 0, 0, 690, 692, 3, 119, 59, 0, 691, 689, 1, 0, 0, 0, 691, 690, 1, 0, 0, 0, 692, 118, 1, 0, 0, 0, 693, 694, 7, 1, 0, 0, 694, 120, 1, 0, 0, 0, 695, 697, 3, 123, 61, 0, 696, 695, 1, 0, 0, 0, 697, 698, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 122, 1, 0, 0, 0, 700, 703, 3, 117, 58, 0, 701, 703, 5, 95, 0, 0, 702, 700, 1, 0, 0, 0, 702, 701, 1, 0, 0, 0, 703, 124, 1, 0, 0, 0, 704, 706, 5, 95, 0, 0, 705, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 126, 1, 0, 0, 0, 709, 710, 5, 48, 0, 0, 710, 711, 7, 2, 0, 0, 711, 712, 3, 129, 64, 0, 712, 128, 1, 0, 0, 0, 713, 718, 3, 131, 65, 0, 714, 716, 3, 133, 66, 0, 715, 714, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 717, 1, 0, 0, 0, 717, 719, 3, 131, 65, 0, 718, 715, 1, 0, 0, 0, 718, 719, 1, 0, 0, 0, 719, 130, 1, 0, 0, 0, 720, 721, 7, 3, 0, 0, 721, 132, 1, 0, 0, 0, 722, 724, 3, 135, 67, 0, 723, 722, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 134, 1, 0, 0, 0, 727, 730, 3, 131, 65, 0, 728, 730, 5, 95, 0, 0, 729, 727, 1, 0, 0, 0, 729, 728, 1, 0, 0, 0, 730, 136, 1, 0, 0, 0, 731, 733, 5, 48, 0, 0, 732, 734, 3, 125, 62, 0, 733, 732, 1, 0, 0, 0, 733, 734, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 3, 139, 69, 0, 736, 138, 1, 0, 0, 0, 737, 742, 3, 141, 70, 0, 738, 740, 3, 143, 71, 0, 739, 738, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 743, 3, 141, 70, 0, 742, 739, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 140, 1, 0, 0, 0, 744, 745, 7, 4, 0, 0, 745, 142, 1, 0, 0, 0, 746, 748, 3, 145, 72, 0, 747, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 747, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 144, 1, 0, 0, 0, 751, 754, 3, 141, 70, 0, 752, 754, 5, 95, 0, 0, 753, 751, 1, 0, 0, 0, 753, 752, 1, 0, 0, 0, 754, 146, 1, 0, 0, 0, 755, 756, 5, 48, 0, 0, 756, 757, 7, 5, 0, 0, 757, 758, 3, 149, 74, 0, 758, 148, 1, 0, 0, 0, 759, 764, 3, 151, 75, 0, 760, 762, 3, 153, 76, 0, 761, 760, 1, 0, 0, 0, 761, 762, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 765, 3, 151, 75, 0, 764, 761, 1, 0, 0, 0, 764, 765, 1, 0, 0, 0, 765, 150, 1, 0, 0, 0, 766, 767, 7, 6, 0, 0, 767, 152, 1, 0, 0, 0, 768, 770, 3, 155, 77, 0, 769, 768, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 769, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 154, 1, 0, 0, 0, 773, 776, 3, 151, 75, 0, 774, 776, 5, 95, 0, 0, 775, 773, 1, 0, 0, 0, 775, 774, 1, 0, 0, 0, 776, 156, 1, 0, 0, 0, 777, 780, 3, 159, 79, 0, 778, 780, 3, 171, 85, 0, 779, 777, 1, 0, 0, 0, 779, 778, 1, 0, 0, 0, 780, 158, 1, 0, 0, 0, 781, 782, 3, 115, 57, 0, 782, 784, 5, 46, 0, 0, 783, 785, 3, 115, 57, 0, 784, 783, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 787, 1, 0, 0, 0, 786, 788, 3, 161, 80, 0, 787, 786, 1, 0, 0, 0, 787, 788, 1, 0, 0, 0, 788, 790, 1, 0, 0, 0, 789, 791, 3, 169, 84, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 809, 1, 0, 0, 0, 792, 793, 5, 46, 0, 0, 793, 795, 3, 115, 57, 0, 794, 796, 3, 161, 80, 0, 795, 794, 1, 0, 0, 0, 795, 796, 1, 0, 0, 0, 796, 798, 1, 0, 0, 0, 797, 799, 3, 169, 84, 0, 798, 797, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 809, 1, 0, 0, 0, 800, 801, 3, 115, 57, 0, 801, 803, 3, 161, 80, 0, 802, 804, 3, 169, 84, 0, 803, 802, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 809, 1, 0, 0, 0, 805, 806, 3, 115, 57, 0, 806, 807, 3, 169, 84, 0, 807, 809, 1, 0, 0, 0, 808, 781, 1, 0, 0, 0, 808, 792, 1, 0, 0, 0, 808, 800, 1, 0, 0, 0, 808, 805, 1, 0, 0, 0, 809, 160, 1, 0, 0, 0, 810, 811, 3, 163, 81, 0, 811, 812, 3, 165, 82, 0, 812, 162, 1, 0, 0, 0, 813, 814, 7, 7, 0, 0, 814, 164, 1, 0, 0, 0, 815, 817, 3, 167, 83, 0, 816, 815, 1, 0, 0, 0, 816, 817, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 819, 3, 115, 57, 0, 819, 166, 1, 0, 0, 0, 820, 821, 7, 8, 0, 0, 821, 168, 1, 0, 0, 0, 822, 823, 7, 9, 0, 0, 823, 170, 1, 0, 0, 0, 824, 825, 3, 173, 86, 0, 825, 827, 3, 175, 87, 0, 826, 828, 3, 169, 84, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 172, 1, 0, 0, 0, 829, 831, 3, 127, 63, 0, 830, 832, 5, 46, 0, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 841, 1, 0, 0, 0, 833, 834, 5, 48, 0, 0, 834, 836, 7, 2, 0, 0, 835, 837, 3, 129, 64, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 5, 46, 0, 0, 839, 841, 3, 129, 64, 0, 840, 829, 1, 0, 0, 0, 840, 833, 1, 0, 0, 0, 841, 174, 1, 0, 0, 0, 842, 843, 3, 177, 88, 0, 843, 844, 3, 165, 82, 0, 844, 176, 1, 0, 0, 0, 845, 846, 7, 10, 0, 0, 846, 178, 1, 0, 0, 0, 847, 848, 5, 116, 0, 0, 848, 849, 5, 114, 0, 0, 849, 850, 5, 117, 0, 0, 850, 857, 5, 101, 0, 0, 851, 852, 5, 102, 0, 0, 852, 853, 5, 97, 0, 0, 853, 854, 5, 108, 0, 0, 854, 855, 5, 115, 0, 0, 855, 857, 5, 101, 0, 0, 856, 847, 1, 0, 0, 0, 856, 851, 1, 0, 0, 0, 857, 180, 1, 0, 0, 0, 858, 859, 5, 39, 0, 0, 859, 860, 3, 183, 91, 0, 860, 861, 5, 39, 0, 0, 861, 867, 1, 0, 0, 0, 862, 863, 5, 39, 0, 0, 863, 864, 3, 191, 95, 0, 864, 865, 5, 39, 0, 0, 865, 867, 1, 0, 0, 0, 866, 858, 1, 0, 0, 0, 866, 862, 1, 0, 0, 0, 867, 182, 1, 0, 0, 0, 868, 869, 8, 11, 0, 0, 869, 184, 1, 0, 0, 0, 870, 872, 5, 34, 0, 0, 871, 873, 3, 187, 93, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 34, 0, 0, 875, 186, 1, 0, 0, 0, 876, 878, 3, 189, 94, 0, 877, 876, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 188, 1, 0, 0, 0, 881, 884, 8, 12, 0, 0, 882, 884, 3, 191, 95, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, 884, 190, 1, 0, 0, 0, 885, 886, 5, 92, 0, 0, 886, 890, 7, 13, 0, 0, 887, 890, 3, 193, 96, 0, 888, 890, 3, 197, 98, 0, 889, 885, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 888, 1, 0, 0, 0, 890, 192, 1, 0, 0, 0, 891, 892, 5, 92, 0, 0, 892, 903, 3, 141, 70, 0, 893, 894, 5, 92, 0, 0, 894, 895, 3, 141, 70, 0, 895, 896, 3, 141, 70, 0, 896, 903, 1, 0, 0, 0, 897, 898, 5, 92, 0, 0, 898, 899, 3, 195, 97, 0, 899, 900, 3, 141, 70, 0, 900, 901, 3, 141, 70, 0, 901, 903, 1, 0, 0, 0, 902, 891, 1, 0, 0, 0, 902, 893, 1, 0, 0, 0, 902, 897, 1, 0, 0, 0, 903, 194, 1, 0, 0, 0, 904, 905, 7, 14, 0, 0, 905, 196, 1, 0, 0, 0, 906, 907, 5, 92, 0, 0, 907, 908, 5, 117, 0, 0, 908, 909, 3, 131, 65, 0, 909, 910, 3, 131, 65, 0, 910, 911, 3, 131, 65, 0, 911, 912, 3, 131, 65, 0, 912, 198, 1, 0, 0, 0, 913, 914, 5, 110, 0, 0, 914, 915, 5, 117, 0, 0, 915, 916, 5, 108, 0, 0, 916, 917, 5, 108, 0, 0, 917, 200, 1, 0, 0, 0, 918, 919, 5, 40, 0, 0, 919, 202, 1, 0, 0, 0, 920, 921, 5, 41, 0, 0, 921, 204, 1, 0, 0, 0, 922, 923, 5, 123, 0, 0, 923, 206, 1, 0, 0, 0, 924, 925, 5, 125, 0, 0, 925, 208, 1, 0, 0, 0, 926, 927, 5, 91, 0, 0, 927, 210, 1, 0, 0, 0, 928, 929, 5, 93, 0, 0, 929, 212, 1, 0, 0, 0, 930, 931, 5, 59, 0, 0, 931, 214, 1, 0, 0, 0, 932, 933, 5, 44, 0, 0, 933, 216, 1, 0, 0, 0, 934, 935, 5, 46, 0, 0, 935, 218, 1, 0, 0, 0, 936, 937, 5, 61, 0, 0, 937, 220, 1, 0, 0, 0, 938, 939, 5, 62, 0, 0, 939, 222, 1, 0, 0, 0, 940, 941, 5, 60, 0, 0, 941, 224, 1, 0, 0, 0, 942, 943, 5, 33, 0, 0, 943, 226, 1, 0, 0, 0, 944, 945, 5, 126, 0, 0, 945, 228, 1, 0, 0, 0, 946, 947, 5, 63, 0, 0, 947, 230, 1, 0, 0, 0, 948, 949, 5, 58, 0, 0, 949, 232, 1, 0, 0, 0, 950, 951, 5, 61, 0, 0, 951, 952, 5, 61, 0, 0, 952, 234, 1, 0, 0, 0, 953, 954, 5, 60, 0, 0, 954, 955, 5, 61, 0, 0, 955, 236, 1, 0, 0, 0, 956, 957, 5, 62, 0, 0, 957, 958, 5, 61, 0, 0, 958, 238, 1, 0, 0, 0, 959, 960, 5, 33, 0, 0, 960, 961, 5, 61, 0, 0, 961, 240, 1, 0, 0, 0, 962, 963, 5, 38, 0, 0, 963, 964, 5, 38, 0, 0, 964, 242, 1, 0, 0, 0, 965, 966, 5, 124, 0, 0, 966, 967, 5, 124, 0, 0, 967, 244, 1, 0, 0, 0, 968, 969, 5, 43, 0, 0, 969, 970, 5, 43, 0, 0, 970, 246, 1, 0, 0, 0, 971, 972, 5, 45, 0, 0, 972, 973, 5, 45, 0, 0, 973, 248, 1, 0, 0, 0, 974, 975, 5, 43, 0, 0, 975, 250, 1, 0, 0, 0, 976, 977, 5, 45, 0, 0, 977, 252, 1, 0, 0, 0, 978, 979, 5, 42, 0, 0, 979, 254, 1, 0, 0, 0, 980, 981, 5, 47, 0, 0, 981, 256, 1, 0, 0, 0, 982, 983, 5, 38, 0, 0, 983, 258, 1, 0, 0, 0, 984, 985, 5, 124, 0, 0, 985, 260, 1, 0, 0, 0, 986, 987, 5, 94, 0, 0, 987, 262, 1, 0, 0, 0, 988, 989, 5, 37, 0, 0, 989, 264, 1, 0, 0, 0, 990, 991, 5, 45, 0, 0, 991, 992, 5, 62, 0, 0, 992, 266, 1, 0, 0, 0, 993, 994, 5, 58, 0, 0, 994, 995, 5, 58, 0, 0, 995, 268, 1, 0, 0, 0, 996, 997, 5, 43, 0, 0, 997, 998, 5, 61, 0, 0, 998, 270, 1, 0, 0, 0, 999, 1000, 5, 45, 0, 0, 1000, 1001, 5, 61, 0, 0, 1001, 272, 1, 0, 0, 0, 1002, 1003, 5, 42, 0, 0, 1003, 1004, 5, 61, 0, 0, 1004, 274, 1, 0, 0, 0, 1005, 1006, 5, 47, 0, 0, 1006, 1007, 5, 61, 0, 0, 1007, 276, 1, 0, 0, 0, 1008, 1009, 5, 38, 0, 0, 1009, 1010, 5, 61, 0, 0, 1010, 278, 1, 0, 0, 0, 1011, 1012, 5, 124, 0, 0, 1012, 1013, 5, 61, 0, 0, 1013, 280, 1, 0, 0, 0, 1014, 1015, 5, 94, 0, 0, 1015, 1016, 5, 61, 0, 0, 1016, 282, 1, 0, 0, 0, 1017, 1018, 5, 37, 0, 0, 1018, 1019, 5, 61, 0, 0, 1019, 284, 1, 0, 0, 0, 1020, 1021, 5, 60, 0, 0, 1021, 1022, 5, 60, 0, 0, 1022, 1023, 5, 61, 0, 0, 1023, 286, 1, 0, 0, 0, 1024, 1025, 5, 62, 0, 0, 1025, 1026, 5, 62, 0, 0, 1026, 1027, 5, 61, 0, 0, 1027, 288, 1, 0, 0, 0, 1028, 1029, 5, 62, 0, 0, 1029, 1030, 5, 62, 0, 0, 1030, 1031, 5, 62, 0, 0, 1031, 1032, 5, 61, 0, 0, 1032, 290, 1, 0, 0, 0, 1033, 1037, 3, 293, 146, 0, 1034, 1036, 3, 295, 147, 0, 1035, 1034, 1, 0, 0, 0, 1036, 1039, 1, 0, 0, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 292, 1, 0, 0, 0, 1039, 1037, 1, 0, 0, 0, 1040, 1047, 7, 15, 0, 0, 1041, 1042, 8, 16, 0, 0, 1042, 1047, 4, 146, 0, 0, 1043, 1044, 7, 17, 0, 0, 1044, 1045, 7, 18, 0, 0, 1045, 1047, 4, 146, 1, 0, 1046, 1040, 1, 0, 0, 0, 1046, 1041, 1, 0, 0, 0, 1046, 1043, 1, 0, 0, 0, 1047, 294, 1, 0, 0, 0, 1048, 1055, 7, 19, 0, 0, 1049, 1050, 8, 16, 0, 0, 1050, 1055, 4, 147, 2, 0, 1051, 1052, 7, 17, 0, 0, 1052, 1053, 7, 18, 0, 0, 1053, 1055, 4, 147, 3, 0, 1054, 1048, 1, 0, 0, 0, 1054, 1049, 1, 0, 0, 0, 1054, 1051, 1, 0, 0, 0, 1055, 296, 1, 0, 0, 0, 1056, 1057, 5, 64, 0, 0, 1057, 298, 1, 0, 0, 0, 1058, 1059, 5, 46, 0, 0, 1059, 1060, 5, 46, 0, 0, 1060, 1061, 5, 46, 0, 0, 1061, 300, 1, 0, 0, 0, 1062, 1064, 7, 20, 0, 0, 1063, 1062, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1063, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 6, 150, 0, 0, 1068, 302, 1, 0, 0, 0, 1069, 1070, 5, 47, 0, 0, 1070, 1071, 5, 42, 0, 0, 1071, 1075, 1, 0, 0, 0, 1072, 1074, 9, 0, 0, 0, 1073, 1072, 1, 0, 0, 0, 1074, 1077, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1075, 1073, 1, 0, 0, 0, 1076, 1078, 1, 0, 0, 0, 1077, 1075, 1, 0, 0, 0, 1078, 1079, 5, 42, 0, 0, 1079, 1080, 5, 47, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 6, 151, 0, 0, 1082, 304, 1, 0, 0, 0, 1083, 1084, 5, 47, 0, 0, 1084, 1085, 5, 47, 0, 0, 1085, 1089, 1, 0, 0, 0, 1086, 1088, 8, 21, 0, 0, 1087, 1086, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 6, 152, 0, 0, 1093, 306, 1, 0, 0, 0, 54, 0, 650, 654, 658, 662, 666, 673, 678, 680, 684, 687, 691, 698, 702, 707, 715, 718, 725, 729, 733, 739, 742, 749, 753, 761, 764, 771, 775, 779, 784, 787, 790, 795, 798, 803, 808, 816, 827, 831, 836, 840, 856, 866, 872, 879, 883, 889, 902, 1037, 1046, 1054, 1065, 1075, 1089, 1, 0, 1, 0]
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/antlr/Java8Lexer.java b/benchmarks/src/main/java/org/antlr/Java8Lexer.java
new file mode 100644
index 000000000..e006825f1
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.java
@@ -0,0 +1,888 @@
+// Generated from Java8.g4 by ANTLR 4.13.1
+
+package org.antlr;
+
+import org.antlr.v4.runtime.Lexer;
+import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
+public class Java8Lexer extends Lexer {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8,
+ CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15,
+ ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23,
+ IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29,
+ NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36,
+ SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42,
+ THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49,
+ WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53,
+ CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58,
+ LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65,
+ ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73,
+ LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82,
+ MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90,
+ ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95,
+ OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100,
+ URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106,
+ LINE_COMMENT=107;
+ public static String[] channelNames = {
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
+ };
+
+ public static String[] modeNames = {
+ "DEFAULT_MODE"
+ };
+
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", "CHAR",
+ "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM",
+ "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS",
+ "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW",
+ "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", "STATIC",
+ "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW", "THROWS",
+ "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral", "DecimalIntegerLiteral",
+ "HexIntegerLiteral", "OctalIntegerLiteral", "BinaryIntegerLiteral", "IntegerTypeSuffix",
+ "DecimalNumeral", "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores",
+ "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits", "HexDigit",
+ "HexDigitsAndUnderscores", "HexDigitOrUnderscore", "OctalNumeral", "OctalDigits",
+ "OctalDigit", "OctalDigitsAndUnderscores", "OctalDigitOrUnderscore",
+ "BinaryNumeral", "BinaryDigits", "BinaryDigit", "BinaryDigitsAndUnderscores",
+ "BinaryDigitOrUnderscore", "FloatingPointLiteral", "DecimalFloatingPointLiteral",
+ "ExponentPart", "ExponentIndicator", "SignedInteger", "Sign", "FloatTypeSuffix",
+ "HexadecimalFloatingPointLiteral", "HexSignificand", "BinaryExponent",
+ "BinaryExponentIndicator", "BooleanLiteral", "CharacterLiteral", "SingleCharacter",
+ "StringLiteral", "StringCharacters", "StringCharacter", "EscapeSequence",
+ "OctalEscape", "ZeroToThree", "UnicodeEscape", "NullLiteral", "LPAREN",
+ "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT",
+ "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", "EQUAL",
+ "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL",
+ "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW", "COLONCOLON", "ADD_ASSIGN",
+ "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN",
+ "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN",
+ "Identifier", "JavaLetter", "JavaLetterOrDigit", "AT", "ELLIPSIS", "WS",
+ "COMMENT", "LINE_COMMENT"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'",
+ "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'",
+ "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'",
+ "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'",
+ "'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'",
+ "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'",
+ "'transient'", "'try'", "'void'", "'volatile'", "'while'", null, null,
+ null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'",
+ "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'",
+ "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'",
+ "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='",
+ "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='",
+ "'>>>='", null, "'@'", "'...'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH",
+ "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE",
+ "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO",
+ "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE",
+ "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT",
+ "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW",
+ "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral",
+ "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral",
+ "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
+ "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION",
+ "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC",
+ "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW",
+ "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN",
+ "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS",
+ "COMMENT", "LINE_COMMENT"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+
+ public Java8Lexer(CharStream input) {
+ super(input);
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Java8.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public String[] getChannelNames() { return channelNames; }
+
+ @Override
+ public String[] getModeNames() { return modeNames; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ @Override
+ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+ switch (ruleIndex) {
+ case 146:
+ return JavaLetter_sempred((RuleContext)_localctx, predIndex);
+ case 147:
+ return JavaLetterOrDigit_sempred((RuleContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean JavaLetter_sempred(RuleContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return Character.isJavaIdentifierStart(_input.LA(-1));
+ case 1:
+ return Character.isJavaIdentifierStart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
+ }
+ return true;
+ }
+ private boolean JavaLetterOrDigit_sempred(RuleContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 2:
+ return Character.isJavaIdentifierPart(_input.LA(-1));
+ case 3:
+ return Character.isJavaIdentifierPart(Character.toCodePoint((char)_input.LA(-2), (char)_input.LA(-1)));
+ }
+ return true;
+ }
+
+ public static final String _serializedATN =
+ "\u0004\u0000k\u0446\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+
+ "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+
+ "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+
+ "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+
+ "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+
+ "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+
+ "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+
+ "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+
+ "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+
+ "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+
+ "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+
+ "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+
+ "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+
+ "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+
+ "0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+
+ "5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+
+ ":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+
+ "?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+
+ "D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+
+ "I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+
+ "N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+
+ "S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+
+ "X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+
+ "]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+
+ "b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007"+
+ "g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007"+
+ "l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007"+
+ "q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007"+
+ "v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007"+
+ "{\u0002|\u0007|\u0002}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002"+
+ "\u0080\u0007\u0080\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002"+
+ "\u0083\u0007\u0083\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002"+
+ "\u0086\u0007\u0086\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002"+
+ "\u0089\u0007\u0089\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002"+
+ "\u008c\u0007\u008c\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002"+
+ "\u008f\u0007\u008f\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002"+
+ "\u0092\u0007\u0092\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002"+
+ "\u0095\u0007\u0095\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002"+
+ "\u0098\u0007\u0098\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+
+ "\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001"+
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+
+ "\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001"+
+ "\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+
+ "\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001"+
+ "\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+
+ "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+
+ "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b"+
+ "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+
+ "\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+
+ "\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+
+ "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\r\u0001"+
+ "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+
+ "\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
+ "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
+ "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001"+
+ "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001"+
+ "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001"+
+ "\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
+ "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001"+
+ "\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001"+
+ "\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001"+
+ "\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0018\u0001"+
+ "\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+
+ "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+
+ "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001"+
+ "\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
+ "\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+
+ "\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001"+
+ "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001"+
+ "\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001"+
+ "\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
+ "\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001!"+
+ "\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001"+
+ "\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001"+
+ "#\u0001#\u0001#\u0001#\u0001#\u0001$\u0001$\u0001$\u0001$\u0001$\u0001"+
+ "$\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001%\u0001&\u0001&\u0001"+
+ "&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001\'\u0001\'\u0001\'\u0001"+
+ "\'\u0001\'\u0001\'\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001(\u0001"+
+ ")\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001)\u0001"+
+ ")\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001+\u0001+\u0001"+
+ "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001,\u0001"+
+ ",\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001-\u0001"+
+ "-\u0001.\u0001.\u0001.\u0001.\u0001/\u0001/\u0001/\u0001/\u0001/\u0001"+
+ "0\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00010\u00011\u0001"+
+ "1\u00011\u00011\u00011\u00011\u00012\u00012\u00012\u00012\u00032\u028b"+
+ "\b2\u00013\u00013\u00033\u028f\b3\u00014\u00014\u00034\u0293\b4\u0001"+
+ "5\u00015\u00035\u0297\b5\u00016\u00016\u00036\u029b\b6\u00017\u00017\u0001"+
+ "8\u00018\u00018\u00038\u02a2\b8\u00018\u00018\u00018\u00038\u02a7\b8\u0003"+
+ "8\u02a9\b8\u00019\u00019\u00039\u02ad\b9\u00019\u00039\u02b0\b9\u0001"+
+ ":\u0001:\u0003:\u02b4\b:\u0001;\u0001;\u0001<\u0004<\u02b9\b<\u000b<\f"+
+ "<\u02ba\u0001=\u0001=\u0003=\u02bf\b=\u0001>\u0004>\u02c2\b>\u000b>\f"+
+ ">\u02c3\u0001?\u0001?\u0001?\u0001?\u0001@\u0001@\u0003@\u02cc\b@\u0001"+
+ "@\u0003@\u02cf\b@\u0001A\u0001A\u0001B\u0004B\u02d4\bB\u000bB\fB\u02d5"+
+ "\u0001C\u0001C\u0003C\u02da\bC\u0001D\u0001D\u0003D\u02de\bD\u0001D\u0001"+
+ "D\u0001E\u0001E\u0003E\u02e4\bE\u0001E\u0003E\u02e7\bE\u0001F\u0001F\u0001"+
+ "G\u0004G\u02ec\bG\u000bG\fG\u02ed\u0001H\u0001H\u0003H\u02f2\bH\u0001"+
+ "I\u0001I\u0001I\u0001I\u0001J\u0001J\u0003J\u02fa\bJ\u0001J\u0003J\u02fd"+
+ "\bJ\u0001K\u0001K\u0001L\u0004L\u0302\bL\u000bL\fL\u0303\u0001M\u0001"+
+ "M\u0003M\u0308\bM\u0001N\u0001N\u0003N\u030c\bN\u0001O\u0001O\u0001O\u0003"+
+ "O\u0311\bO\u0001O\u0003O\u0314\bO\u0001O\u0003O\u0317\bO\u0001O\u0001"+
+ "O\u0001O\u0003O\u031c\bO\u0001O\u0003O\u031f\bO\u0001O\u0001O\u0001O\u0003"+
+ "O\u0324\bO\u0001O\u0001O\u0001O\u0003O\u0329\bO\u0001P\u0001P\u0001P\u0001"+
+ "Q\u0001Q\u0001R\u0003R\u0331\bR\u0001R\u0001R\u0001S\u0001S\u0001T\u0001"+
+ "T\u0001U\u0001U\u0001U\u0003U\u033c\bU\u0001V\u0001V\u0003V\u0340\bV\u0001"+
+ "V\u0001V\u0001V\u0003V\u0345\bV\u0001V\u0001V\u0003V\u0349\bV\u0001W\u0001"+
+ "W\u0001W\u0001X\u0001X\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001"+
+ "Y\u0001Y\u0001Y\u0003Y\u0359\bY\u0001Z\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+
+ "Z\u0001Z\u0001Z\u0003Z\u0363\bZ\u0001[\u0001[\u0001\\\u0001\\\u0003\\"+
+ "\u0369\b\\\u0001\\\u0001\\\u0001]\u0004]\u036e\b]\u000b]\f]\u036f\u0001"+
+ "^\u0001^\u0003^\u0374\b^\u0001_\u0001_\u0001_\u0001_\u0003_\u037a\b_\u0001"+
+ "`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001`\u0001"+
+ "`\u0003`\u0387\b`\u0001a\u0001a\u0001b\u0001b\u0001b\u0001b\u0001b\u0001"+
+ "b\u0001b\u0001c\u0001c\u0001c\u0001c\u0001c\u0001d\u0001d\u0001e\u0001"+
+ "e\u0001f\u0001f\u0001g\u0001g\u0001h\u0001h\u0001i\u0001i\u0001j\u0001"+
+ "j\u0001k\u0001k\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001o\u0001"+
+ "o\u0001p\u0001p\u0001q\u0001q\u0001r\u0001r\u0001s\u0001s\u0001t\u0001"+
+ "t\u0001t\u0001u\u0001u\u0001u\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+
+ "w\u0001x\u0001x\u0001x\u0001y\u0001y\u0001y\u0001z\u0001z\u0001z\u0001"+
+ "{\u0001{\u0001{\u0001|\u0001|\u0001}\u0001}\u0001~\u0001~\u0001\u007f"+
+ "\u0001\u007f\u0001\u0080\u0001\u0080\u0001\u0081\u0001\u0081\u0001\u0082"+
+ "\u0001\u0082\u0001\u0083\u0001\u0083\u0001\u0084\u0001\u0084\u0001\u0084"+
+ "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0086\u0001\u0086\u0001\u0086"+
+ "\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088\u0001\u0088\u0001\u0088"+
+ "\u0001\u0089\u0001\u0089\u0001\u0089\u0001\u008a\u0001\u008a\u0001\u008a"+
+ "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+
+ "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e"+
+ "\u0001\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u0090"+
+ "\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091"+
+ "\u0005\u0091\u040c\b\u0091\n\u0091\f\u0091\u040f\t\u0091\u0001\u0092\u0001"+
+ "\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0001\u0092\u0003\u0092\u0417"+
+ "\b\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001"+
+ "\u0093\u0003\u0093\u041f\b\u0093\u0001\u0094\u0001\u0094\u0001\u0095\u0001"+
+ "\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0004\u0096\u0428\b\u0096\u000b"+
+ "\u0096\f\u0096\u0429\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001"+
+ "\u0097\u0001\u0097\u0005\u0097\u0432\b\u0097\n\u0097\f\u0097\u0435\t\u0097"+
+ "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+
+ "\u0001\u0098\u0001\u0098\u0001\u0098\u0005\u0098\u0440\b\u0098\n\u0098"+
+ "\f\u0098\u0443\t\u0098\u0001\u0098\u0001\u0098\u0001\u0433\u0000\u0099"+
+ "\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r"+
+ "\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e"+
+ "\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017"+
+ "/\u00181\u00193\u001a5\u001b7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%"+
+ "K&M\'O(Q)S*U+W,Y-[.]/_0a1c2e3g\u0000i\u0000k\u0000m\u0000o\u0000q\u0000"+
+ "s\u0000u\u0000w\u0000y\u0000{\u0000}\u0000\u007f\u0000\u0081\u0000\u0083"+
+ "\u0000\u0085\u0000\u0087\u0000\u0089\u0000\u008b\u0000\u008d\u0000\u008f"+
+ "\u0000\u0091\u0000\u0093\u0000\u0095\u0000\u0097\u0000\u0099\u0000\u009b"+
+ "\u0000\u009d4\u009f\u0000\u00a1\u0000\u00a3\u0000\u00a5\u0000\u00a7\u0000"+
+ "\u00a9\u0000\u00ab\u0000\u00ad\u0000\u00af\u0000\u00b1\u0000\u00b35\u00b5"+
+ "6\u00b7\u0000\u00b97\u00bb\u0000\u00bd\u0000\u00bf\u0000\u00c1\u0000\u00c3"+
+ "\u0000\u00c5\u0000\u00c78\u00c99\u00cb:\u00cd;\u00cf<\u00d1=\u00d3>\u00d5"+
+ "?\u00d7@\u00d9A\u00dbB\u00ddC\u00dfD\u00e1E\u00e3F\u00e5G\u00e7H\u00e9"+
+ "I\u00ebJ\u00edK\u00efL\u00f1M\u00f3N\u00f5O\u00f7P\u00f9Q\u00fbR\u00fd"+
+ "S\u00ffT\u0101U\u0103V\u0105W\u0107X\u0109Y\u010bZ\u010d[\u010f\\\u0111"+
+ "]\u0113^\u0115_\u0117`\u0119a\u011bb\u011dc\u011fd\u0121e\u0123f\u0125"+
+ "\u0000\u0127\u0000\u0129g\u012bh\u012di\u012fj\u0131k\u0001\u0000\u0016"+
+ "\u0002\u0000LLll\u0001\u000019\u0002\u0000XXxx\u0003\u000009AFaf\u0001"+
+ "\u000007\u0002\u0000BBbb\u0001\u000001\u0002\u0000EEee\u0002\u0000++-"+
+ "-\u0004\u0000DDFFddff\u0002\u0000PPpp\u0002\u0000\'\'\\\\\u0002\u0000"+
+ "\"\"\\\\\b\u0000\"\"\'\'\\\\bbffnnrrtt\u0001\u000003\u0004\u0000$$AZ_"+
+ "_az\u0002\u0000\u0000\u007f\u8000\ud800\u8000\udbff\u0001\u0000\u8000"+
+ "\ud800\u8000\udbff\u0001\u0000\u8000\udc00\u8000\udfff\u0005\u0000$$0"+
+ "9AZ__az\u0003\u0000\t\n\f\r \u0002\u0000\n\n\r\r\u0454\u0000\u0001\u0001"+
+ "\u0000\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001"+
+ "\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000"+
+ "\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000"+
+ "\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000"+
+ "\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000"+
+ "\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000"+
+ "\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000"+
+ "\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000"+
+ "\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'"+
+ "\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000"+
+ "\u0000\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000"+
+ "\u00001\u0001\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00005"+
+ "\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000\u0000\u00009\u0001\u0000"+
+ "\u0000\u0000\u0000;\u0001\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000"+
+ "\u0000?\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C"+
+ "\u0001\u0000\u0000\u0000\u0000E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000"+
+ "\u0000\u0000\u0000I\u0001\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000"+
+ "\u0000M\u0001\u0000\u0000\u0000\u0000O\u0001\u0000\u0000\u0000\u0000Q"+
+ "\u0001\u0000\u0000\u0000\u0000S\u0001\u0000\u0000\u0000\u0000U\u0001\u0000"+
+ "\u0000\u0000\u0000W\u0001\u0000\u0000\u0000\u0000Y\u0001\u0000\u0000\u0000"+
+ "\u0000[\u0001\u0000\u0000\u0000\u0000]\u0001\u0000\u0000\u0000\u0000_"+
+ "\u0001\u0000\u0000\u0000\u0000a\u0001\u0000\u0000\u0000\u0000c\u0001\u0000"+
+ "\u0000\u0000\u0000e\u0001\u0000\u0000\u0000\u0000\u009d\u0001\u0000\u0000"+
+ "\u0000\u0000\u00b3\u0001\u0000\u0000\u0000\u0000\u00b5\u0001\u0000\u0000"+
+ "\u0000\u0000\u00b9\u0001\u0000\u0000\u0000\u0000\u00c7\u0001\u0000\u0000"+
+ "\u0000\u0000\u00c9\u0001\u0000\u0000\u0000\u0000\u00cb\u0001\u0000\u0000"+
+ "\u0000\u0000\u00cd\u0001\u0000\u0000\u0000\u0000\u00cf\u0001\u0000\u0000"+
+ "\u0000\u0000\u00d1\u0001\u0000\u0000\u0000\u0000\u00d3\u0001\u0000\u0000"+
+ "\u0000\u0000\u00d5\u0001\u0000\u0000\u0000\u0000\u00d7\u0001\u0000\u0000"+
+ "\u0000\u0000\u00d9\u0001\u0000\u0000\u0000\u0000\u00db\u0001\u0000\u0000"+
+ "\u0000\u0000\u00dd\u0001\u0000\u0000\u0000\u0000\u00df\u0001\u0000\u0000"+
+ "\u0000\u0000\u00e1\u0001\u0000\u0000\u0000\u0000\u00e3\u0001\u0000\u0000"+
+ "\u0000\u0000\u00e5\u0001\u0000\u0000\u0000\u0000\u00e7\u0001\u0000\u0000"+
+ "\u0000\u0000\u00e9\u0001\u0000\u0000\u0000\u0000\u00eb\u0001\u0000\u0000"+
+ "\u0000\u0000\u00ed\u0001\u0000\u0000\u0000\u0000\u00ef\u0001\u0000\u0000"+
+ "\u0000\u0000\u00f1\u0001\u0000\u0000\u0000\u0000\u00f3\u0001\u0000\u0000"+
+ "\u0000\u0000\u00f5\u0001\u0000\u0000\u0000\u0000\u00f7\u0001\u0000\u0000"+
+ "\u0000\u0000\u00f9\u0001\u0000\u0000\u0000\u0000\u00fb\u0001\u0000\u0000"+
+ "\u0000\u0000\u00fd\u0001\u0000\u0000\u0000\u0000\u00ff\u0001\u0000\u0000"+
+ "\u0000\u0000\u0101\u0001\u0000\u0000\u0000\u0000\u0103\u0001\u0000\u0000"+
+ "\u0000\u0000\u0105\u0001\u0000\u0000\u0000\u0000\u0107\u0001\u0000\u0000"+
+ "\u0000\u0000\u0109\u0001\u0000\u0000\u0000\u0000\u010b\u0001\u0000\u0000"+
+ "\u0000\u0000\u010d\u0001\u0000\u0000\u0000\u0000\u010f\u0001\u0000\u0000"+
+ "\u0000\u0000\u0111\u0001\u0000\u0000\u0000\u0000\u0113\u0001\u0000\u0000"+
+ "\u0000\u0000\u0115\u0001\u0000\u0000\u0000\u0000\u0117\u0001\u0000\u0000"+
+ "\u0000\u0000\u0119\u0001\u0000\u0000\u0000\u0000\u011b\u0001\u0000\u0000"+
+ "\u0000\u0000\u011d\u0001\u0000\u0000\u0000\u0000\u011f\u0001\u0000\u0000"+
+ "\u0000\u0000\u0121\u0001\u0000\u0000\u0000\u0000\u0123\u0001\u0000\u0000"+
+ "\u0000\u0000\u0129\u0001\u0000\u0000\u0000\u0000\u012b\u0001\u0000\u0000"+
+ "\u0000\u0000\u012d\u0001\u0000\u0000\u0000\u0000\u012f\u0001\u0000\u0000"+
+ "\u0000\u0000\u0131\u0001\u0000\u0000\u0000\u0001\u0133\u0001\u0000\u0000"+
+ "\u0000\u0003\u013c\u0001\u0000\u0000\u0000\u0005\u0143\u0001\u0000\u0000"+
+ "\u0000\u0007\u014b\u0001\u0000\u0000\u0000\t\u0151\u0001\u0000\u0000\u0000"+
+ "\u000b\u0156\u0001\u0000\u0000\u0000\r\u015b\u0001\u0000\u0000\u0000\u000f"+
+ "\u0161\u0001\u0000\u0000\u0000\u0011\u0166\u0001\u0000\u0000\u0000\u0013"+
+ "\u016c\u0001\u0000\u0000\u0000\u0015\u0172\u0001\u0000\u0000\u0000\u0017"+
+ "\u017b\u0001\u0000\u0000\u0000\u0019\u0183\u0001\u0000\u0000\u0000\u001b"+
+ "\u0186\u0001\u0000\u0000\u0000\u001d\u018d\u0001\u0000\u0000\u0000\u001f"+
+ "\u0192\u0001\u0000\u0000\u0000!\u0197\u0001\u0000\u0000\u0000#\u019f\u0001"+
+ "\u0000\u0000\u0000%\u01a5\u0001\u0000\u0000\u0000\'\u01ad\u0001\u0000"+
+ "\u0000\u0000)\u01b3\u0001\u0000\u0000\u0000+\u01b7\u0001\u0000\u0000\u0000"+
+ "-\u01ba\u0001\u0000\u0000\u0000/\u01bf\u0001\u0000\u0000\u00001\u01ca"+
+ "\u0001\u0000\u0000\u00003\u01d1\u0001\u0000\u0000\u00005\u01dc\u0001\u0000"+
+ "\u0000\u00007\u01e0\u0001\u0000\u0000\u00009\u01ea\u0001\u0000\u0000\u0000"+
+ ";\u01ef\u0001\u0000\u0000\u0000=\u01f6\u0001\u0000\u0000\u0000?\u01fa"+
+ "\u0001\u0000\u0000\u0000A\u0202\u0001\u0000\u0000\u0000C\u020a\u0001\u0000"+
+ "\u0000\u0000E\u0214\u0001\u0000\u0000\u0000G\u021b\u0001\u0000\u0000\u0000"+
+ "I\u0222\u0001\u0000\u0000\u0000K\u0228\u0001\u0000\u0000\u0000M\u022f"+
+ "\u0001\u0000\u0000\u0000O\u0238\u0001\u0000\u0000\u0000Q\u023e\u0001\u0000"+
+ "\u0000\u0000S\u0245\u0001\u0000\u0000\u0000U\u0252\u0001\u0000\u0000\u0000"+
+ "W\u0257\u0001\u0000\u0000\u0000Y\u025d\u0001\u0000\u0000\u0000[\u0264"+
+ "\u0001\u0000\u0000\u0000]\u026e\u0001\u0000\u0000\u0000_\u0272\u0001\u0000"+
+ "\u0000\u0000a\u0277\u0001\u0000\u0000\u0000c\u0280\u0001\u0000\u0000\u0000"+
+ "e\u028a\u0001\u0000\u0000\u0000g\u028c\u0001\u0000\u0000\u0000i\u0290"+
+ "\u0001\u0000\u0000\u0000k\u0294\u0001\u0000\u0000\u0000m\u0298\u0001\u0000"+
+ "\u0000\u0000o\u029c\u0001\u0000\u0000\u0000q\u02a8\u0001\u0000\u0000\u0000"+
+ "s\u02aa\u0001\u0000\u0000\u0000u\u02b3\u0001\u0000\u0000\u0000w\u02b5"+
+ "\u0001\u0000\u0000\u0000y\u02b8\u0001\u0000\u0000\u0000{\u02be\u0001\u0000"+
+ "\u0000\u0000}\u02c1\u0001\u0000\u0000\u0000\u007f\u02c5\u0001\u0000\u0000"+
+ "\u0000\u0081\u02c9\u0001\u0000\u0000\u0000\u0083\u02d0\u0001\u0000\u0000"+
+ "\u0000\u0085\u02d3\u0001\u0000\u0000\u0000\u0087\u02d9\u0001\u0000\u0000"+
+ "\u0000\u0089\u02db\u0001\u0000\u0000\u0000\u008b\u02e1\u0001\u0000\u0000"+
+ "\u0000\u008d\u02e8\u0001\u0000\u0000\u0000\u008f\u02eb\u0001\u0000\u0000"+
+ "\u0000\u0091\u02f1\u0001\u0000\u0000\u0000\u0093\u02f3\u0001\u0000\u0000"+
+ "\u0000\u0095\u02f7\u0001\u0000\u0000\u0000\u0097\u02fe\u0001\u0000\u0000"+
+ "\u0000\u0099\u0301\u0001\u0000\u0000\u0000\u009b\u0307\u0001\u0000\u0000"+
+ "\u0000\u009d\u030b\u0001\u0000\u0000\u0000\u009f\u0328\u0001\u0000\u0000"+
+ "\u0000\u00a1\u032a\u0001\u0000\u0000\u0000\u00a3\u032d\u0001\u0000\u0000"+
+ "\u0000\u00a5\u0330\u0001\u0000\u0000\u0000\u00a7\u0334\u0001\u0000\u0000"+
+ "\u0000\u00a9\u0336\u0001\u0000\u0000\u0000\u00ab\u0338\u0001\u0000\u0000"+
+ "\u0000\u00ad\u0348\u0001\u0000\u0000\u0000\u00af\u034a\u0001\u0000\u0000"+
+ "\u0000\u00b1\u034d\u0001\u0000\u0000\u0000\u00b3\u0358\u0001\u0000\u0000"+
+ "\u0000\u00b5\u0362\u0001\u0000\u0000\u0000\u00b7\u0364\u0001\u0000\u0000"+
+ "\u0000\u00b9\u0366\u0001\u0000\u0000\u0000\u00bb\u036d\u0001\u0000\u0000"+
+ "\u0000\u00bd\u0373\u0001\u0000\u0000\u0000\u00bf\u0379\u0001\u0000\u0000"+
+ "\u0000\u00c1\u0386\u0001\u0000\u0000\u0000\u00c3\u0388\u0001\u0000\u0000"+
+ "\u0000\u00c5\u038a\u0001\u0000\u0000\u0000\u00c7\u0391\u0001\u0000\u0000"+
+ "\u0000\u00c9\u0396\u0001\u0000\u0000\u0000\u00cb\u0398\u0001\u0000\u0000"+
+ "\u0000\u00cd\u039a\u0001\u0000\u0000\u0000\u00cf\u039c\u0001\u0000\u0000"+
+ "\u0000\u00d1\u039e\u0001\u0000\u0000\u0000\u00d3\u03a0\u0001\u0000\u0000"+
+ "\u0000\u00d5\u03a2\u0001\u0000\u0000\u0000\u00d7\u03a4\u0001\u0000\u0000"+
+ "\u0000\u00d9\u03a6\u0001\u0000\u0000\u0000\u00db\u03a8\u0001\u0000\u0000"+
+ "\u0000\u00dd\u03aa\u0001\u0000\u0000\u0000\u00df\u03ac\u0001\u0000\u0000"+
+ "\u0000\u00e1\u03ae\u0001\u0000\u0000\u0000\u00e3\u03b0\u0001\u0000\u0000"+
+ "\u0000\u00e5\u03b2\u0001\u0000\u0000\u0000\u00e7\u03b4\u0001\u0000\u0000"+
+ "\u0000\u00e9\u03b6\u0001\u0000\u0000\u0000\u00eb\u03b9\u0001\u0000\u0000"+
+ "\u0000\u00ed\u03bc\u0001\u0000\u0000\u0000\u00ef\u03bf\u0001\u0000\u0000"+
+ "\u0000\u00f1\u03c2\u0001\u0000\u0000\u0000\u00f3\u03c5\u0001\u0000\u0000"+
+ "\u0000\u00f5\u03c8\u0001\u0000\u0000\u0000\u00f7\u03cb\u0001\u0000\u0000"+
+ "\u0000\u00f9\u03ce\u0001\u0000\u0000\u0000\u00fb\u03d0\u0001\u0000\u0000"+
+ "\u0000\u00fd\u03d2\u0001\u0000\u0000\u0000\u00ff\u03d4\u0001\u0000\u0000"+
+ "\u0000\u0101\u03d6\u0001\u0000\u0000\u0000\u0103\u03d8\u0001\u0000\u0000"+
+ "\u0000\u0105\u03da\u0001\u0000\u0000\u0000\u0107\u03dc\u0001\u0000\u0000"+
+ "\u0000\u0109\u03de\u0001\u0000\u0000\u0000\u010b\u03e1\u0001\u0000\u0000"+
+ "\u0000\u010d\u03e4\u0001\u0000\u0000\u0000\u010f\u03e7\u0001\u0000\u0000"+
+ "\u0000\u0111\u03ea\u0001\u0000\u0000\u0000\u0113\u03ed\u0001\u0000\u0000"+
+ "\u0000\u0115\u03f0\u0001\u0000\u0000\u0000\u0117\u03f3\u0001\u0000\u0000"+
+ "\u0000\u0119\u03f6\u0001\u0000\u0000\u0000\u011b\u03f9\u0001\u0000\u0000"+
+ "\u0000\u011d\u03fc\u0001\u0000\u0000\u0000\u011f\u0400\u0001\u0000\u0000"+
+ "\u0000\u0121\u0404\u0001\u0000\u0000\u0000\u0123\u0409\u0001\u0000\u0000"+
+ "\u0000\u0125\u0416\u0001\u0000\u0000\u0000\u0127\u041e\u0001\u0000\u0000"+
+ "\u0000\u0129\u0420\u0001\u0000\u0000\u0000\u012b\u0422\u0001\u0000\u0000"+
+ "\u0000\u012d\u0427\u0001\u0000\u0000\u0000\u012f\u042d\u0001\u0000\u0000"+
+ "\u0000\u0131\u043b\u0001\u0000\u0000\u0000\u0133\u0134\u0005a\u0000\u0000"+
+ "\u0134\u0135\u0005b\u0000\u0000\u0135\u0136\u0005s\u0000\u0000\u0136\u0137"+
+ "\u0005t\u0000\u0000\u0137\u0138\u0005r\u0000\u0000\u0138\u0139\u0005a"+
+ "\u0000\u0000\u0139\u013a\u0005c\u0000\u0000\u013a\u013b\u0005t\u0000\u0000"+
+ "\u013b\u0002\u0001\u0000\u0000\u0000\u013c\u013d\u0005a\u0000\u0000\u013d"+
+ "\u013e\u0005s\u0000\u0000\u013e\u013f\u0005s\u0000\u0000\u013f\u0140\u0005"+
+ "e\u0000\u0000\u0140\u0141\u0005r\u0000\u0000\u0141\u0142\u0005t\u0000"+
+ "\u0000\u0142\u0004\u0001\u0000\u0000\u0000\u0143\u0144\u0005b\u0000\u0000"+
+ "\u0144\u0145\u0005o\u0000\u0000\u0145\u0146\u0005o\u0000\u0000\u0146\u0147"+
+ "\u0005l\u0000\u0000\u0147\u0148\u0005e\u0000\u0000\u0148\u0149\u0005a"+
+ "\u0000\u0000\u0149\u014a\u0005n\u0000\u0000\u014a\u0006\u0001\u0000\u0000"+
+ "\u0000\u014b\u014c\u0005b\u0000\u0000\u014c\u014d\u0005r\u0000\u0000\u014d"+
+ "\u014e\u0005e\u0000\u0000\u014e\u014f\u0005a\u0000\u0000\u014f\u0150\u0005"+
+ "k\u0000\u0000\u0150\b\u0001\u0000\u0000\u0000\u0151\u0152\u0005b\u0000"+
+ "\u0000\u0152\u0153\u0005y\u0000\u0000\u0153\u0154\u0005t\u0000\u0000\u0154"+
+ "\u0155\u0005e\u0000\u0000\u0155\n\u0001\u0000\u0000\u0000\u0156\u0157"+
+ "\u0005c\u0000\u0000\u0157\u0158\u0005a\u0000\u0000\u0158\u0159\u0005s"+
+ "\u0000\u0000\u0159\u015a\u0005e\u0000\u0000\u015a\f\u0001\u0000\u0000"+
+ "\u0000\u015b\u015c\u0005c\u0000\u0000\u015c\u015d\u0005a\u0000\u0000\u015d"+
+ "\u015e\u0005t\u0000\u0000\u015e\u015f\u0005c\u0000\u0000\u015f\u0160\u0005"+
+ "h\u0000\u0000\u0160\u000e\u0001\u0000\u0000\u0000\u0161\u0162\u0005c\u0000"+
+ "\u0000\u0162\u0163\u0005h\u0000\u0000\u0163\u0164\u0005a\u0000\u0000\u0164"+
+ "\u0165\u0005r\u0000\u0000\u0165\u0010\u0001\u0000\u0000\u0000\u0166\u0167"+
+ "\u0005c\u0000\u0000\u0167\u0168\u0005l\u0000\u0000\u0168\u0169\u0005a"+
+ "\u0000\u0000\u0169\u016a\u0005s\u0000\u0000\u016a\u016b\u0005s\u0000\u0000"+
+ "\u016b\u0012\u0001\u0000\u0000\u0000\u016c\u016d\u0005c\u0000\u0000\u016d"+
+ "\u016e\u0005o\u0000\u0000\u016e\u016f\u0005n\u0000\u0000\u016f\u0170\u0005"+
+ "s\u0000\u0000\u0170\u0171\u0005t\u0000\u0000\u0171\u0014\u0001\u0000\u0000"+
+ "\u0000\u0172\u0173\u0005c\u0000\u0000\u0173\u0174\u0005o\u0000\u0000\u0174"+
+ "\u0175\u0005n\u0000\u0000\u0175\u0176\u0005t\u0000\u0000\u0176\u0177\u0005"+
+ "i\u0000\u0000\u0177\u0178\u0005n\u0000\u0000\u0178\u0179\u0005u\u0000"+
+ "\u0000\u0179\u017a\u0005e\u0000\u0000\u017a\u0016\u0001\u0000\u0000\u0000"+
+ "\u017b\u017c\u0005d\u0000\u0000\u017c\u017d\u0005e\u0000\u0000\u017d\u017e"+
+ "\u0005f\u0000\u0000\u017e\u017f\u0005a\u0000\u0000\u017f\u0180\u0005u"+
+ "\u0000\u0000\u0180\u0181\u0005l\u0000\u0000\u0181\u0182\u0005t\u0000\u0000"+
+ "\u0182\u0018\u0001\u0000\u0000\u0000\u0183\u0184\u0005d\u0000\u0000\u0184"+
+ "\u0185\u0005o\u0000\u0000\u0185\u001a\u0001\u0000\u0000\u0000\u0186\u0187"+
+ "\u0005d\u0000\u0000\u0187\u0188\u0005o\u0000\u0000\u0188\u0189\u0005u"+
+ "\u0000\u0000\u0189\u018a\u0005b\u0000\u0000\u018a\u018b\u0005l\u0000\u0000"+
+ "\u018b\u018c\u0005e\u0000\u0000\u018c\u001c\u0001\u0000\u0000\u0000\u018d"+
+ "\u018e\u0005e\u0000\u0000\u018e\u018f\u0005l\u0000\u0000\u018f\u0190\u0005"+
+ "s\u0000\u0000\u0190\u0191\u0005e\u0000\u0000\u0191\u001e\u0001\u0000\u0000"+
+ "\u0000\u0192\u0193\u0005e\u0000\u0000\u0193\u0194\u0005n\u0000\u0000\u0194"+
+ "\u0195\u0005u\u0000\u0000\u0195\u0196\u0005m\u0000\u0000\u0196 \u0001"+
+ "\u0000\u0000\u0000\u0197\u0198\u0005e\u0000\u0000\u0198\u0199\u0005x\u0000"+
+ "\u0000\u0199\u019a\u0005t\u0000\u0000\u019a\u019b\u0005e\u0000\u0000\u019b"+
+ "\u019c\u0005n\u0000\u0000\u019c\u019d\u0005d\u0000\u0000\u019d\u019e\u0005"+
+ "s\u0000\u0000\u019e\"\u0001\u0000\u0000\u0000\u019f\u01a0\u0005f\u0000"+
+ "\u0000\u01a0\u01a1\u0005i\u0000\u0000\u01a1\u01a2\u0005n\u0000\u0000\u01a2"+
+ "\u01a3\u0005a\u0000\u0000\u01a3\u01a4\u0005l\u0000\u0000\u01a4$\u0001"+
+ "\u0000\u0000\u0000\u01a5\u01a6\u0005f\u0000\u0000\u01a6\u01a7\u0005i\u0000"+
+ "\u0000\u01a7\u01a8\u0005n\u0000\u0000\u01a8\u01a9\u0005a\u0000\u0000\u01a9"+
+ "\u01aa\u0005l\u0000\u0000\u01aa\u01ab\u0005l\u0000\u0000\u01ab\u01ac\u0005"+
+ "y\u0000\u0000\u01ac&\u0001\u0000\u0000\u0000\u01ad\u01ae\u0005f\u0000"+
+ "\u0000\u01ae\u01af\u0005l\u0000\u0000\u01af\u01b0\u0005o\u0000\u0000\u01b0"+
+ "\u01b1\u0005a\u0000\u0000\u01b1\u01b2\u0005t\u0000\u0000\u01b2(\u0001"+
+ "\u0000\u0000\u0000\u01b3\u01b4\u0005f\u0000\u0000\u01b4\u01b5\u0005o\u0000"+
+ "\u0000\u01b5\u01b6\u0005r\u0000\u0000\u01b6*\u0001\u0000\u0000\u0000\u01b7"+
+ "\u01b8\u0005i\u0000\u0000\u01b8\u01b9\u0005f\u0000\u0000\u01b9,\u0001"+
+ "\u0000\u0000\u0000\u01ba\u01bb\u0005g\u0000\u0000\u01bb\u01bc\u0005o\u0000"+
+ "\u0000\u01bc\u01bd\u0005t\u0000\u0000\u01bd\u01be\u0005o\u0000\u0000\u01be"+
+ ".\u0001\u0000\u0000\u0000\u01bf\u01c0\u0005i\u0000\u0000\u01c0\u01c1\u0005"+
+ "m\u0000\u0000\u01c1\u01c2\u0005p\u0000\u0000\u01c2\u01c3\u0005l\u0000"+
+ "\u0000\u01c3\u01c4\u0005e\u0000\u0000\u01c4\u01c5\u0005m\u0000\u0000\u01c5"+
+ "\u01c6\u0005e\u0000\u0000\u01c6\u01c7\u0005n\u0000\u0000\u01c7\u01c8\u0005"+
+ "t\u0000\u0000\u01c8\u01c9\u0005s\u0000\u0000\u01c90\u0001\u0000\u0000"+
+ "\u0000\u01ca\u01cb\u0005i\u0000\u0000\u01cb\u01cc\u0005m\u0000\u0000\u01cc"+
+ "\u01cd\u0005p\u0000\u0000\u01cd\u01ce\u0005o\u0000\u0000\u01ce\u01cf\u0005"+
+ "r\u0000\u0000\u01cf\u01d0\u0005t\u0000\u0000\u01d02\u0001\u0000\u0000"+
+ "\u0000\u01d1\u01d2\u0005i\u0000\u0000\u01d2\u01d3\u0005n\u0000\u0000\u01d3"+
+ "\u01d4\u0005s\u0000\u0000\u01d4\u01d5\u0005t\u0000\u0000\u01d5\u01d6\u0005"+
+ "a\u0000\u0000\u01d6\u01d7\u0005n\u0000\u0000\u01d7\u01d8\u0005c\u0000"+
+ "\u0000\u01d8\u01d9\u0005e\u0000\u0000\u01d9\u01da\u0005o\u0000\u0000\u01da"+
+ "\u01db\u0005f\u0000\u0000\u01db4\u0001\u0000\u0000\u0000\u01dc\u01dd\u0005"+
+ "i\u0000\u0000\u01dd\u01de\u0005n\u0000\u0000\u01de\u01df\u0005t\u0000"+
+ "\u0000\u01df6\u0001\u0000\u0000\u0000\u01e0\u01e1\u0005i\u0000\u0000\u01e1"+
+ "\u01e2\u0005n\u0000\u0000\u01e2\u01e3\u0005t\u0000\u0000\u01e3\u01e4\u0005"+
+ "e\u0000\u0000\u01e4\u01e5\u0005r\u0000\u0000\u01e5\u01e6\u0005f\u0000"+
+ "\u0000\u01e6\u01e7\u0005a\u0000\u0000\u01e7\u01e8\u0005c\u0000\u0000\u01e8"+
+ "\u01e9\u0005e\u0000\u0000\u01e98\u0001\u0000\u0000\u0000\u01ea\u01eb\u0005"+
+ "l\u0000\u0000\u01eb\u01ec\u0005o\u0000\u0000\u01ec\u01ed\u0005n\u0000"+
+ "\u0000\u01ed\u01ee\u0005g\u0000\u0000\u01ee:\u0001\u0000\u0000\u0000\u01ef"+
+ "\u01f0\u0005n\u0000\u0000\u01f0\u01f1\u0005a\u0000\u0000\u01f1\u01f2\u0005"+
+ "t\u0000\u0000\u01f2\u01f3\u0005i\u0000\u0000\u01f3\u01f4\u0005v\u0000"+
+ "\u0000\u01f4\u01f5\u0005e\u0000\u0000\u01f5<\u0001\u0000\u0000\u0000\u01f6"+
+ "\u01f7\u0005n\u0000\u0000\u01f7\u01f8\u0005e\u0000\u0000\u01f8\u01f9\u0005"+
+ "w\u0000\u0000\u01f9>\u0001\u0000\u0000\u0000\u01fa\u01fb\u0005p\u0000"+
+ "\u0000\u01fb\u01fc\u0005a\u0000\u0000\u01fc\u01fd\u0005c\u0000\u0000\u01fd"+
+ "\u01fe\u0005k\u0000\u0000\u01fe\u01ff\u0005a\u0000\u0000\u01ff\u0200\u0005"+
+ "g\u0000\u0000\u0200\u0201\u0005e\u0000\u0000\u0201@\u0001\u0000\u0000"+
+ "\u0000\u0202\u0203\u0005p\u0000\u0000\u0203\u0204\u0005r\u0000\u0000\u0204"+
+ "\u0205\u0005i\u0000\u0000\u0205\u0206\u0005v\u0000\u0000\u0206\u0207\u0005"+
+ "a\u0000\u0000\u0207\u0208\u0005t\u0000\u0000\u0208\u0209\u0005e\u0000"+
+ "\u0000\u0209B\u0001\u0000\u0000\u0000\u020a\u020b\u0005p\u0000\u0000\u020b"+
+ "\u020c\u0005r\u0000\u0000\u020c\u020d\u0005o\u0000\u0000\u020d\u020e\u0005"+
+ "t\u0000\u0000\u020e\u020f\u0005e\u0000\u0000\u020f\u0210\u0005c\u0000"+
+ "\u0000\u0210\u0211\u0005t\u0000\u0000\u0211\u0212\u0005e\u0000\u0000\u0212"+
+ "\u0213\u0005d\u0000\u0000\u0213D\u0001\u0000\u0000\u0000\u0214\u0215\u0005"+
+ "p\u0000\u0000\u0215\u0216\u0005u\u0000\u0000\u0216\u0217\u0005b\u0000"+
+ "\u0000\u0217\u0218\u0005l\u0000\u0000\u0218\u0219\u0005i\u0000\u0000\u0219"+
+ "\u021a\u0005c\u0000\u0000\u021aF\u0001\u0000\u0000\u0000\u021b\u021c\u0005"+
+ "r\u0000\u0000\u021c\u021d\u0005e\u0000\u0000\u021d\u021e\u0005t\u0000"+
+ "\u0000\u021e\u021f\u0005u\u0000\u0000\u021f\u0220\u0005r\u0000\u0000\u0220"+
+ "\u0221\u0005n\u0000\u0000\u0221H\u0001\u0000\u0000\u0000\u0222\u0223\u0005"+
+ "s\u0000\u0000\u0223\u0224\u0005h\u0000\u0000\u0224\u0225\u0005o\u0000"+
+ "\u0000\u0225\u0226\u0005r\u0000\u0000\u0226\u0227\u0005t\u0000\u0000\u0227"+
+ "J\u0001\u0000\u0000\u0000\u0228\u0229\u0005s\u0000\u0000\u0229\u022a\u0005"+
+ "t\u0000\u0000\u022a\u022b\u0005a\u0000\u0000\u022b\u022c\u0005t\u0000"+
+ "\u0000\u022c\u022d\u0005i\u0000\u0000\u022d\u022e\u0005c\u0000\u0000\u022e"+
+ "L\u0001\u0000\u0000\u0000\u022f\u0230\u0005s\u0000\u0000\u0230\u0231\u0005"+
+ "t\u0000\u0000\u0231\u0232\u0005r\u0000\u0000\u0232\u0233\u0005i\u0000"+
+ "\u0000\u0233\u0234\u0005c\u0000\u0000\u0234\u0235\u0005t\u0000\u0000\u0235"+
+ "\u0236\u0005f\u0000\u0000\u0236\u0237\u0005p\u0000\u0000\u0237N\u0001"+
+ "\u0000\u0000\u0000\u0238\u0239\u0005s\u0000\u0000\u0239\u023a\u0005u\u0000"+
+ "\u0000\u023a\u023b\u0005p\u0000\u0000\u023b\u023c\u0005e\u0000\u0000\u023c"+
+ "\u023d\u0005r\u0000\u0000\u023dP\u0001\u0000\u0000\u0000\u023e\u023f\u0005"+
+ "s\u0000\u0000\u023f\u0240\u0005w\u0000\u0000\u0240\u0241\u0005i\u0000"+
+ "\u0000\u0241\u0242\u0005t\u0000\u0000\u0242\u0243\u0005c\u0000\u0000\u0243"+
+ "\u0244\u0005h\u0000\u0000\u0244R\u0001\u0000\u0000\u0000\u0245\u0246\u0005"+
+ "s\u0000\u0000\u0246\u0247\u0005y\u0000\u0000\u0247\u0248\u0005n\u0000"+
+ "\u0000\u0248\u0249\u0005c\u0000\u0000\u0249\u024a\u0005h\u0000\u0000\u024a"+
+ "\u024b\u0005r\u0000\u0000\u024b\u024c\u0005o\u0000\u0000\u024c\u024d\u0005"+
+ "n\u0000\u0000\u024d\u024e\u0005i\u0000\u0000\u024e\u024f\u0005z\u0000"+
+ "\u0000\u024f\u0250\u0005e\u0000\u0000\u0250\u0251\u0005d\u0000\u0000\u0251"+
+ "T\u0001\u0000\u0000\u0000\u0252\u0253\u0005t\u0000\u0000\u0253\u0254\u0005"+
+ "h\u0000\u0000\u0254\u0255\u0005i\u0000\u0000\u0255\u0256\u0005s\u0000"+
+ "\u0000\u0256V\u0001\u0000\u0000\u0000\u0257\u0258\u0005t\u0000\u0000\u0258"+
+ "\u0259\u0005h\u0000\u0000\u0259\u025a\u0005r\u0000\u0000\u025a\u025b\u0005"+
+ "o\u0000\u0000\u025b\u025c\u0005w\u0000\u0000\u025cX\u0001\u0000\u0000"+
+ "\u0000\u025d\u025e\u0005t\u0000\u0000\u025e\u025f\u0005h\u0000\u0000\u025f"+
+ "\u0260\u0005r\u0000\u0000\u0260\u0261\u0005o\u0000\u0000\u0261\u0262\u0005"+
+ "w\u0000\u0000\u0262\u0263\u0005s\u0000\u0000\u0263Z\u0001\u0000\u0000"+
+ "\u0000\u0264\u0265\u0005t\u0000\u0000\u0265\u0266\u0005r\u0000\u0000\u0266"+
+ "\u0267\u0005a\u0000\u0000\u0267\u0268\u0005n\u0000\u0000\u0268\u0269\u0005"+
+ "s\u0000\u0000\u0269\u026a\u0005i\u0000\u0000\u026a\u026b\u0005e\u0000"+
+ "\u0000\u026b\u026c\u0005n\u0000\u0000\u026c\u026d\u0005t\u0000\u0000\u026d"+
+ "\\\u0001\u0000\u0000\u0000\u026e\u026f\u0005t\u0000\u0000\u026f\u0270"+
+ "\u0005r\u0000\u0000\u0270\u0271\u0005y\u0000\u0000\u0271^\u0001\u0000"+
+ "\u0000\u0000\u0272\u0273\u0005v\u0000\u0000\u0273\u0274\u0005o\u0000\u0000"+
+ "\u0274\u0275\u0005i\u0000\u0000\u0275\u0276\u0005d\u0000\u0000\u0276`"+
+ "\u0001\u0000\u0000\u0000\u0277\u0278\u0005v\u0000\u0000\u0278\u0279\u0005"+
+ "o\u0000\u0000\u0279\u027a\u0005l\u0000\u0000\u027a\u027b\u0005a\u0000"+
+ "\u0000\u027b\u027c\u0005t\u0000\u0000\u027c\u027d\u0005i\u0000\u0000\u027d"+
+ "\u027e\u0005l\u0000\u0000\u027e\u027f\u0005e\u0000\u0000\u027fb\u0001"+
+ "\u0000\u0000\u0000\u0280\u0281\u0005w\u0000\u0000\u0281\u0282\u0005h\u0000"+
+ "\u0000\u0282\u0283\u0005i\u0000\u0000\u0283\u0284\u0005l\u0000\u0000\u0284"+
+ "\u0285\u0005e\u0000\u0000\u0285d\u0001\u0000\u0000\u0000\u0286\u028b\u0003"+
+ "g3\u0000\u0287\u028b\u0003i4\u0000\u0288\u028b\u0003k5\u0000\u0289\u028b"+
+ "\u0003m6\u0000\u028a\u0286\u0001\u0000\u0000\u0000\u028a\u0287\u0001\u0000"+
+ "\u0000\u0000\u028a\u0288\u0001\u0000\u0000\u0000\u028a\u0289\u0001\u0000"+
+ "\u0000\u0000\u028bf\u0001\u0000\u0000\u0000\u028c\u028e\u0003q8\u0000"+
+ "\u028d\u028f\u0003o7\u0000\u028e\u028d\u0001\u0000\u0000\u0000\u028e\u028f"+
+ "\u0001\u0000\u0000\u0000\u028fh\u0001\u0000\u0000\u0000\u0290\u0292\u0003"+
+ "\u007f?\u0000\u0291\u0293\u0003o7\u0000\u0292\u0291\u0001\u0000\u0000"+
+ "\u0000\u0292\u0293\u0001\u0000\u0000\u0000\u0293j\u0001\u0000\u0000\u0000"+
+ "\u0294\u0296\u0003\u0089D\u0000\u0295\u0297\u0003o7\u0000\u0296\u0295"+
+ "\u0001\u0000\u0000\u0000\u0296\u0297\u0001\u0000\u0000\u0000\u0297l\u0001"+
+ "\u0000\u0000\u0000\u0298\u029a\u0003\u0093I\u0000\u0299\u029b\u0003o7"+
+ "\u0000\u029a\u0299\u0001\u0000\u0000\u0000\u029a\u029b\u0001\u0000\u0000"+
+ "\u0000\u029bn\u0001\u0000\u0000\u0000\u029c\u029d\u0007\u0000\u0000\u0000"+
+ "\u029dp\u0001\u0000\u0000\u0000\u029e\u02a9\u00050\u0000\u0000\u029f\u02a6"+
+ "\u0003w;\u0000\u02a0\u02a2\u0003s9\u0000\u02a1\u02a0\u0001\u0000\u0000"+
+ "\u0000\u02a1\u02a2\u0001\u0000\u0000\u0000\u02a2\u02a7\u0001\u0000\u0000"+
+ "\u0000\u02a3\u02a4\u0003}>\u0000\u02a4\u02a5\u0003s9\u0000\u02a5\u02a7"+
+ "\u0001\u0000\u0000\u0000\u02a6\u02a1\u0001\u0000\u0000\u0000\u02a6\u02a3"+
+ "\u0001\u0000\u0000\u0000\u02a7\u02a9\u0001\u0000\u0000\u0000\u02a8\u029e"+
+ "\u0001\u0000\u0000\u0000\u02a8\u029f\u0001\u0000\u0000\u0000\u02a9r\u0001"+
+ "\u0000\u0000\u0000\u02aa\u02af\u0003u:\u0000\u02ab\u02ad\u0003y<\u0000"+
+ "\u02ac\u02ab\u0001\u0000\u0000\u0000\u02ac\u02ad\u0001\u0000\u0000\u0000"+
+ "\u02ad\u02ae\u0001\u0000\u0000\u0000\u02ae\u02b0\u0003u:\u0000\u02af\u02ac"+
+ "\u0001\u0000\u0000\u0000\u02af\u02b0\u0001\u0000\u0000\u0000\u02b0t\u0001"+
+ "\u0000\u0000\u0000\u02b1\u02b4\u00050\u0000\u0000\u02b2\u02b4\u0003w;"+
+ "\u0000\u02b3\u02b1\u0001\u0000\u0000\u0000\u02b3\u02b2\u0001\u0000\u0000"+
+ "\u0000\u02b4v\u0001\u0000\u0000\u0000\u02b5\u02b6\u0007\u0001\u0000\u0000"+
+ "\u02b6x\u0001\u0000\u0000\u0000\u02b7\u02b9\u0003{=\u0000\u02b8\u02b7"+
+ "\u0001\u0000\u0000\u0000\u02b9\u02ba\u0001\u0000\u0000\u0000\u02ba\u02b8"+
+ "\u0001\u0000\u0000\u0000\u02ba\u02bb\u0001\u0000\u0000\u0000\u02bbz\u0001"+
+ "\u0000\u0000\u0000\u02bc\u02bf\u0003u:\u0000\u02bd\u02bf\u0005_\u0000"+
+ "\u0000\u02be\u02bc\u0001\u0000\u0000\u0000\u02be\u02bd\u0001\u0000\u0000"+
+ "\u0000\u02bf|\u0001\u0000\u0000\u0000\u02c0\u02c2\u0005_\u0000\u0000\u02c1"+
+ "\u02c0\u0001\u0000\u0000\u0000\u02c2\u02c3\u0001\u0000\u0000\u0000\u02c3"+
+ "\u02c1\u0001\u0000\u0000\u0000\u02c3\u02c4\u0001\u0000\u0000\u0000\u02c4"+
+ "~\u0001\u0000\u0000\u0000\u02c5\u02c6\u00050\u0000\u0000\u02c6\u02c7\u0007"+
+ "\u0002\u0000\u0000\u02c7\u02c8\u0003\u0081@\u0000\u02c8\u0080\u0001\u0000"+
+ "\u0000\u0000\u02c9\u02ce\u0003\u0083A\u0000\u02ca\u02cc\u0003\u0085B\u0000"+
+ "\u02cb\u02ca\u0001\u0000\u0000\u0000\u02cb\u02cc\u0001\u0000\u0000\u0000"+
+ "\u02cc\u02cd\u0001\u0000\u0000\u0000\u02cd\u02cf\u0003\u0083A\u0000\u02ce"+
+ "\u02cb\u0001\u0000\u0000\u0000\u02ce\u02cf\u0001\u0000\u0000\u0000\u02cf"+
+ "\u0082\u0001\u0000\u0000\u0000\u02d0\u02d1\u0007\u0003\u0000\u0000\u02d1"+
+ "\u0084\u0001\u0000\u0000\u0000\u02d2\u02d4\u0003\u0087C\u0000\u02d3\u02d2"+
+ "\u0001\u0000\u0000\u0000\u02d4\u02d5\u0001\u0000\u0000\u0000\u02d5\u02d3"+
+ "\u0001\u0000\u0000\u0000\u02d5\u02d6\u0001\u0000\u0000\u0000\u02d6\u0086"+
+ "\u0001\u0000\u0000\u0000\u02d7\u02da\u0003\u0083A\u0000\u02d8\u02da\u0005"+
+ "_\u0000\u0000\u02d9\u02d7\u0001\u0000\u0000\u0000\u02d9\u02d8\u0001\u0000"+
+ "\u0000\u0000\u02da\u0088\u0001\u0000\u0000\u0000\u02db\u02dd\u00050\u0000"+
+ "\u0000\u02dc\u02de\u0003}>\u0000\u02dd\u02dc\u0001\u0000\u0000\u0000\u02dd"+
+ "\u02de\u0001\u0000\u0000\u0000\u02de\u02df\u0001\u0000\u0000\u0000\u02df"+
+ "\u02e0\u0003\u008bE\u0000\u02e0\u008a\u0001\u0000\u0000\u0000\u02e1\u02e6"+
+ "\u0003\u008dF\u0000\u02e2\u02e4\u0003\u008fG\u0000\u02e3\u02e2\u0001\u0000"+
+ "\u0000\u0000\u02e3\u02e4\u0001\u0000\u0000\u0000\u02e4\u02e5\u0001\u0000"+
+ "\u0000\u0000\u02e5\u02e7\u0003\u008dF\u0000\u02e6\u02e3\u0001\u0000\u0000"+
+ "\u0000\u02e6\u02e7\u0001\u0000\u0000\u0000\u02e7\u008c\u0001\u0000\u0000"+
+ "\u0000\u02e8\u02e9\u0007\u0004\u0000\u0000\u02e9\u008e\u0001\u0000\u0000"+
+ "\u0000\u02ea\u02ec\u0003\u0091H\u0000\u02eb\u02ea\u0001\u0000\u0000\u0000"+
+ "\u02ec\u02ed\u0001\u0000\u0000\u0000\u02ed\u02eb\u0001\u0000\u0000\u0000"+
+ "\u02ed\u02ee\u0001\u0000\u0000\u0000\u02ee\u0090\u0001\u0000\u0000\u0000"+
+ "\u02ef\u02f2\u0003\u008dF\u0000\u02f0\u02f2\u0005_\u0000\u0000\u02f1\u02ef"+
+ "\u0001\u0000\u0000\u0000\u02f1\u02f0\u0001\u0000\u0000\u0000\u02f2\u0092"+
+ "\u0001\u0000\u0000\u0000\u02f3\u02f4\u00050\u0000\u0000\u02f4\u02f5\u0007"+
+ "\u0005\u0000\u0000\u02f5\u02f6\u0003\u0095J\u0000\u02f6\u0094\u0001\u0000"+
+ "\u0000\u0000\u02f7\u02fc\u0003\u0097K\u0000\u02f8\u02fa\u0003\u0099L\u0000"+
+ "\u02f9\u02f8\u0001\u0000\u0000\u0000\u02f9\u02fa\u0001\u0000\u0000\u0000"+
+ "\u02fa\u02fb\u0001\u0000\u0000\u0000\u02fb\u02fd\u0003\u0097K\u0000\u02fc"+
+ "\u02f9\u0001\u0000\u0000\u0000\u02fc\u02fd\u0001\u0000\u0000\u0000\u02fd"+
+ "\u0096\u0001\u0000\u0000\u0000\u02fe\u02ff\u0007\u0006\u0000\u0000\u02ff"+
+ "\u0098\u0001\u0000\u0000\u0000\u0300\u0302\u0003\u009bM\u0000\u0301\u0300"+
+ "\u0001\u0000\u0000\u0000\u0302\u0303\u0001\u0000\u0000\u0000\u0303\u0301"+
+ "\u0001\u0000\u0000\u0000\u0303\u0304\u0001\u0000\u0000\u0000\u0304\u009a"+
+ "\u0001\u0000\u0000\u0000\u0305\u0308\u0003\u0097K\u0000\u0306\u0308\u0005"+
+ "_\u0000\u0000\u0307\u0305\u0001\u0000\u0000\u0000\u0307\u0306\u0001\u0000"+
+ "\u0000\u0000\u0308\u009c\u0001\u0000\u0000\u0000\u0309\u030c\u0003\u009f"+
+ "O\u0000\u030a\u030c\u0003\u00abU\u0000\u030b\u0309\u0001\u0000\u0000\u0000"+
+ "\u030b\u030a\u0001\u0000\u0000\u0000\u030c\u009e\u0001\u0000\u0000\u0000"+
+ "\u030d\u030e\u0003s9\u0000\u030e\u0310\u0005.\u0000\u0000\u030f\u0311"+
+ "\u0003s9\u0000\u0310\u030f\u0001\u0000\u0000\u0000\u0310\u0311\u0001\u0000"+
+ "\u0000\u0000\u0311\u0313\u0001\u0000\u0000\u0000\u0312\u0314\u0003\u00a1"+
+ "P\u0000\u0313\u0312\u0001\u0000\u0000\u0000\u0313\u0314\u0001\u0000\u0000"+
+ "\u0000\u0314\u0316\u0001\u0000\u0000\u0000\u0315\u0317\u0003\u00a9T\u0000"+
+ "\u0316\u0315\u0001\u0000\u0000\u0000\u0316\u0317\u0001\u0000\u0000\u0000"+
+ "\u0317\u0329\u0001\u0000\u0000\u0000\u0318\u0319\u0005.\u0000\u0000\u0319"+
+ "\u031b\u0003s9\u0000\u031a\u031c\u0003\u00a1P\u0000\u031b\u031a\u0001"+
+ "\u0000\u0000\u0000\u031b\u031c\u0001\u0000\u0000\u0000\u031c\u031e\u0001"+
+ "\u0000\u0000\u0000\u031d\u031f\u0003\u00a9T\u0000\u031e\u031d\u0001\u0000"+
+ "\u0000\u0000\u031e\u031f\u0001\u0000\u0000\u0000\u031f\u0329\u0001\u0000"+
+ "\u0000\u0000\u0320\u0321\u0003s9\u0000\u0321\u0323\u0003\u00a1P\u0000"+
+ "\u0322\u0324\u0003\u00a9T\u0000\u0323\u0322\u0001\u0000\u0000\u0000\u0323"+
+ "\u0324\u0001\u0000\u0000\u0000\u0324\u0329\u0001\u0000\u0000\u0000\u0325"+
+ "\u0326\u0003s9\u0000\u0326\u0327\u0003\u00a9T\u0000\u0327\u0329\u0001"+
+ "\u0000\u0000\u0000\u0328\u030d\u0001\u0000\u0000\u0000\u0328\u0318\u0001"+
+ "\u0000\u0000\u0000\u0328\u0320\u0001\u0000\u0000\u0000\u0328\u0325\u0001"+
+ "\u0000\u0000\u0000\u0329\u00a0\u0001\u0000\u0000\u0000\u032a\u032b\u0003"+
+ "\u00a3Q\u0000\u032b\u032c\u0003\u00a5R\u0000\u032c\u00a2\u0001\u0000\u0000"+
+ "\u0000\u032d\u032e\u0007\u0007\u0000\u0000\u032e\u00a4\u0001\u0000\u0000"+
+ "\u0000\u032f\u0331\u0003\u00a7S\u0000\u0330\u032f\u0001\u0000\u0000\u0000"+
+ "\u0330\u0331\u0001\u0000\u0000\u0000\u0331\u0332\u0001\u0000\u0000\u0000"+
+ "\u0332\u0333\u0003s9\u0000\u0333\u00a6\u0001\u0000\u0000\u0000\u0334\u0335"+
+ "\u0007\b\u0000\u0000\u0335\u00a8\u0001\u0000\u0000\u0000\u0336\u0337\u0007"+
+ "\t\u0000\u0000\u0337\u00aa\u0001\u0000\u0000\u0000\u0338\u0339\u0003\u00ad"+
+ "V\u0000\u0339\u033b\u0003\u00afW\u0000\u033a\u033c\u0003\u00a9T\u0000"+
+ "\u033b\u033a\u0001\u0000\u0000\u0000\u033b\u033c\u0001\u0000\u0000\u0000"+
+ "\u033c\u00ac\u0001\u0000\u0000\u0000\u033d\u033f\u0003\u007f?\u0000\u033e"+
+ "\u0340\u0005.\u0000\u0000\u033f\u033e\u0001\u0000\u0000\u0000\u033f\u0340"+
+ "\u0001\u0000\u0000\u0000\u0340\u0349\u0001\u0000\u0000\u0000\u0341\u0342"+
+ "\u00050\u0000\u0000\u0342\u0344\u0007\u0002\u0000\u0000\u0343\u0345\u0003"+
+ "\u0081@\u0000\u0344\u0343\u0001\u0000\u0000\u0000\u0344\u0345\u0001\u0000"+
+ "\u0000\u0000\u0345\u0346\u0001\u0000\u0000\u0000\u0346\u0347\u0005.\u0000"+
+ "\u0000\u0347\u0349\u0003\u0081@\u0000\u0348\u033d\u0001\u0000\u0000\u0000"+
+ "\u0348\u0341\u0001\u0000\u0000\u0000\u0349\u00ae\u0001\u0000\u0000\u0000"+
+ "\u034a\u034b\u0003\u00b1X\u0000\u034b\u034c\u0003\u00a5R\u0000\u034c\u00b0"+
+ "\u0001\u0000\u0000\u0000\u034d\u034e\u0007\n\u0000\u0000\u034e\u00b2\u0001"+
+ "\u0000\u0000\u0000\u034f\u0350\u0005t\u0000\u0000\u0350\u0351\u0005r\u0000"+
+ "\u0000\u0351\u0352\u0005u\u0000\u0000\u0352\u0359\u0005e\u0000\u0000\u0353"+
+ "\u0354\u0005f\u0000\u0000\u0354\u0355\u0005a\u0000\u0000\u0355\u0356\u0005"+
+ "l\u0000\u0000\u0356\u0357\u0005s\u0000\u0000\u0357\u0359\u0005e\u0000"+
+ "\u0000\u0358\u034f\u0001\u0000\u0000\u0000\u0358\u0353\u0001\u0000\u0000"+
+ "\u0000\u0359\u00b4\u0001\u0000\u0000\u0000\u035a\u035b\u0005\'\u0000\u0000"+
+ "\u035b\u035c\u0003\u00b7[\u0000\u035c\u035d\u0005\'\u0000\u0000\u035d"+
+ "\u0363\u0001\u0000\u0000\u0000\u035e\u035f\u0005\'\u0000\u0000\u035f\u0360"+
+ "\u0003\u00bf_\u0000\u0360\u0361\u0005\'\u0000\u0000\u0361\u0363\u0001"+
+ "\u0000\u0000\u0000\u0362\u035a\u0001\u0000\u0000\u0000\u0362\u035e\u0001"+
+ "\u0000\u0000\u0000\u0363\u00b6\u0001\u0000\u0000\u0000\u0364\u0365\b\u000b"+
+ "\u0000\u0000\u0365\u00b8\u0001\u0000\u0000\u0000\u0366\u0368\u0005\"\u0000"+
+ "\u0000\u0367\u0369\u0003\u00bb]\u0000\u0368\u0367\u0001\u0000\u0000\u0000"+
+ "\u0368\u0369\u0001\u0000\u0000\u0000\u0369\u036a\u0001\u0000\u0000\u0000"+
+ "\u036a\u036b\u0005\"\u0000\u0000\u036b\u00ba\u0001\u0000\u0000\u0000\u036c"+
+ "\u036e\u0003\u00bd^\u0000\u036d\u036c\u0001\u0000\u0000\u0000\u036e\u036f"+
+ "\u0001\u0000\u0000\u0000\u036f\u036d\u0001\u0000\u0000\u0000\u036f\u0370"+
+ "\u0001\u0000\u0000\u0000\u0370\u00bc\u0001\u0000\u0000\u0000\u0371\u0374"+
+ "\b\f\u0000\u0000\u0372\u0374\u0003\u00bf_\u0000\u0373\u0371\u0001\u0000"+
+ "\u0000\u0000\u0373\u0372\u0001\u0000\u0000\u0000\u0374\u00be\u0001\u0000"+
+ "\u0000\u0000\u0375\u0376\u0005\\\u0000\u0000\u0376\u037a\u0007\r\u0000"+
+ "\u0000\u0377\u037a\u0003\u00c1`\u0000\u0378\u037a\u0003\u00c5b\u0000\u0379"+
+ "\u0375\u0001\u0000\u0000\u0000\u0379\u0377\u0001\u0000\u0000\u0000\u0379"+
+ "\u0378\u0001\u0000\u0000\u0000\u037a\u00c0\u0001\u0000\u0000\u0000\u037b"+
+ "\u037c\u0005\\\u0000\u0000\u037c\u0387\u0003\u008dF\u0000\u037d\u037e"+
+ "\u0005\\\u0000\u0000\u037e\u037f\u0003\u008dF\u0000\u037f\u0380\u0003"+
+ "\u008dF\u0000\u0380\u0387\u0001\u0000\u0000\u0000\u0381\u0382\u0005\\"+
+ "\u0000\u0000\u0382\u0383\u0003\u00c3a\u0000\u0383\u0384\u0003\u008dF\u0000"+
+ "\u0384\u0385\u0003\u008dF\u0000\u0385\u0387\u0001\u0000\u0000\u0000\u0386"+
+ "\u037b\u0001\u0000\u0000\u0000\u0386\u037d\u0001\u0000\u0000\u0000\u0386"+
+ "\u0381\u0001\u0000\u0000\u0000\u0387\u00c2\u0001\u0000\u0000\u0000\u0388"+
+ "\u0389\u0007\u000e\u0000\u0000\u0389\u00c4\u0001\u0000\u0000\u0000\u038a"+
+ "\u038b\u0005\\\u0000\u0000\u038b\u038c\u0005u\u0000\u0000\u038c\u038d"+
+ "\u0003\u0083A\u0000\u038d\u038e\u0003\u0083A\u0000\u038e\u038f\u0003\u0083"+
+ "A\u0000\u038f\u0390\u0003\u0083A\u0000\u0390\u00c6\u0001\u0000\u0000\u0000"+
+ "\u0391\u0392\u0005n\u0000\u0000\u0392\u0393\u0005u\u0000\u0000\u0393\u0394"+
+ "\u0005l\u0000\u0000\u0394\u0395\u0005l\u0000\u0000\u0395\u00c8\u0001\u0000"+
+ "\u0000\u0000\u0396\u0397\u0005(\u0000\u0000\u0397\u00ca\u0001\u0000\u0000"+
+ "\u0000\u0398\u0399\u0005)\u0000\u0000\u0399\u00cc\u0001\u0000\u0000\u0000"+
+ "\u039a\u039b\u0005{\u0000\u0000\u039b\u00ce\u0001\u0000\u0000\u0000\u039c"+
+ "\u039d\u0005}\u0000\u0000\u039d\u00d0\u0001\u0000\u0000\u0000\u039e\u039f"+
+ "\u0005[\u0000\u0000\u039f\u00d2\u0001\u0000\u0000\u0000\u03a0\u03a1\u0005"+
+ "]\u0000\u0000\u03a1\u00d4\u0001\u0000\u0000\u0000\u03a2\u03a3\u0005;\u0000"+
+ "\u0000\u03a3\u00d6\u0001\u0000\u0000\u0000\u03a4\u03a5\u0005,\u0000\u0000"+
+ "\u03a5\u00d8\u0001\u0000\u0000\u0000\u03a6\u03a7\u0005.\u0000\u0000\u03a7"+
+ "\u00da\u0001\u0000\u0000\u0000\u03a8\u03a9\u0005=\u0000\u0000\u03a9\u00dc"+
+ "\u0001\u0000\u0000\u0000\u03aa\u03ab\u0005>\u0000\u0000\u03ab\u00de\u0001"+
+ "\u0000\u0000\u0000\u03ac\u03ad\u0005<\u0000\u0000\u03ad\u00e0\u0001\u0000"+
+ "\u0000\u0000\u03ae\u03af\u0005!\u0000\u0000\u03af\u00e2\u0001\u0000\u0000"+
+ "\u0000\u03b0\u03b1\u0005~\u0000\u0000\u03b1\u00e4\u0001\u0000\u0000\u0000"+
+ "\u03b2\u03b3\u0005?\u0000\u0000\u03b3\u00e6\u0001\u0000\u0000\u0000\u03b4"+
+ "\u03b5\u0005:\u0000\u0000\u03b5\u00e8\u0001\u0000\u0000\u0000\u03b6\u03b7"+
+ "\u0005=\u0000\u0000\u03b7\u03b8\u0005=\u0000\u0000\u03b8\u00ea\u0001\u0000"+
+ "\u0000\u0000\u03b9\u03ba\u0005<\u0000\u0000\u03ba\u03bb\u0005=\u0000\u0000"+
+ "\u03bb\u00ec\u0001\u0000\u0000\u0000\u03bc\u03bd\u0005>\u0000\u0000\u03bd"+
+ "\u03be\u0005=\u0000\u0000\u03be\u00ee\u0001\u0000\u0000\u0000\u03bf\u03c0"+
+ "\u0005!\u0000\u0000\u03c0\u03c1\u0005=\u0000\u0000\u03c1\u00f0\u0001\u0000"+
+ "\u0000\u0000\u03c2\u03c3\u0005&\u0000\u0000\u03c3\u03c4\u0005&\u0000\u0000"+
+ "\u03c4\u00f2\u0001\u0000\u0000\u0000\u03c5\u03c6\u0005|\u0000\u0000\u03c6"+
+ "\u03c7\u0005|\u0000\u0000\u03c7\u00f4\u0001\u0000\u0000\u0000\u03c8\u03c9"+
+ "\u0005+\u0000\u0000\u03c9\u03ca\u0005+\u0000\u0000\u03ca\u00f6\u0001\u0000"+
+ "\u0000\u0000\u03cb\u03cc\u0005-\u0000\u0000\u03cc\u03cd\u0005-\u0000\u0000"+
+ "\u03cd\u00f8\u0001\u0000\u0000\u0000\u03ce\u03cf\u0005+\u0000\u0000\u03cf"+
+ "\u00fa\u0001\u0000\u0000\u0000\u03d0\u03d1\u0005-\u0000\u0000\u03d1\u00fc"+
+ "\u0001\u0000\u0000\u0000\u03d2\u03d3\u0005*\u0000\u0000\u03d3\u00fe\u0001"+
+ "\u0000\u0000\u0000\u03d4\u03d5\u0005/\u0000\u0000\u03d5\u0100\u0001\u0000"+
+ "\u0000\u0000\u03d6\u03d7\u0005&\u0000\u0000\u03d7\u0102\u0001\u0000\u0000"+
+ "\u0000\u03d8\u03d9\u0005|\u0000\u0000\u03d9\u0104\u0001\u0000\u0000\u0000"+
+ "\u03da\u03db\u0005^\u0000\u0000\u03db\u0106\u0001\u0000\u0000\u0000\u03dc"+
+ "\u03dd\u0005%\u0000\u0000\u03dd\u0108\u0001\u0000\u0000\u0000\u03de\u03df"+
+ "\u0005-\u0000\u0000\u03df\u03e0\u0005>\u0000\u0000\u03e0\u010a\u0001\u0000"+
+ "\u0000\u0000\u03e1\u03e2\u0005:\u0000\u0000\u03e2\u03e3\u0005:\u0000\u0000"+
+ "\u03e3\u010c\u0001\u0000\u0000\u0000\u03e4\u03e5\u0005+\u0000\u0000\u03e5"+
+ "\u03e6\u0005=\u0000\u0000\u03e6\u010e\u0001\u0000\u0000\u0000\u03e7\u03e8"+
+ "\u0005-\u0000\u0000\u03e8\u03e9\u0005=\u0000\u0000\u03e9\u0110\u0001\u0000"+
+ "\u0000\u0000\u03ea\u03eb\u0005*\u0000\u0000\u03eb\u03ec\u0005=\u0000\u0000"+
+ "\u03ec\u0112\u0001\u0000\u0000\u0000\u03ed\u03ee\u0005/\u0000\u0000\u03ee"+
+ "\u03ef\u0005=\u0000\u0000\u03ef\u0114\u0001\u0000\u0000\u0000\u03f0\u03f1"+
+ "\u0005&\u0000\u0000\u03f1\u03f2\u0005=\u0000\u0000\u03f2\u0116\u0001\u0000"+
+ "\u0000\u0000\u03f3\u03f4\u0005|\u0000\u0000\u03f4\u03f5\u0005=\u0000\u0000"+
+ "\u03f5\u0118\u0001\u0000\u0000\u0000\u03f6\u03f7\u0005^\u0000\u0000\u03f7"+
+ "\u03f8\u0005=\u0000\u0000\u03f8\u011a\u0001\u0000\u0000\u0000\u03f9\u03fa"+
+ "\u0005%\u0000\u0000\u03fa\u03fb\u0005=\u0000\u0000\u03fb\u011c\u0001\u0000"+
+ "\u0000\u0000\u03fc\u03fd\u0005<\u0000\u0000\u03fd\u03fe\u0005<\u0000\u0000"+
+ "\u03fe\u03ff\u0005=\u0000\u0000\u03ff\u011e\u0001\u0000\u0000\u0000\u0400"+
+ "\u0401\u0005>\u0000\u0000\u0401\u0402\u0005>\u0000\u0000\u0402\u0403\u0005"+
+ "=\u0000\u0000\u0403\u0120\u0001\u0000\u0000\u0000\u0404\u0405\u0005>\u0000"+
+ "\u0000\u0405\u0406\u0005>\u0000\u0000\u0406\u0407\u0005>\u0000\u0000\u0407"+
+ "\u0408\u0005=\u0000\u0000\u0408\u0122\u0001\u0000\u0000\u0000\u0409\u040d"+
+ "\u0003\u0125\u0092\u0000\u040a\u040c\u0003\u0127\u0093\u0000\u040b\u040a"+
+ "\u0001\u0000\u0000\u0000\u040c\u040f\u0001\u0000\u0000\u0000\u040d\u040b"+
+ "\u0001\u0000\u0000\u0000\u040d\u040e\u0001\u0000\u0000\u0000\u040e\u0124"+
+ "\u0001\u0000\u0000\u0000\u040f\u040d\u0001\u0000\u0000\u0000\u0410\u0417"+
+ "\u0007\u000f\u0000\u0000\u0411\u0412\b\u0010\u0000\u0000\u0412\u0417\u0004"+
+ "\u0092\u0000\u0000\u0413\u0414\u0007\u0011\u0000\u0000\u0414\u0415\u0007"+
+ "\u0012\u0000\u0000\u0415\u0417\u0004\u0092\u0001\u0000\u0416\u0410\u0001"+
+ "\u0000\u0000\u0000\u0416\u0411\u0001\u0000\u0000\u0000\u0416\u0413\u0001"+
+ "\u0000\u0000\u0000\u0417\u0126\u0001\u0000\u0000\u0000\u0418\u041f\u0007"+
+ "\u0013\u0000\u0000\u0419\u041a\b\u0010\u0000\u0000\u041a\u041f\u0004\u0093"+
+ "\u0002\u0000\u041b\u041c\u0007\u0011\u0000\u0000\u041c\u041d\u0007\u0012"+
+ "\u0000\u0000\u041d\u041f\u0004\u0093\u0003\u0000\u041e\u0418\u0001\u0000"+
+ "\u0000\u0000\u041e\u0419\u0001\u0000\u0000\u0000\u041e\u041b\u0001\u0000"+
+ "\u0000\u0000\u041f\u0128\u0001\u0000\u0000\u0000\u0420\u0421\u0005@\u0000"+
+ "\u0000\u0421\u012a\u0001\u0000\u0000\u0000\u0422\u0423\u0005.\u0000\u0000"+
+ "\u0423\u0424\u0005.\u0000\u0000\u0424\u0425\u0005.\u0000\u0000\u0425\u012c"+
+ "\u0001\u0000\u0000\u0000\u0426\u0428\u0007\u0014\u0000\u0000\u0427\u0426"+
+ "\u0001\u0000\u0000\u0000\u0428\u0429\u0001\u0000\u0000\u0000\u0429\u0427"+
+ "\u0001\u0000\u0000\u0000\u0429\u042a\u0001\u0000\u0000\u0000\u042a\u042b"+
+ "\u0001\u0000\u0000\u0000\u042b\u042c\u0006\u0096\u0000\u0000\u042c\u012e"+
+ "\u0001\u0000\u0000\u0000\u042d\u042e\u0005/\u0000\u0000\u042e\u042f\u0005"+
+ "*\u0000\u0000\u042f\u0433\u0001\u0000\u0000\u0000\u0430\u0432\t\u0000"+
+ "\u0000\u0000\u0431\u0430\u0001\u0000\u0000\u0000\u0432\u0435\u0001\u0000"+
+ "\u0000\u0000\u0433\u0434\u0001\u0000\u0000\u0000\u0433\u0431\u0001\u0000"+
+ "\u0000\u0000\u0434\u0436\u0001\u0000\u0000\u0000\u0435\u0433\u0001\u0000"+
+ "\u0000\u0000\u0436\u0437\u0005*\u0000\u0000\u0437\u0438\u0005/\u0000\u0000"+
+ "\u0438\u0439\u0001\u0000\u0000\u0000\u0439\u043a\u0006\u0097\u0000\u0000"+
+ "\u043a\u0130\u0001\u0000\u0000\u0000\u043b\u043c\u0005/\u0000\u0000\u043c"+
+ "\u043d\u0005/\u0000\u0000\u043d\u0441\u0001\u0000\u0000\u0000\u043e\u0440"+
+ "\b\u0015\u0000\u0000\u043f\u043e\u0001\u0000\u0000\u0000\u0440\u0443\u0001"+
+ "\u0000\u0000\u0000\u0441\u043f\u0001\u0000\u0000\u0000\u0441\u0442\u0001"+
+ "\u0000\u0000\u0000\u0442\u0444\u0001\u0000\u0000\u0000\u0443\u0441\u0001"+
+ "\u0000\u0000\u0000\u0444\u0445\u0006\u0098\u0000\u0000\u0445\u0132\u0001"+
+ "\u0000\u0000\u00006\u0000\u028a\u028e\u0292\u0296\u029a\u02a1\u02a6\u02a8"+
+ "\u02ac\u02af\u02b3\u02ba\u02be\u02c3\u02cb\u02ce\u02d5\u02d9\u02dd\u02e3"+
+ "\u02e6\u02ed\u02f1\u02f9\u02fc\u0303\u0307\u030b\u0310\u0313\u0316\u031b"+
+ "\u031e\u0323\u0328\u0330\u033b\u033f\u0344\u0348\u0358\u0362\u0368\u036f"+
+ "\u0373\u0379\u0386\u040d\u0416\u041e\u0429\u0433\u0441\u0001\u0000\u0001"+
+ "\u0000";
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens b/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens
new file mode 100644
index 000000000..52ef1eee3
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8Lexer.tokens
@@ -0,0 +1,205 @@
+ABSTRACT=1
+ASSERT=2
+BOOLEAN=3
+BREAK=4
+BYTE=5
+CASE=6
+CATCH=7
+CHAR=8
+CLASS=9
+CONST=10
+CONTINUE=11
+DEFAULT=12
+DO=13
+DOUBLE=14
+ELSE=15
+ENUM=16
+EXTENDS=17
+FINAL=18
+FINALLY=19
+FLOAT=20
+FOR=21
+IF=22
+GOTO=23
+IMPLEMENTS=24
+IMPORT=25
+INSTANCEOF=26
+INT=27
+INTERFACE=28
+LONG=29
+NATIVE=30
+NEW=31
+PACKAGE=32
+PRIVATE=33
+PROTECTED=34
+PUBLIC=35
+RETURN=36
+SHORT=37
+STATIC=38
+STRICTFP=39
+SUPER=40
+SWITCH=41
+SYNCHRONIZED=42
+THIS=43
+THROW=44
+THROWS=45
+TRANSIENT=46
+TRY=47
+VOID=48
+VOLATILE=49
+WHILE=50
+IntegerLiteral=51
+FloatingPointLiteral=52
+BooleanLiteral=53
+CharacterLiteral=54
+StringLiteral=55
+NullLiteral=56
+LPAREN=57
+RPAREN=58
+LBRACE=59
+RBRACE=60
+LBRACK=61
+RBRACK=62
+SEMI=63
+COMMA=64
+DOT=65
+ASSIGN=66
+GT=67
+LT=68
+BANG=69
+TILDE=70
+QUESTION=71
+COLON=72
+EQUAL=73
+LE=74
+GE=75
+NOTEQUAL=76
+AND=77
+OR=78
+INC=79
+DEC=80
+ADD=81
+SUB=82
+MUL=83
+DIV=84
+BITAND=85
+BITOR=86
+CARET=87
+MOD=88
+ARROW=89
+COLONCOLON=90
+ADD_ASSIGN=91
+SUB_ASSIGN=92
+MUL_ASSIGN=93
+DIV_ASSIGN=94
+AND_ASSIGN=95
+OR_ASSIGN=96
+XOR_ASSIGN=97
+MOD_ASSIGN=98
+LSHIFT_ASSIGN=99
+RSHIFT_ASSIGN=100
+URSHIFT_ASSIGN=101
+Identifier=102
+AT=103
+ELLIPSIS=104
+WS=105
+COMMENT=106
+LINE_COMMENT=107
+'abstract'=1
+'assert'=2
+'boolean'=3
+'break'=4
+'byte'=5
+'case'=6
+'catch'=7
+'char'=8
+'class'=9
+'const'=10
+'continue'=11
+'default'=12
+'do'=13
+'double'=14
+'else'=15
+'enum'=16
+'extends'=17
+'final'=18
+'finally'=19
+'float'=20
+'for'=21
+'if'=22
+'goto'=23
+'implements'=24
+'import'=25
+'instanceof'=26
+'int'=27
+'interface'=28
+'long'=29
+'native'=30
+'new'=31
+'package'=32
+'private'=33
+'protected'=34
+'public'=35
+'return'=36
+'short'=37
+'static'=38
+'strictfp'=39
+'super'=40
+'switch'=41
+'synchronized'=42
+'this'=43
+'throw'=44
+'throws'=45
+'transient'=46
+'try'=47
+'void'=48
+'volatile'=49
+'while'=50
+'null'=56
+'('=57
+')'=58
+'{'=59
+'}'=60
+'['=61
+']'=62
+';'=63
+','=64
+'.'=65
+'='=66
+'>'=67
+'<'=68
+'!'=69
+'~'=70
+'?'=71
+':'=72
+'=='=73
+'<='=74
+'>='=75
+'!='=76
+'&&'=77
+'||'=78
+'++'=79
+'--'=80
+'+'=81
+'-'=82
+'*'=83
+'/'=84
+'&'=85
+'|'=86
+'^'=87
+'%'=88
+'->'=89
+'::'=90
+'+='=91
+'-='=92
+'*='=93
+'/='=94
+'&='=95
+'|='=96
+'^='=97
+'%='=98
+'<<='=99
+'>>='=100
+'>>>='=101
+'@'=103
+'...'=104
diff --git a/benchmarks/src/main/java/org/antlr/Java8Listener.java b/benchmarks/src/main/java/org/antlr/Java8Listener.java
new file mode 100644
index 000000000..6deaf88fb
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8Listener.java
@@ -0,0 +1,2382 @@
+// Generated from Java8.g4 by ANTLR 4.13.1
+
+package org.antlr;
+
+import org.antlr.v4.runtime.tree.ParseTreeListener;
+
+/**
+ * This interface defines a complete listener for a parse tree produced by
+ * {@link Java8Parser}.
+ */
+public interface Java8Listener extends ParseTreeListener {
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#literal}.
+ * @param ctx the parse tree
+ */
+ void enterLiteral(Java8Parser.LiteralContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#literal}.
+ * @param ctx the parse tree
+ */
+ void exitLiteral(Java8Parser.LiteralContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#type}.
+ * @param ctx the parse tree
+ */
+ void enterType(Java8Parser.TypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#type}.
+ * @param ctx the parse tree
+ */
+ void exitType(Java8Parser.TypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void enterPrimitiveType(Java8Parser.PrimitiveTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primitiveType}.
+ * @param ctx the parse tree
+ */
+ void exitPrimitiveType(Java8Parser.PrimitiveTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#numericType}.
+ * @param ctx the parse tree
+ */
+ void enterNumericType(Java8Parser.NumericTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#numericType}.
+ * @param ctx the parse tree
+ */
+ void exitNumericType(Java8Parser.NumericTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#integralType}.
+ * @param ctx the parse tree
+ */
+ void enterIntegralType(Java8Parser.IntegralTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#integralType}.
+ * @param ctx the parse tree
+ */
+ void exitIntegralType(Java8Parser.IntegralTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#floatingPointType}.
+ * @param ctx the parse tree
+ */
+ void enterFloatingPointType(Java8Parser.FloatingPointTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#floatingPointType}.
+ * @param ctx the parse tree
+ */
+ void exitFloatingPointType(Java8Parser.FloatingPointTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#referenceType}.
+ * @param ctx the parse tree
+ */
+ void enterReferenceType(Java8Parser.ReferenceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#referenceType}.
+ * @param ctx the parse tree
+ */
+ void exitReferenceType(Java8Parser.ReferenceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitClassOrInterfaceType(Java8Parser.ClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classType}.
+ * @param ctx the parse tree
+ */
+ void enterClassType(Java8Parser.ClassTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classType}.
+ * @param ctx the parse tree
+ */
+ void exitClassType(Java8Parser.ClassTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classType_lf_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitClassType_lf_classOrInterfaceType(Java8Parser.ClassType_lf_classOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classType_lfno_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitClassType_lfno_classOrInterfaceType(Java8Parser.ClassType_lfno_classOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceType(Java8Parser.InterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceType(Java8Parser.InterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceType_lf_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceType_lf_classOrInterfaceType(Java8Parser.InterfaceType_lf_classOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceType_lfno_classOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceType_lfno_classOrInterfaceType(Java8Parser.InterfaceType_lfno_classOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeVariable}.
+ * @param ctx the parse tree
+ */
+ void enterTypeVariable(Java8Parser.TypeVariableContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeVariable}.
+ * @param ctx the parse tree
+ */
+ void exitTypeVariable(Java8Parser.TypeVariableContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayType}.
+ * @param ctx the parse tree
+ */
+ void enterArrayType(Java8Parser.ArrayTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayType}.
+ * @param ctx the parse tree
+ */
+ void exitArrayType(Java8Parser.ArrayTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#dims}.
+ * @param ctx the parse tree
+ */
+ void enterDims(Java8Parser.DimsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#dims}.
+ * @param ctx the parse tree
+ */
+ void exitDims(Java8Parser.DimsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameter(Java8Parser.TypeParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeParameter}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameter(Java8Parser.TypeParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeParameterModifier}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeParameterModifier}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameterModifier(Java8Parser.TypeParameterModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void enterTypeBound(Java8Parser.TypeBoundContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeBound}.
+ * @param ctx the parse tree
+ */
+ void exitTypeBound(Java8Parser.TypeBoundContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#additionalBound}.
+ * @param ctx the parse tree
+ */
+ void enterAdditionalBound(Java8Parser.AdditionalBoundContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#additionalBound}.
+ * @param ctx the parse tree
+ */
+ void exitAdditionalBound(Java8Parser.AdditionalBoundContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArguments(Java8Parser.TypeArgumentsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeArguments}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArguments(Java8Parser.TypeArgumentsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeArgumentList}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgumentList(Java8Parser.TypeArgumentListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeArgumentList}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgumentList(Java8Parser.TypeArgumentListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgument(Java8Parser.TypeArgumentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeArgument}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgument(Java8Parser.TypeArgumentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#wildcard}.
+ * @param ctx the parse tree
+ */
+ void enterWildcard(Java8Parser.WildcardContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#wildcard}.
+ * @param ctx the parse tree
+ */
+ void exitWildcard(Java8Parser.WildcardContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#wildcardBounds}.
+ * @param ctx the parse tree
+ */
+ void enterWildcardBounds(Java8Parser.WildcardBoundsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#wildcardBounds}.
+ * @param ctx the parse tree
+ */
+ void exitWildcardBounds(Java8Parser.WildcardBoundsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#packageName}.
+ * @param ctx the parse tree
+ */
+ void enterPackageName(Java8Parser.PackageNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#packageName}.
+ * @param ctx the parse tree
+ */
+ void exitPackageName(Java8Parser.PackageNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeName}.
+ * @param ctx the parse tree
+ */
+ void enterTypeName(Java8Parser.TypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeName}.
+ * @param ctx the parse tree
+ */
+ void exitTypeName(Java8Parser.TypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#packageOrTypeName}.
+ * @param ctx the parse tree
+ */
+ void enterPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#packageOrTypeName}.
+ * @param ctx the parse tree
+ */
+ void exitPackageOrTypeName(Java8Parser.PackageOrTypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#expressionName}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionName(Java8Parser.ExpressionNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#expressionName}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionName(Java8Parser.ExpressionNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodName}.
+ * @param ctx the parse tree
+ */
+ void enterMethodName(Java8Parser.MethodNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodName}.
+ * @param ctx the parse tree
+ */
+ void exitMethodName(Java8Parser.MethodNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#ambiguousName}.
+ * @param ctx the parse tree
+ */
+ void enterAmbiguousName(Java8Parser.AmbiguousNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#ambiguousName}.
+ * @param ctx the parse tree
+ */
+ void exitAmbiguousName(Java8Parser.AmbiguousNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void enterCompilationUnit(Java8Parser.CompilationUnitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#compilationUnit}.
+ * @param ctx the parse tree
+ */
+ void exitCompilationUnit(Java8Parser.CompilationUnitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterPackageDeclaration(Java8Parser.PackageDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#packageDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitPackageDeclaration(Java8Parser.PackageDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#packageModifier}.
+ * @param ctx the parse tree
+ */
+ void enterPackageModifier(Java8Parser.PackageModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#packageModifier}.
+ * @param ctx the parse tree
+ */
+ void exitPackageModifier(Java8Parser.PackageModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterImportDeclaration(Java8Parser.ImportDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#importDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitImportDeclaration(Java8Parser.ImportDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#singleTypeImportDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitSingleTypeImportDeclaration(Java8Parser.SingleTypeImportDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeImportOnDemandDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitTypeImportOnDemandDeclaration(Java8Parser.TypeImportOnDemandDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#singleStaticImportDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitSingleStaticImportDeclaration(Java8Parser.SingleStaticImportDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#staticImportOnDemandDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitStaticImportOnDemandDeclaration(Java8Parser.StaticImportOnDemandDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterTypeDeclaration(Java8Parser.TypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitTypeDeclaration(Java8Parser.TypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassDeclaration(Java8Parser.ClassDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassDeclaration(Java8Parser.ClassDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#normalClassDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#normalClassDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitNormalClassDeclaration(Java8Parser.NormalClassDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classModifier}.
+ * @param ctx the parse tree
+ */
+ void enterClassModifier(Java8Parser.ClassModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classModifier}.
+ * @param ctx the parse tree
+ */
+ void exitClassModifier(Java8Parser.ClassModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameters(Java8Parser.TypeParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeParameters}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameters(Java8Parser.TypeParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeParameterList}.
+ * @param ctx the parse tree
+ */
+ void enterTypeParameterList(Java8Parser.TypeParameterListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeParameterList}.
+ * @param ctx the parse tree
+ */
+ void exitTypeParameterList(Java8Parser.TypeParameterListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#superclass}.
+ * @param ctx the parse tree
+ */
+ void enterSuperclass(Java8Parser.SuperclassContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#superclass}.
+ * @param ctx the parse tree
+ */
+ void exitSuperclass(Java8Parser.SuperclassContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#superinterfaces}.
+ * @param ctx the parse tree
+ */
+ void enterSuperinterfaces(Java8Parser.SuperinterfacesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#superinterfaces}.
+ * @param ctx the parse tree
+ */
+ void exitSuperinterfaces(Java8Parser.SuperinterfacesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceTypeList}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceTypeList}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceTypeList(Java8Parser.InterfaceTypeListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classBody}.
+ * @param ctx the parse tree
+ */
+ void enterClassBody(Java8Parser.ClassBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classBody}.
+ * @param ctx the parse tree
+ */
+ void exitClassBody(Java8Parser.ClassBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classBodyDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassBodyDeclaration(Java8Parser.ClassBodyDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitClassMemberDeclaration(Java8Parser.ClassMemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterFieldDeclaration(Java8Parser.FieldDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#fieldDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitFieldDeclaration(Java8Parser.FieldDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#fieldModifier}.
+ * @param ctx the parse tree
+ */
+ void enterFieldModifier(Java8Parser.FieldModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#fieldModifier}.
+ * @param ctx the parse tree
+ */
+ void exitFieldModifier(Java8Parser.FieldModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorList}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorList}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclaratorList(Java8Parser.VariableDeclaratorListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclarator(Java8Parser.VariableDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void enterVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableDeclaratorId}.
+ * @param ctx the parse tree
+ */
+ void exitVariableDeclaratorId(Java8Parser.VariableDeclaratorIdContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterVariableInitializer(Java8Parser.VariableInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitVariableInitializer(Java8Parser.VariableInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannType(Java8Parser.UnannTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannType(Java8Parser.UnannTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannPrimitiveType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannPrimitiveType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannPrimitiveType(Java8Parser.UnannPrimitiveTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannReferenceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannReferenceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannReferenceType(Java8Parser.UnannReferenceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannClassOrInterfaceType(Java8Parser.UnannClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannClassType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannClassType(Java8Parser.UnannClassTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannClassType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannClassType(Java8Parser.UnannClassTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannClassType_lf_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannClassType_lf_unannClassOrInterfaceType(Java8Parser.UnannClassType_lf_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannClassType_lfno_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannClassType_lfno_unannClassOrInterfaceType(Java8Parser.UnannClassType_lfno_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannInterfaceType(Java8Parser.UnannInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lf_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannInterfaceType_lf_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lf_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannInterfaceType_lfno_unannClassOrInterfaceType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannInterfaceType_lfno_unannClassOrInterfaceType(Java8Parser.UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannTypeVariable}.
+ * @param ctx the parse tree
+ */
+ void enterUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannTypeVariable}.
+ * @param ctx the parse tree
+ */
+ void exitUnannTypeVariable(Java8Parser.UnannTypeVariableContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unannArrayType}.
+ * @param ctx the parse tree
+ */
+ void enterUnannArrayType(Java8Parser.UnannArrayTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unannArrayType}.
+ * @param ctx the parse tree
+ */
+ void exitUnannArrayType(Java8Parser.UnannArrayTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterMethodDeclaration(Java8Parser.MethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitMethodDeclaration(Java8Parser.MethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodModifier}.
+ * @param ctx the parse tree
+ */
+ void enterMethodModifier(Java8Parser.MethodModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodModifier}.
+ * @param ctx the parse tree
+ */
+ void exitMethodModifier(Java8Parser.MethodModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodHeader}.
+ * @param ctx the parse tree
+ */
+ void enterMethodHeader(Java8Parser.MethodHeaderContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodHeader}.
+ * @param ctx the parse tree
+ */
+ void exitMethodHeader(Java8Parser.MethodHeaderContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#result}.
+ * @param ctx the parse tree
+ */
+ void enterResult(Java8Parser.ResultContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#result}.
+ * @param ctx the parse tree
+ */
+ void exitResult(Java8Parser.ResultContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitMethodDeclarator(Java8Parser.MethodDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameterList(Java8Parser.FormalParameterListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#formalParameterList}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameterList(Java8Parser.FormalParameterListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameters(Java8Parser.FormalParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#formalParameters}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameters(Java8Parser.FormalParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterFormalParameter(Java8Parser.FormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#formalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitFormalParameter(Java8Parser.FormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void enterVariableModifier(Java8Parser.VariableModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableModifier}.
+ * @param ctx the parse tree
+ */
+ void exitVariableModifier(Java8Parser.VariableModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterLastFormalParameter(Java8Parser.LastFormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#lastFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitLastFormalParameter(Java8Parser.LastFormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#receiverParameter}.
+ * @param ctx the parse tree
+ */
+ void enterReceiverParameter(Java8Parser.ReceiverParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#receiverParameter}.
+ * @param ctx the parse tree
+ */
+ void exitReceiverParameter(Java8Parser.ReceiverParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#throws_}.
+ * @param ctx the parse tree
+ */
+ void enterThrows_(Java8Parser.Throws_Context ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#throws_}.
+ * @param ctx the parse tree
+ */
+ void exitThrows_(Java8Parser.Throws_Context ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#exceptionTypeList}.
+ * @param ctx the parse tree
+ */
+ void enterExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#exceptionTypeList}.
+ * @param ctx the parse tree
+ */
+ void exitExceptionTypeList(Java8Parser.ExceptionTypeListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#exceptionType}.
+ * @param ctx the parse tree
+ */
+ void enterExceptionType(Java8Parser.ExceptionTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#exceptionType}.
+ * @param ctx the parse tree
+ */
+ void exitExceptionType(Java8Parser.ExceptionTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void enterMethodBody(Java8Parser.MethodBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodBody}.
+ * @param ctx the parse tree
+ */
+ void exitMethodBody(Java8Parser.MethodBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#instanceInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterInstanceInitializer(Java8Parser.InstanceInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#instanceInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitInstanceInitializer(Java8Parser.InstanceInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#staticInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterStaticInitializer(Java8Parser.StaticInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#staticInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitStaticInitializer(Java8Parser.StaticInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constructorDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorDeclaration(Java8Parser.ConstructorDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constructorModifier}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorModifier(Java8Parser.ConstructorModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constructorModifier}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorModifier(Java8Parser.ConstructorModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constructorDeclarator}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constructorDeclarator}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorDeclarator(Java8Parser.ConstructorDeclaratorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#simpleTypeName}.
+ * @param ctx the parse tree
+ */
+ void enterSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#simpleTypeName}.
+ * @param ctx the parse tree
+ */
+ void exitSimpleTypeName(Java8Parser.SimpleTypeNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constructorBody}.
+ * @param ctx the parse tree
+ */
+ void enterConstructorBody(Java8Parser.ConstructorBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constructorBody}.
+ * @param ctx the parse tree
+ */
+ void exitConstructorBody(Java8Parser.ConstructorBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}.
+ * @param ctx the parse tree
+ */
+ void enterExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#explicitConstructorInvocation}.
+ * @param ctx the parse tree
+ */
+ void exitExplicitConstructorInvocation(Java8Parser.ExplicitConstructorInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterEnumDeclaration(Java8Parser.EnumDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitEnumDeclaration(Java8Parser.EnumDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumBody}.
+ * @param ctx the parse tree
+ */
+ void enterEnumBody(Java8Parser.EnumBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumBody}.
+ * @param ctx the parse tree
+ */
+ void exitEnumBody(Java8Parser.EnumBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumConstantList}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstantList(Java8Parser.EnumConstantListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumConstantList}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstantList(Java8Parser.EnumConstantListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstant(Java8Parser.EnumConstantContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumConstant}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstant(Java8Parser.EnumConstantContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumConstantModifier}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumConstantModifier}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstantModifier(Java8Parser.EnumConstantModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void enterEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumBodyDeclarations}.
+ * @param ctx the parse tree
+ */
+ void exitEnumBodyDeclarations(Java8Parser.EnumBodyDeclarationsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceDeclaration(Java8Parser.InterfaceDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#normalInterfaceDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitNormalInterfaceDeclaration(Java8Parser.NormalInterfaceDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceModifier(Java8Parser.InterfaceModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceModifier}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceModifier(Java8Parser.InterfaceModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#extendsInterfaces}.
+ * @param ctx the parse tree
+ */
+ void enterExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#extendsInterfaces}.
+ * @param ctx the parse tree
+ */
+ void exitExtendsInterfaces(Java8Parser.ExtendsInterfacesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceBody(Java8Parser.InterfaceBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceBody}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceBody(Java8Parser.InterfaceBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMemberDeclaration(Java8Parser.InterfaceMemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constantDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constantDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitConstantDeclaration(Java8Parser.ConstantDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constantModifier}.
+ * @param ctx the parse tree
+ */
+ void enterConstantModifier(Java8Parser.ConstantModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constantModifier}.
+ * @param ctx the parse tree
+ */
+ void exitConstantModifier(Java8Parser.ConstantModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceMethodDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodDeclaration(Java8Parser.InterfaceMethodDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void enterInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#interfaceMethodModifier}.
+ * @param ctx the parse tree
+ */
+ void exitInterfaceMethodModifier(Java8Parser.InterfaceMethodModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotationTypeDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeDeclaration(Java8Parser.AnnotationTypeDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotationTypeBody}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeBody(Java8Parser.AnnotationTypeBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotationTypeMemberDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeMemberDeclaration(Java8Parser.AnnotationTypeMemberDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementDeclaration(Java8Parser.AnnotationTypeElementDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotationTypeElementModifier}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotationTypeElementModifier(Java8Parser.AnnotationTypeElementModifierContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void enterDefaultValue(Java8Parser.DefaultValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#defaultValue}.
+ * @param ctx the parse tree
+ */
+ void exitDefaultValue(Java8Parser.DefaultValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#annotation}.
+ * @param ctx the parse tree
+ */
+ void enterAnnotation(Java8Parser.AnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#annotation}.
+ * @param ctx the parse tree
+ */
+ void exitAnnotation(Java8Parser.AnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#normalAnnotation}.
+ * @param ctx the parse tree
+ */
+ void enterNormalAnnotation(Java8Parser.NormalAnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#normalAnnotation}.
+ * @param ctx the parse tree
+ */
+ void exitNormalAnnotation(Java8Parser.NormalAnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#elementValuePairList}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePairList(Java8Parser.ElementValuePairListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#elementValuePairList}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePairList(Java8Parser.ElementValuePairListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void enterElementValuePair(Java8Parser.ElementValuePairContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#elementValuePair}.
+ * @param ctx the parse tree
+ */
+ void exitElementValuePair(Java8Parser.ElementValuePairContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void enterElementValue(Java8Parser.ElementValueContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#elementValue}.
+ * @param ctx the parse tree
+ */
+ void exitElementValue(Java8Parser.ElementValueContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#elementValueArrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitElementValueArrayInitializer(Java8Parser.ElementValueArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#elementValueList}.
+ * @param ctx the parse tree
+ */
+ void enterElementValueList(Java8Parser.ElementValueListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#elementValueList}.
+ * @param ctx the parse tree
+ */
+ void exitElementValueList(Java8Parser.ElementValueListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#markerAnnotation}.
+ * @param ctx the parse tree
+ */
+ void enterMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#markerAnnotation}.
+ * @param ctx the parse tree
+ */
+ void exitMarkerAnnotation(Java8Parser.MarkerAnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#singleElementAnnotation}.
+ * @param ctx the parse tree
+ */
+ void enterSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#singleElementAnnotation}.
+ * @param ctx the parse tree
+ */
+ void exitSingleElementAnnotation(Java8Parser.SingleElementAnnotationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void enterArrayInitializer(Java8Parser.ArrayInitializerContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayInitializer}.
+ * @param ctx the parse tree
+ */
+ void exitArrayInitializer(Java8Parser.ArrayInitializerContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#variableInitializerList}.
+ * @param ctx the parse tree
+ */
+ void enterVariableInitializerList(Java8Parser.VariableInitializerListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#variableInitializerList}.
+ * @param ctx the parse tree
+ */
+ void exitVariableInitializerList(Java8Parser.VariableInitializerListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#block}.
+ * @param ctx the parse tree
+ */
+ void enterBlock(Java8Parser.BlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#block}.
+ * @param ctx the parse tree
+ */
+ void exitBlock(Java8Parser.BlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#blockStatements}.
+ * @param ctx the parse tree
+ */
+ void enterBlockStatements(Java8Parser.BlockStatementsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#blockStatements}.
+ * @param ctx the parse tree
+ */
+ void exitBlockStatements(Java8Parser.BlockStatementsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void enterBlockStatement(Java8Parser.BlockStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#blockStatement}.
+ * @param ctx the parse tree
+ */
+ void exitBlockStatement(Java8Parser.BlockStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}.
+ * @param ctx the parse tree
+ */
+ void enterLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#localVariableDeclarationStatement}.
+ * @param ctx the parse tree
+ */
+ void exitLocalVariableDeclarationStatement(Java8Parser.LocalVariableDeclarationStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void enterLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#localVariableDeclaration}.
+ * @param ctx the parse tree
+ */
+ void exitLocalVariableDeclaration(Java8Parser.LocalVariableDeclarationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#statement}.
+ * @param ctx the parse tree
+ */
+ void enterStatement(Java8Parser.StatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#statement}.
+ * @param ctx the parse tree
+ */
+ void exitStatement(Java8Parser.StatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#statementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#statementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitStatementNoShortIf(Java8Parser.StatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}.
+ * @param ctx the parse tree
+ */
+ void enterStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#statementWithoutTrailingSubstatement}.
+ * @param ctx the parse tree
+ */
+ void exitStatementWithoutTrailingSubstatement(Java8Parser.StatementWithoutTrailingSubstatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#emptyStatement}.
+ * @param ctx the parse tree
+ */
+ void enterEmptyStatement(Java8Parser.EmptyStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#emptyStatement}.
+ * @param ctx the parse tree
+ */
+ void exitEmptyStatement(Java8Parser.EmptyStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#labeledStatement}.
+ * @param ctx the parse tree
+ */
+ void enterLabeledStatement(Java8Parser.LabeledStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#labeledStatement}.
+ * @param ctx the parse tree
+ */
+ void exitLabeledStatement(Java8Parser.LabeledStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#labeledStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitLabeledStatementNoShortIf(Java8Parser.LabeledStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#expressionStatement}.
+ * @param ctx the parse tree
+ */
+ void enterExpressionStatement(Java8Parser.ExpressionStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#expressionStatement}.
+ * @param ctx the parse tree
+ */
+ void exitExpressionStatement(Java8Parser.ExpressionStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#statementExpression}.
+ * @param ctx the parse tree
+ */
+ void enterStatementExpression(Java8Parser.StatementExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#statementExpression}.
+ * @param ctx the parse tree
+ */
+ void exitStatementExpression(Java8Parser.StatementExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#ifThenStatement}.
+ * @param ctx the parse tree
+ */
+ void enterIfThenStatement(Java8Parser.IfThenStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#ifThenStatement}.
+ * @param ctx the parse tree
+ */
+ void exitIfThenStatement(Java8Parser.IfThenStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatement}.
+ * @param ctx the parse tree
+ */
+ void enterIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatement}.
+ * @param ctx the parse tree
+ */
+ void exitIfThenElseStatement(Java8Parser.IfThenElseStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#ifThenElseStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitIfThenElseStatementNoShortIf(Java8Parser.IfThenElseStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#assertStatement}.
+ * @param ctx the parse tree
+ */
+ void enterAssertStatement(Java8Parser.AssertStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#assertStatement}.
+ * @param ctx the parse tree
+ */
+ void exitAssertStatement(Java8Parser.AssertStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#switchStatement}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchStatement(Java8Parser.SwitchStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#switchStatement}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchStatement(Java8Parser.SwitchStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#switchBlock}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchBlock(Java8Parser.SwitchBlockContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#switchBlock}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchBlock(Java8Parser.SwitchBlockContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#switchBlockStatementGroup}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchBlockStatementGroup(Java8Parser.SwitchBlockStatementGroupContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#switchLabels}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchLabels(Java8Parser.SwitchLabelsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#switchLabels}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchLabels(Java8Parser.SwitchLabelsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void enterSwitchLabel(Java8Parser.SwitchLabelContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#switchLabel}.
+ * @param ctx the parse tree
+ */
+ void exitSwitchLabel(Java8Parser.SwitchLabelContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enumConstantName}.
+ * @param ctx the parse tree
+ */
+ void enterEnumConstantName(Java8Parser.EnumConstantNameContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enumConstantName}.
+ * @param ctx the parse tree
+ */
+ void exitEnumConstantName(Java8Parser.EnumConstantNameContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#whileStatement}.
+ * @param ctx the parse tree
+ */
+ void enterWhileStatement(Java8Parser.WhileStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#whileStatement}.
+ * @param ctx the parse tree
+ */
+ void exitWhileStatement(Java8Parser.WhileStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#whileStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitWhileStatementNoShortIf(Java8Parser.WhileStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#doStatement}.
+ * @param ctx the parse tree
+ */
+ void enterDoStatement(Java8Parser.DoStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#doStatement}.
+ * @param ctx the parse tree
+ */
+ void exitDoStatement(Java8Parser.DoStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#forStatement}.
+ * @param ctx the parse tree
+ */
+ void enterForStatement(Java8Parser.ForStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#forStatement}.
+ * @param ctx the parse tree
+ */
+ void exitForStatement(Java8Parser.ForStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#forStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#forStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitForStatementNoShortIf(Java8Parser.ForStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#basicForStatement}.
+ * @param ctx the parse tree
+ */
+ void enterBasicForStatement(Java8Parser.BasicForStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#basicForStatement}.
+ * @param ctx the parse tree
+ */
+ void exitBasicForStatement(Java8Parser.BasicForStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#basicForStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitBasicForStatementNoShortIf(Java8Parser.BasicForStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#forInit}.
+ * @param ctx the parse tree
+ */
+ void enterForInit(Java8Parser.ForInitContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#forInit}.
+ * @param ctx the parse tree
+ */
+ void exitForInit(Java8Parser.ForInitContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#forUpdate}.
+ * @param ctx the parse tree
+ */
+ void enterForUpdate(Java8Parser.ForUpdateContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#forUpdate}.
+ * @param ctx the parse tree
+ */
+ void exitForUpdate(Java8Parser.ForUpdateContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#statementExpressionList}.
+ * @param ctx the parse tree
+ */
+ void enterStatementExpressionList(Java8Parser.StatementExpressionListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#statementExpressionList}.
+ * @param ctx the parse tree
+ */
+ void exitStatementExpressionList(Java8Parser.StatementExpressionListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enhancedForStatement}.
+ * @param ctx the parse tree
+ */
+ void enterEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enhancedForStatement}.
+ * @param ctx the parse tree
+ */
+ void exitEnhancedForStatement(Java8Parser.EnhancedForStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void enterEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#enhancedForStatementNoShortIf}.
+ * @param ctx the parse tree
+ */
+ void exitEnhancedForStatementNoShortIf(Java8Parser.EnhancedForStatementNoShortIfContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#breakStatement}.
+ * @param ctx the parse tree
+ */
+ void enterBreakStatement(Java8Parser.BreakStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#breakStatement}.
+ * @param ctx the parse tree
+ */
+ void exitBreakStatement(Java8Parser.BreakStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#continueStatement}.
+ * @param ctx the parse tree
+ */
+ void enterContinueStatement(Java8Parser.ContinueStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#continueStatement}.
+ * @param ctx the parse tree
+ */
+ void exitContinueStatement(Java8Parser.ContinueStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#returnStatement}.
+ * @param ctx the parse tree
+ */
+ void enterReturnStatement(Java8Parser.ReturnStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#returnStatement}.
+ * @param ctx the parse tree
+ */
+ void exitReturnStatement(Java8Parser.ReturnStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#throwStatement}.
+ * @param ctx the parse tree
+ */
+ void enterThrowStatement(Java8Parser.ThrowStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#throwStatement}.
+ * @param ctx the parse tree
+ */
+ void exitThrowStatement(Java8Parser.ThrowStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#synchronizedStatement}.
+ * @param ctx the parse tree
+ */
+ void enterSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#synchronizedStatement}.
+ * @param ctx the parse tree
+ */
+ void exitSynchronizedStatement(Java8Parser.SynchronizedStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#tryStatement}.
+ * @param ctx the parse tree
+ */
+ void enterTryStatement(Java8Parser.TryStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#tryStatement}.
+ * @param ctx the parse tree
+ */
+ void exitTryStatement(Java8Parser.TryStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#catches}.
+ * @param ctx the parse tree
+ */
+ void enterCatches(Java8Parser.CatchesContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#catches}.
+ * @param ctx the parse tree
+ */
+ void exitCatches(Java8Parser.CatchesContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void enterCatchClause(Java8Parser.CatchClauseContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#catchClause}.
+ * @param ctx the parse tree
+ */
+ void exitCatchClause(Java8Parser.CatchClauseContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#catchFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void enterCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#catchFormalParameter}.
+ * @param ctx the parse tree
+ */
+ void exitCatchFormalParameter(Java8Parser.CatchFormalParameterContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#catchType}.
+ * @param ctx the parse tree
+ */
+ void enterCatchType(Java8Parser.CatchTypeContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#catchType}.
+ * @param ctx the parse tree
+ */
+ void exitCatchType(Java8Parser.CatchTypeContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#finally_}.
+ * @param ctx the parse tree
+ */
+ void enterFinally_(Java8Parser.Finally_Context ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#finally_}.
+ * @param ctx the parse tree
+ */
+ void exitFinally_(Java8Parser.Finally_Context ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}.
+ * @param ctx the parse tree
+ */
+ void enterTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#tryWithResourcesStatement}.
+ * @param ctx the parse tree
+ */
+ void exitTryWithResourcesStatement(Java8Parser.TryWithResourcesStatementContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void enterResourceSpecification(Java8Parser.ResourceSpecificationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#resourceSpecification}.
+ * @param ctx the parse tree
+ */
+ void exitResourceSpecification(Java8Parser.ResourceSpecificationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#resourceList}.
+ * @param ctx the parse tree
+ */
+ void enterResourceList(Java8Parser.ResourceListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#resourceList}.
+ * @param ctx the parse tree
+ */
+ void exitResourceList(Java8Parser.ResourceListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#resource}.
+ * @param ctx the parse tree
+ */
+ void enterResource(Java8Parser.ResourceContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#resource}.
+ * @param ctx the parse tree
+ */
+ void exitResource(Java8Parser.ResourceContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimary(Java8Parser.PrimaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimary(Java8Parser.PrimaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray(Java8Parser.PrimaryNoNewArrayContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lf_arrayAccess(Java8Parser.PrimaryNoNewArray_lf_arrayAccessContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lfno_arrayAccess(Java8Parser.PrimaryNoNewArray_lfno_arrayAccessContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(Java8Parser.PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(Java8Parser.PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}.
+ * @param ctx the parse tree
+ */
+ void enterClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression}.
+ * @param ctx the parse tree
+ */
+ void exitClassInstanceCreationExpression(Java8Parser.ClassInstanceCreationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitClassInstanceCreationExpression_lf_primary(Java8Parser.ClassInstanceCreationExpression_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#classInstanceCreationExpression_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitClassInstanceCreationExpression_lfno_primary(Java8Parser.ClassInstanceCreationExpression_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void enterTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#typeArgumentsOrDiamond}.
+ * @param ctx the parse tree
+ */
+ void exitTypeArgumentsOrDiamond(Java8Parser.TypeArgumentsOrDiamondContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#fieldAccess}.
+ * @param ctx the parse tree
+ */
+ void enterFieldAccess(Java8Parser.FieldAccessContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#fieldAccess}.
+ * @param ctx the parse tree
+ */
+ void exitFieldAccess(Java8Parser.FieldAccessContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitFieldAccess_lf_primary(Java8Parser.FieldAccess_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#fieldAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitFieldAccess_lfno_primary(Java8Parser.FieldAccess_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void enterArrayAccess(Java8Parser.ArrayAccessContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayAccess}.
+ * @param ctx the parse tree
+ */
+ void exitArrayAccess(Java8Parser.ArrayAccessContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitArrayAccess_lf_primary(Java8Parser.ArrayAccess_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayAccess_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitArrayAccess_lfno_primary(Java8Parser.ArrayAccess_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodInvocation}.
+ * @param ctx the parse tree
+ */
+ void enterMethodInvocation(Java8Parser.MethodInvocationContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodInvocation}.
+ * @param ctx the parse tree
+ */
+ void exitMethodInvocation(Java8Parser.MethodInvocationContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitMethodInvocation_lf_primary(Java8Parser.MethodInvocation_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodInvocation_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitMethodInvocation_lfno_primary(Java8Parser.MethodInvocation_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#argumentList}.
+ * @param ctx the parse tree
+ */
+ void enterArgumentList(Java8Parser.ArgumentListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#argumentList}.
+ * @param ctx the parse tree
+ */
+ void exitArgumentList(Java8Parser.ArgumentListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodReference}.
+ * @param ctx the parse tree
+ */
+ void enterMethodReference(Java8Parser.MethodReferenceContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodReference}.
+ * @param ctx the parse tree
+ */
+ void exitMethodReference(Java8Parser.MethodReferenceContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodReference_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void enterMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodReference_lf_primary}.
+ * @param ctx the parse tree
+ */
+ void exitMethodReference_lf_primary(Java8Parser.MethodReference_lf_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void enterMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#methodReference_lfno_primary}.
+ * @param ctx the parse tree
+ */
+ void exitMethodReference_lfno_primary(Java8Parser.MethodReference_lfno_primaryContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#arrayCreationExpression}.
+ * @param ctx the parse tree
+ */
+ void enterArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#arrayCreationExpression}.
+ * @param ctx the parse tree
+ */
+ void exitArrayCreationExpression(Java8Parser.ArrayCreationExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#dimExprs}.
+ * @param ctx the parse tree
+ */
+ void enterDimExprs(Java8Parser.DimExprsContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#dimExprs}.
+ * @param ctx the parse tree
+ */
+ void exitDimExprs(Java8Parser.DimExprsContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#dimExpr}.
+ * @param ctx the parse tree
+ */
+ void enterDimExpr(Java8Parser.DimExprContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#dimExpr}.
+ * @param ctx the parse tree
+ */
+ void exitDimExpr(Java8Parser.DimExprContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#constantExpression}.
+ * @param ctx the parse tree
+ */
+ void enterConstantExpression(Java8Parser.ConstantExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#constantExpression}.
+ * @param ctx the parse tree
+ */
+ void exitConstantExpression(Java8Parser.ConstantExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#expression}.
+ * @param ctx the parse tree
+ */
+ void enterExpression(Java8Parser.ExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#expression}.
+ * @param ctx the parse tree
+ */
+ void exitExpression(Java8Parser.ExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaExpression(Java8Parser.LambdaExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#lambdaExpression}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaExpression(Java8Parser.LambdaExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaParameters(Java8Parser.LambdaParametersContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#lambdaParameters}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaParameters(Java8Parser.LambdaParametersContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#inferredFormalParameterList}.
+ * @param ctx the parse tree
+ */
+ void enterInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#inferredFormalParameterList}.
+ * @param ctx the parse tree
+ */
+ void exitInferredFormalParameterList(Java8Parser.InferredFormalParameterListContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void enterLambdaBody(Java8Parser.LambdaBodyContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#lambdaBody}.
+ * @param ctx the parse tree
+ */
+ void exitLambdaBody(Java8Parser.LambdaBodyContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#assignmentExpression}.
+ * @param ctx the parse tree
+ */
+ void enterAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#assignmentExpression}.
+ * @param ctx the parse tree
+ */
+ void exitAssignmentExpression(Java8Parser.AssignmentExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#assignment}.
+ * @param ctx the parse tree
+ */
+ void enterAssignment(Java8Parser.AssignmentContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#assignment}.
+ * @param ctx the parse tree
+ */
+ void exitAssignment(Java8Parser.AssignmentContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#leftHandSide}.
+ * @param ctx the parse tree
+ */
+ void enterLeftHandSide(Java8Parser.LeftHandSideContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#leftHandSide}.
+ * @param ctx the parse tree
+ */
+ void exitLeftHandSide(Java8Parser.LeftHandSideContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#assignmentOperator}.
+ * @param ctx the parse tree
+ */
+ void enterAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#assignmentOperator}.
+ * @param ctx the parse tree
+ */
+ void exitAssignmentOperator(Java8Parser.AssignmentOperatorContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#conditionalExpression}.
+ * @param ctx the parse tree
+ */
+ void enterConditionalExpression(Java8Parser.ConditionalExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#conditionalExpression}.
+ * @param ctx the parse tree
+ */
+ void exitConditionalExpression(Java8Parser.ConditionalExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#conditionalOrExpression}.
+ * @param ctx the parse tree
+ */
+ void enterConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#conditionalOrExpression}.
+ * @param ctx the parse tree
+ */
+ void exitConditionalOrExpression(Java8Parser.ConditionalOrExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#conditionalAndExpression}.
+ * @param ctx the parse tree
+ */
+ void enterConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#conditionalAndExpression}.
+ * @param ctx the parse tree
+ */
+ void exitConditionalAndExpression(Java8Parser.ConditionalAndExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#inclusiveOrExpression}.
+ * @param ctx the parse tree
+ */
+ void enterInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#inclusiveOrExpression}.
+ * @param ctx the parse tree
+ */
+ void exitInclusiveOrExpression(Java8Parser.InclusiveOrExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#exclusiveOrExpression}.
+ * @param ctx the parse tree
+ */
+ void enterExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#exclusiveOrExpression}.
+ * @param ctx the parse tree
+ */
+ void exitExclusiveOrExpression(Java8Parser.ExclusiveOrExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#andExpression}.
+ * @param ctx the parse tree
+ */
+ void enterAndExpression(Java8Parser.AndExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#andExpression}.
+ * @param ctx the parse tree
+ */
+ void exitAndExpression(Java8Parser.AndExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#equalityExpression}.
+ * @param ctx the parse tree
+ */
+ void enterEqualityExpression(Java8Parser.EqualityExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#equalityExpression}.
+ * @param ctx the parse tree
+ */
+ void exitEqualityExpression(Java8Parser.EqualityExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#relationalExpression}.
+ * @param ctx the parse tree
+ */
+ void enterRelationalExpression(Java8Parser.RelationalExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#relationalExpression}.
+ * @param ctx the parse tree
+ */
+ void exitRelationalExpression(Java8Parser.RelationalExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#shiftExpression}.
+ * @param ctx the parse tree
+ */
+ void enterShiftExpression(Java8Parser.ShiftExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#shiftExpression}.
+ * @param ctx the parse tree
+ */
+ void exitShiftExpression(Java8Parser.ShiftExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#additiveExpression}.
+ * @param ctx the parse tree
+ */
+ void enterAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#additiveExpression}.
+ * @param ctx the parse tree
+ */
+ void exitAdditiveExpression(Java8Parser.AdditiveExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#multiplicativeExpression}.
+ * @param ctx the parse tree
+ */
+ void enterMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#multiplicativeExpression}.
+ * @param ctx the parse tree
+ */
+ void exitMultiplicativeExpression(Java8Parser.MultiplicativeExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unaryExpression}.
+ * @param ctx the parse tree
+ */
+ void enterUnaryExpression(Java8Parser.UnaryExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unaryExpression}.
+ * @param ctx the parse tree
+ */
+ void exitUnaryExpression(Java8Parser.UnaryExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#preIncrementExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#preIncrementExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPreIncrementExpression(Java8Parser.PreIncrementExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#preDecrementExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#preDecrementExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPreDecrementExpression(Java8Parser.PreDecrementExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}.
+ * @param ctx the parse tree
+ */
+ void enterUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#unaryExpressionNotPlusMinus}.
+ * @param ctx the parse tree
+ */
+ void exitUnaryExpressionNotPlusMinus(Java8Parser.UnaryExpressionNotPlusMinusContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPostfixExpression(Java8Parser.PostfixExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPostfixExpression(Java8Parser.PostfixExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPostIncrementExpression(Java8Parser.PostIncrementExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#postIncrementExpression_lf_postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPostIncrementExpression_lf_postfixExpression(Java8Parser.PostIncrementExpression_lf_postfixExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPostDecrementExpression(Java8Parser.PostDecrementExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void enterPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#postDecrementExpression_lf_postfixExpression}.
+ * @param ctx the parse tree
+ */
+ void exitPostDecrementExpression_lf_postfixExpression(Java8Parser.PostDecrementExpression_lf_postfixExpressionContext ctx);
+ /**
+ * Enter a parse tree produced by {@link Java8Parser#castExpression}.
+ * @param ctx the parse tree
+ */
+ void enterCastExpression(Java8Parser.CastExpressionContext ctx);
+ /**
+ * Exit a parse tree produced by {@link Java8Parser#castExpression}.
+ * @param ctx the parse tree
+ */
+ void exitCastExpression(Java8Parser.CastExpressionContext ctx);
+}
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/antlr/Java8Parser.java b/benchmarks/src/main/java/org/antlr/Java8Parser.java
new file mode 100644
index 000000000..76672e734
--- /dev/null
+++ b/benchmarks/src/main/java/org/antlr/Java8Parser.java
@@ -0,0 +1,20153 @@
+// Generated from Java8.g4 by ANTLR 4.13.1
+
+package org.antlr;
+
+import org.antlr.v4.runtime.atn.*;
+import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
+import org.antlr.v4.runtime.tree.*;
+import java.util.List;
+
+@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"})
+public class Java8Parser extends Parser {
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
+
+ protected static final DFA[] _decisionToDFA;
+ protected static final PredictionContextCache _sharedContextCache =
+ new PredictionContextCache();
+ public static final int
+ ABSTRACT=1, ASSERT=2, BOOLEAN=3, BREAK=4, BYTE=5, CASE=6, CATCH=7, CHAR=8,
+ CLASS=9, CONST=10, CONTINUE=11, DEFAULT=12, DO=13, DOUBLE=14, ELSE=15,
+ ENUM=16, EXTENDS=17, FINAL=18, FINALLY=19, FLOAT=20, FOR=21, IF=22, GOTO=23,
+ IMPLEMENTS=24, IMPORT=25, INSTANCEOF=26, INT=27, INTERFACE=28, LONG=29,
+ NATIVE=30, NEW=31, PACKAGE=32, PRIVATE=33, PROTECTED=34, PUBLIC=35, RETURN=36,
+ SHORT=37, STATIC=38, STRICTFP=39, SUPER=40, SWITCH=41, SYNCHRONIZED=42,
+ THIS=43, THROW=44, THROWS=45, TRANSIENT=46, TRY=47, VOID=48, VOLATILE=49,
+ WHILE=50, IntegerLiteral=51, FloatingPointLiteral=52, BooleanLiteral=53,
+ CharacterLiteral=54, StringLiteral=55, NullLiteral=56, LPAREN=57, RPAREN=58,
+ LBRACE=59, RBRACE=60, LBRACK=61, RBRACK=62, SEMI=63, COMMA=64, DOT=65,
+ ASSIGN=66, GT=67, LT=68, BANG=69, TILDE=70, QUESTION=71, COLON=72, EQUAL=73,
+ LE=74, GE=75, NOTEQUAL=76, AND=77, OR=78, INC=79, DEC=80, ADD=81, SUB=82,
+ MUL=83, DIV=84, BITAND=85, BITOR=86, CARET=87, MOD=88, ARROW=89, COLONCOLON=90,
+ ADD_ASSIGN=91, SUB_ASSIGN=92, MUL_ASSIGN=93, DIV_ASSIGN=94, AND_ASSIGN=95,
+ OR_ASSIGN=96, XOR_ASSIGN=97, MOD_ASSIGN=98, LSHIFT_ASSIGN=99, RSHIFT_ASSIGN=100,
+ URSHIFT_ASSIGN=101, Identifier=102, AT=103, ELLIPSIS=104, WS=105, COMMENT=106,
+ LINE_COMMENT=107;
+ public static final int
+ RULE_literal = 0, RULE_type = 1, RULE_primitiveType = 2, RULE_numericType = 3,
+ RULE_integralType = 4, RULE_floatingPointType = 5, RULE_referenceType = 6,
+ RULE_classOrInterfaceType = 7, RULE_classType = 8, RULE_classType_lf_classOrInterfaceType = 9,
+ RULE_classType_lfno_classOrInterfaceType = 10, RULE_interfaceType = 11,
+ RULE_interfaceType_lf_classOrInterfaceType = 12, RULE_interfaceType_lfno_classOrInterfaceType = 13,
+ RULE_typeVariable = 14, RULE_arrayType = 15, RULE_dims = 16, RULE_typeParameter = 17,
+ RULE_typeParameterModifier = 18, RULE_typeBound = 19, RULE_additionalBound = 20,
+ RULE_typeArguments = 21, RULE_typeArgumentList = 22, RULE_typeArgument = 23,
+ RULE_wildcard = 24, RULE_wildcardBounds = 25, RULE_packageName = 26, RULE_typeName = 27,
+ RULE_packageOrTypeName = 28, RULE_expressionName = 29, RULE_methodName = 30,
+ RULE_ambiguousName = 31, RULE_compilationUnit = 32, RULE_packageDeclaration = 33,
+ RULE_packageModifier = 34, RULE_importDeclaration = 35, RULE_singleTypeImportDeclaration = 36,
+ RULE_typeImportOnDemandDeclaration = 37, RULE_singleStaticImportDeclaration = 38,
+ RULE_staticImportOnDemandDeclaration = 39, RULE_typeDeclaration = 40,
+ RULE_classDeclaration = 41, RULE_normalClassDeclaration = 42, RULE_classModifier = 43,
+ RULE_typeParameters = 44, RULE_typeParameterList = 45, RULE_superclass = 46,
+ RULE_superinterfaces = 47, RULE_interfaceTypeList = 48, RULE_classBody = 49,
+ RULE_classBodyDeclaration = 50, RULE_classMemberDeclaration = 51, RULE_fieldDeclaration = 52,
+ RULE_fieldModifier = 53, RULE_variableDeclaratorList = 54, RULE_variableDeclarator = 55,
+ RULE_variableDeclaratorId = 56, RULE_variableInitializer = 57, RULE_unannType = 58,
+ RULE_unannPrimitiveType = 59, RULE_unannReferenceType = 60, RULE_unannClassOrInterfaceType = 61,
+ RULE_unannClassType = 62, RULE_unannClassType_lf_unannClassOrInterfaceType = 63,
+ RULE_unannClassType_lfno_unannClassOrInterfaceType = 64, RULE_unannInterfaceType = 65,
+ RULE_unannInterfaceType_lf_unannClassOrInterfaceType = 66, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType = 67,
+ RULE_unannTypeVariable = 68, RULE_unannArrayType = 69, RULE_methodDeclaration = 70,
+ RULE_methodModifier = 71, RULE_methodHeader = 72, RULE_result = 73, RULE_methodDeclarator = 74,
+ RULE_formalParameterList = 75, RULE_formalParameters = 76, RULE_formalParameter = 77,
+ RULE_variableModifier = 78, RULE_lastFormalParameter = 79, RULE_receiverParameter = 80,
+ RULE_throws_ = 81, RULE_exceptionTypeList = 82, RULE_exceptionType = 83,
+ RULE_methodBody = 84, RULE_instanceInitializer = 85, RULE_staticInitializer = 86,
+ RULE_constructorDeclaration = 87, RULE_constructorModifier = 88, RULE_constructorDeclarator = 89,
+ RULE_simpleTypeName = 90, RULE_constructorBody = 91, RULE_explicitConstructorInvocation = 92,
+ RULE_enumDeclaration = 93, RULE_enumBody = 94, RULE_enumConstantList = 95,
+ RULE_enumConstant = 96, RULE_enumConstantModifier = 97, RULE_enumBodyDeclarations = 98,
+ RULE_interfaceDeclaration = 99, RULE_normalInterfaceDeclaration = 100,
+ RULE_interfaceModifier = 101, RULE_extendsInterfaces = 102, RULE_interfaceBody = 103,
+ RULE_interfaceMemberDeclaration = 104, RULE_constantDeclaration = 105,
+ RULE_constantModifier = 106, RULE_interfaceMethodDeclaration = 107, RULE_interfaceMethodModifier = 108,
+ RULE_annotationTypeDeclaration = 109, RULE_annotationTypeBody = 110, RULE_annotationTypeMemberDeclaration = 111,
+ RULE_annotationTypeElementDeclaration = 112, RULE_annotationTypeElementModifier = 113,
+ RULE_defaultValue = 114, RULE_annotation = 115, RULE_normalAnnotation = 116,
+ RULE_elementValuePairList = 117, RULE_elementValuePair = 118, RULE_elementValue = 119,
+ RULE_elementValueArrayInitializer = 120, RULE_elementValueList = 121,
+ RULE_markerAnnotation = 122, RULE_singleElementAnnotation = 123, RULE_arrayInitializer = 124,
+ RULE_variableInitializerList = 125, RULE_block = 126, RULE_blockStatements = 127,
+ RULE_blockStatement = 128, RULE_localVariableDeclarationStatement = 129,
+ RULE_localVariableDeclaration = 130, RULE_statement = 131, RULE_statementNoShortIf = 132,
+ RULE_statementWithoutTrailingSubstatement = 133, RULE_emptyStatement = 134,
+ RULE_labeledStatement = 135, RULE_labeledStatementNoShortIf = 136, RULE_expressionStatement = 137,
+ RULE_statementExpression = 138, RULE_ifThenStatement = 139, RULE_ifThenElseStatement = 140,
+ RULE_ifThenElseStatementNoShortIf = 141, RULE_assertStatement = 142, RULE_switchStatement = 143,
+ RULE_switchBlock = 144, RULE_switchBlockStatementGroup = 145, RULE_switchLabels = 146,
+ RULE_switchLabel = 147, RULE_enumConstantName = 148, RULE_whileStatement = 149,
+ RULE_whileStatementNoShortIf = 150, RULE_doStatement = 151, RULE_forStatement = 152,
+ RULE_forStatementNoShortIf = 153, RULE_basicForStatement = 154, RULE_basicForStatementNoShortIf = 155,
+ RULE_forInit = 156, RULE_forUpdate = 157, RULE_statementExpressionList = 158,
+ RULE_enhancedForStatement = 159, RULE_enhancedForStatementNoShortIf = 160,
+ RULE_breakStatement = 161, RULE_continueStatement = 162, RULE_returnStatement = 163,
+ RULE_throwStatement = 164, RULE_synchronizedStatement = 165, RULE_tryStatement = 166,
+ RULE_catches = 167, RULE_catchClause = 168, RULE_catchFormalParameter = 169,
+ RULE_catchType = 170, RULE_finally_ = 171, RULE_tryWithResourcesStatement = 172,
+ RULE_resourceSpecification = 173, RULE_resourceList = 174, RULE_resource = 175,
+ RULE_primary = 176, RULE_primaryNoNewArray = 177, RULE_primaryNoNewArray_lf_arrayAccess = 178,
+ RULE_primaryNoNewArray_lfno_arrayAccess = 179, RULE_primaryNoNewArray_lf_primary = 180,
+ RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary = 181, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary = 182,
+ RULE_primaryNoNewArray_lfno_primary = 183, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary = 184,
+ RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary = 185,
+ RULE_classInstanceCreationExpression = 186, RULE_classInstanceCreationExpression_lf_primary = 187,
+ RULE_classInstanceCreationExpression_lfno_primary = 188, RULE_typeArgumentsOrDiamond = 189,
+ RULE_fieldAccess = 190, RULE_fieldAccess_lf_primary = 191, RULE_fieldAccess_lfno_primary = 192,
+ RULE_arrayAccess = 193, RULE_arrayAccess_lf_primary = 194, RULE_arrayAccess_lfno_primary = 195,
+ RULE_methodInvocation = 196, RULE_methodInvocation_lf_primary = 197, RULE_methodInvocation_lfno_primary = 198,
+ RULE_argumentList = 199, RULE_methodReference = 200, RULE_methodReference_lf_primary = 201,
+ RULE_methodReference_lfno_primary = 202, RULE_arrayCreationExpression = 203,
+ RULE_dimExprs = 204, RULE_dimExpr = 205, RULE_constantExpression = 206,
+ RULE_expression = 207, RULE_lambdaExpression = 208, RULE_lambdaParameters = 209,
+ RULE_inferredFormalParameterList = 210, RULE_lambdaBody = 211, RULE_assignmentExpression = 212,
+ RULE_assignment = 213, RULE_leftHandSide = 214, RULE_assignmentOperator = 215,
+ RULE_conditionalExpression = 216, RULE_conditionalOrExpression = 217,
+ RULE_conditionalAndExpression = 218, RULE_inclusiveOrExpression = 219,
+ RULE_exclusiveOrExpression = 220, RULE_andExpression = 221, RULE_equalityExpression = 222,
+ RULE_relationalExpression = 223, RULE_shiftExpression = 224, RULE_additiveExpression = 225,
+ RULE_multiplicativeExpression = 226, RULE_unaryExpression = 227, RULE_preIncrementExpression = 228,
+ RULE_preDecrementExpression = 229, RULE_unaryExpressionNotPlusMinus = 230,
+ RULE_postfixExpression = 231, RULE_postIncrementExpression = 232, RULE_postIncrementExpression_lf_postfixExpression = 233,
+ RULE_postDecrementExpression = 234, RULE_postDecrementExpression_lf_postfixExpression = 235,
+ RULE_castExpression = 236;
+ private static String[] makeRuleNames() {
+ return new String[] {
+ "literal", "type", "primitiveType", "numericType", "integralType", "floatingPointType",
+ "referenceType", "classOrInterfaceType", "classType", "classType_lf_classOrInterfaceType",
+ "classType_lfno_classOrInterfaceType", "interfaceType", "interfaceType_lf_classOrInterfaceType",
+ "interfaceType_lfno_classOrInterfaceType", "typeVariable", "arrayType",
+ "dims", "typeParameter", "typeParameterModifier", "typeBound", "additionalBound",
+ "typeArguments", "typeArgumentList", "typeArgument", "wildcard", "wildcardBounds",
+ "packageName", "typeName", "packageOrTypeName", "expressionName", "methodName",
+ "ambiguousName", "compilationUnit", "packageDeclaration", "packageModifier",
+ "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration",
+ "singleStaticImportDeclaration", "staticImportOnDemandDeclaration", "typeDeclaration",
+ "classDeclaration", "normalClassDeclaration", "classModifier", "typeParameters",
+ "typeParameterList", "superclass", "superinterfaces", "interfaceTypeList",
+ "classBody", "classBodyDeclaration", "classMemberDeclaration", "fieldDeclaration",
+ "fieldModifier", "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId",
+ "variableInitializer", "unannType", "unannPrimitiveType", "unannReferenceType",
+ "unannClassOrInterfaceType", "unannClassType", "unannClassType_lf_unannClassOrInterfaceType",
+ "unannClassType_lfno_unannClassOrInterfaceType", "unannInterfaceType",
+ "unannInterfaceType_lf_unannClassOrInterfaceType", "unannInterfaceType_lfno_unannClassOrInterfaceType",
+ "unannTypeVariable", "unannArrayType", "methodDeclaration", "methodModifier",
+ "methodHeader", "result", "methodDeclarator", "formalParameterList",
+ "formalParameters", "formalParameter", "variableModifier", "lastFormalParameter",
+ "receiverParameter", "throws_", "exceptionTypeList", "exceptionType",
+ "methodBody", "instanceInitializer", "staticInitializer", "constructorDeclaration",
+ "constructorModifier", "constructorDeclarator", "simpleTypeName", "constructorBody",
+ "explicitConstructorInvocation", "enumDeclaration", "enumBody", "enumConstantList",
+ "enumConstant", "enumConstantModifier", "enumBodyDeclarations", "interfaceDeclaration",
+ "normalInterfaceDeclaration", "interfaceModifier", "extendsInterfaces",
+ "interfaceBody", "interfaceMemberDeclaration", "constantDeclaration",
+ "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier",
+ "annotationTypeDeclaration", "annotationTypeBody", "annotationTypeMemberDeclaration",
+ "annotationTypeElementDeclaration", "annotationTypeElementModifier",
+ "defaultValue", "annotation", "normalAnnotation", "elementValuePairList",
+ "elementValuePair", "elementValue", "elementValueArrayInitializer", "elementValueList",
+ "markerAnnotation", "singleElementAnnotation", "arrayInitializer", "variableInitializerList",
+ "block", "blockStatements", "blockStatement", "localVariableDeclarationStatement",
+ "localVariableDeclaration", "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement",
+ "emptyStatement", "labeledStatement", "labeledStatementNoShortIf", "expressionStatement",
+ "statementExpression", "ifThenStatement", "ifThenElseStatement", "ifThenElseStatementNoShortIf",
+ "assertStatement", "switchStatement", "switchBlock", "switchBlockStatementGroup",
+ "switchLabels", "switchLabel", "enumConstantName", "whileStatement",
+ "whileStatementNoShortIf", "doStatement", "forStatement", "forStatementNoShortIf",
+ "basicForStatement", "basicForStatementNoShortIf", "forInit", "forUpdate",
+ "statementExpressionList", "enhancedForStatement", "enhancedForStatementNoShortIf",
+ "breakStatement", "continueStatement", "returnStatement", "throwStatement",
+ "synchronizedStatement", "tryStatement", "catches", "catchClause", "catchFormalParameter",
+ "catchType", "finally_", "tryWithResourcesStatement", "resourceSpecification",
+ "resourceList", "resource", "primary", "primaryNoNewArray", "primaryNoNewArray_lf_arrayAccess",
+ "primaryNoNewArray_lfno_arrayAccess", "primaryNoNewArray_lf_primary",
+ "primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary", "primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary",
+ "primaryNoNewArray_lfno_primary", "primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary",
+ "primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary", "classInstanceCreationExpression",
+ "classInstanceCreationExpression_lf_primary", "classInstanceCreationExpression_lfno_primary",
+ "typeArgumentsOrDiamond", "fieldAccess", "fieldAccess_lf_primary", "fieldAccess_lfno_primary",
+ "arrayAccess", "arrayAccess_lf_primary", "arrayAccess_lfno_primary",
+ "methodInvocation", "methodInvocation_lf_primary", "methodInvocation_lfno_primary",
+ "argumentList", "methodReference", "methodReference_lf_primary", "methodReference_lfno_primary",
+ "arrayCreationExpression", "dimExprs", "dimExpr", "constantExpression",
+ "expression", "lambdaExpression", "lambdaParameters", "inferredFormalParameterList",
+ "lambdaBody", "assignmentExpression", "assignment", "leftHandSide", "assignmentOperator",
+ "conditionalExpression", "conditionalOrExpression", "conditionalAndExpression",
+ "inclusiveOrExpression", "exclusiveOrExpression", "andExpression", "equalityExpression",
+ "relationalExpression", "shiftExpression", "additiveExpression", "multiplicativeExpression",
+ "unaryExpression", "preIncrementExpression", "preDecrementExpression",
+ "unaryExpressionNotPlusMinus", "postfixExpression", "postIncrementExpression",
+ "postIncrementExpression_lf_postfixExpression", "postDecrementExpression",
+ "postDecrementExpression_lf_postfixExpression", "castExpression"
+ };
+ }
+ public static final String[] ruleNames = makeRuleNames();
+
+ private static String[] makeLiteralNames() {
+ return new String[] {
+ null, "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", "'case'",
+ "'catch'", "'char'", "'class'", "'const'", "'continue'", "'default'",
+ "'do'", "'double'", "'else'", "'enum'", "'extends'", "'final'", "'finally'",
+ "'float'", "'for'", "'if'", "'goto'", "'implements'", "'import'", "'instanceof'",
+ "'int'", "'interface'", "'long'", "'native'", "'new'", "'package'", "'private'",
+ "'protected'", "'public'", "'return'", "'short'", "'static'", "'strictfp'",
+ "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", "'throws'",
+ "'transient'", "'try'", "'void'", "'volatile'", "'while'", null, null,
+ null, null, null, "'null'", "'('", "')'", "'{'", "'}'", "'['", "']'",
+ "';'", "','", "'.'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'",
+ "'=='", "'<='", "'>='", "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'",
+ "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'->'", "'::'", "'+='",
+ "'-='", "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='",
+ "'>>>='", null, "'@'", "'...'"
+ };
+ }
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
+ private static String[] makeSymbolicNames() {
+ return new String[] {
+ null, "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH",
+ "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE",
+ "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO",
+ "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE",
+ "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT",
+ "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", "THIS", "THROW",
+ "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "IntegerLiteral",
+ "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", "StringLiteral",
+ "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK",
+ "SEMI", "COMMA", "DOT", "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION",
+ "COLON", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC",
+ "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", "ARROW",
+ "COLONCOLON", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN",
+ "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN",
+ "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "AT", "ELLIPSIS", "WS",
+ "COMMENT", "LINE_COMMENT"
+ };
+ }
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
+
+ /**
+ * @deprecated Use {@link #VOCABULARY} instead.
+ */
+ @Deprecated
+ public static final String[] tokenNames;
+ static {
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
+ for (int i = 0; i < tokenNames.length; i++) {
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
+ if (tokenNames[i] == null) {
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
+ }
+
+ if (tokenNames[i] == null) {
+ tokenNames[i] = "";
+ }
+ }
+ }
+
+ @Override
+ @Deprecated
+ public String[] getTokenNames() {
+ return tokenNames;
+ }
+
+ @Override
+
+ public Vocabulary getVocabulary() {
+ return VOCABULARY;
+ }
+
+ @Override
+ public String getGrammarFileName() { return "Java8.g4"; }
+
+ @Override
+ public String[] getRuleNames() { return ruleNames; }
+
+ @Override
+ public String getSerializedATN() { return _serializedATN; }
+
+ @Override
+ public ATN getATN() { return _ATN; }
+
+ public Java8Parser(TokenStream input) {
+ super(input);
+ _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LiteralContext extends ParserRuleContext {
+ public TerminalNode IntegerLiteral() { return getToken(Java8Parser.IntegerLiteral, 0); }
+ public TerminalNode FloatingPointLiteral() { return getToken(Java8Parser.FloatingPointLiteral, 0); }
+ public TerminalNode BooleanLiteral() { return getToken(Java8Parser.BooleanLiteral, 0); }
+ public TerminalNode CharacterLiteral() { return getToken(Java8Parser.CharacterLiteral, 0); }
+ public TerminalNode StringLiteral() { return getToken(Java8Parser.StringLiteral, 0); }
+ public TerminalNode NullLiteral() { return getToken(Java8Parser.NullLiteral, 0); }
+ public LiteralContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_literal; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLiteral(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLiteral(this);
+ }
+ }
+
+ public final LiteralContext literal() throws RecognitionException {
+ LiteralContext _localctx = new LiteralContext(_ctx, getState());
+ enterRule(_localctx, 0, RULE_literal);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(474);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 141863388262170624L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeContext extends ParserRuleContext {
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public TypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_type; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitType(this);
+ }
+ }
+
+ public final TypeContext type() throws RecognitionException {
+ TypeContext _localctx = new TypeContext(_ctx, getState());
+ enterRule(_localctx, 2, RULE_type);
+ try {
+ setState(478);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,0,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(476);
+ primitiveType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(477);
+ referenceType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimitiveTypeContext extends ParserRuleContext {
+ public NumericTypeContext numericType() {
+ return getRuleContext(NumericTypeContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TerminalNode BOOLEAN() { return getToken(Java8Parser.BOOLEAN, 0); }
+ public PrimitiveTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primitiveType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimitiveType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimitiveType(this);
+ }
+ }
+
+ public final PrimitiveTypeContext primitiveType() throws RecognitionException {
+ PrimitiveTypeContext _localctx = new PrimitiveTypeContext(_ctx, getState());
+ enterRule(_localctx, 4, RULE_primitiveType);
+ int _la;
+ try {
+ setState(494);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(483);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(480);
+ annotation();
+ }
+ }
+ setState(485);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(486);
+ numericType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(490);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(487);
+ annotation();
+ }
+ }
+ setState(492);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(493);
+ match(BOOLEAN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NumericTypeContext extends ParserRuleContext {
+ public IntegralTypeContext integralType() {
+ return getRuleContext(IntegralTypeContext.class,0);
+ }
+ public FloatingPointTypeContext floatingPointType() {
+ return getRuleContext(FloatingPointTypeContext.class,0);
+ }
+ public NumericTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_numericType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNumericType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNumericType(this);
+ }
+ }
+
+ public final NumericTypeContext numericType() throws RecognitionException {
+ NumericTypeContext _localctx = new NumericTypeContext(_ctx, getState());
+ enterRule(_localctx, 6, RULE_numericType);
+ try {
+ setState(498);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BYTE:
+ case CHAR:
+ case INT:
+ case LONG:
+ case SHORT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(496);
+ integralType();
+ }
+ break;
+ case DOUBLE:
+ case FLOAT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(497);
+ floatingPointType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IntegralTypeContext extends ParserRuleContext {
+ public TerminalNode BYTE() { return getToken(Java8Parser.BYTE, 0); }
+ public TerminalNode SHORT() { return getToken(Java8Parser.SHORT, 0); }
+ public TerminalNode INT() { return getToken(Java8Parser.INT, 0); }
+ public TerminalNode LONG() { return getToken(Java8Parser.LONG, 0); }
+ public TerminalNode CHAR() { return getToken(Java8Parser.CHAR, 0); }
+ public IntegralTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_integralType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIntegralType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIntegralType(this);
+ }
+ }
+
+ public final IntegralTypeContext integralType() throws RecognitionException {
+ IntegralTypeContext _localctx = new IntegralTypeContext(_ctx, getState());
+ enterRule(_localctx, 8, RULE_integralType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(500);
+ _la = _input.LA(1);
+ if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 138110042400L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FloatingPointTypeContext extends ParserRuleContext {
+ public TerminalNode FLOAT() { return getToken(Java8Parser.FLOAT, 0); }
+ public TerminalNode DOUBLE() { return getToken(Java8Parser.DOUBLE, 0); }
+ public FloatingPointTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_floatingPointType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFloatingPointType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFloatingPointType(this);
+ }
+ }
+
+ public final FloatingPointTypeContext floatingPointType() throws RecognitionException {
+ FloatingPointTypeContext _localctx = new FloatingPointTypeContext(_ctx, getState());
+ enterRule(_localctx, 10, RULE_floatingPointType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(502);
+ _la = _input.LA(1);
+ if ( !(_la==DOUBLE || _la==FLOAT) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReferenceTypeContext extends ParserRuleContext {
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public TypeVariableContext typeVariable() {
+ return getRuleContext(TypeVariableContext.class,0);
+ }
+ public ArrayTypeContext arrayType() {
+ return getRuleContext(ArrayTypeContext.class,0);
+ }
+ public ReferenceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_referenceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReferenceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReferenceType(this);
+ }
+ }
+
+ public final ReferenceTypeContext referenceType() throws RecognitionException {
+ ReferenceTypeContext _localctx = new ReferenceTypeContext(_ctx, getState());
+ enterRule(_localctx, 12, RULE_referenceType);
+ try {
+ setState(507);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(504);
+ classOrInterfaceType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(505);
+ typeVariable();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(506);
+ arrayType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassOrInterfaceTypeContext extends ParserRuleContext {
+ public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() {
+ return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0);
+ }
+ public InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() {
+ return getRuleContext(InterfaceType_lfno_classOrInterfaceTypeContext.class,0);
+ }
+ public List classType_lf_classOrInterfaceType() {
+ return getRuleContexts(ClassType_lf_classOrInterfaceTypeContext.class);
+ }
+ public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType(int i) {
+ return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,i);
+ }
+ public List interfaceType_lf_classOrInterfaceType() {
+ return getRuleContexts(InterfaceType_lf_classOrInterfaceTypeContext.class);
+ }
+ public InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType(int i) {
+ return getRuleContext(InterfaceType_lf_classOrInterfaceTypeContext.class,i);
+ }
+ public ClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassOrInterfaceType(this);
+ }
+ }
+
+ public final ClassOrInterfaceTypeContext classOrInterfaceType() throws RecognitionException {
+ ClassOrInterfaceTypeContext _localctx = new ClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 14, RULE_classOrInterfaceType);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(511);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) {
+ case 1:
+ {
+ setState(509);
+ classType_lfno_classOrInterfaceType();
+ }
+ break;
+ case 2:
+ {
+ setState(510);
+ interfaceType_lfno_classOrInterfaceType();
+ }
+ break;
+ }
+ setState(517);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(515);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) {
+ case 1:
+ {
+ setState(513);
+ classType_lf_classOrInterfaceType();
+ }
+ break;
+ case 2:
+ {
+ setState(514);
+ interfaceType_lf_classOrInterfaceType();
+ }
+ break;
+ }
+ }
+ }
+ setState(519);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassTypeContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public ClassTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType(this);
+ }
+ }
+
+ public final ClassTypeContext classType() throws RecognitionException {
+ ClassTypeContext _localctx = new ClassTypeContext(_ctx, getState());
+ enterRule(_localctx, 16, RULE_classType);
+ int _la;
+ try {
+ setState(542);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(523);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(520);
+ annotation();
+ }
+ }
+ setState(525);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(526);
+ match(Identifier);
+ setState(528);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(527);
+ typeArguments();
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(530);
+ classOrInterfaceType();
+ setState(531);
+ match(DOT);
+ setState(535);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(532);
+ annotation();
+ }
+ }
+ setState(537);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(538);
+ match(Identifier);
+ setState(540);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(539);
+ typeArguments();
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassType_lf_classOrInterfaceTypeContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ClassType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classType_lf_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lf_classOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lf_classOrInterfaceType(this);
+ }
+ }
+
+ public final ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() throws RecognitionException {
+ ClassType_lf_classOrInterfaceTypeContext _localctx = new ClassType_lf_classOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 18, RULE_classType_lf_classOrInterfaceType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(544);
+ match(DOT);
+ setState(548);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(545);
+ annotation();
+ }
+ }
+ setState(550);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(551);
+ match(Identifier);
+ setState(553);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,15,_ctx) ) {
+ case 1:
+ {
+ setState(552);
+ typeArguments();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassType_lfno_classOrInterfaceTypeContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ClassType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classType_lfno_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassType_lfno_classOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassType_lfno_classOrInterfaceType(this);
+ }
+ }
+
+ public final ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() throws RecognitionException {
+ ClassType_lfno_classOrInterfaceTypeContext _localctx = new ClassType_lfno_classOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 20, RULE_classType_lfno_classOrInterfaceType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(558);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(555);
+ annotation();
+ }
+ }
+ setState(560);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(561);
+ match(Identifier);
+ setState(563);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
+ case 1:
+ {
+ setState(562);
+ typeArguments();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceTypeContext extends ParserRuleContext {
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public InterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType(this);
+ }
+ }
+
+ public final InterfaceTypeContext interfaceType() throws RecognitionException {
+ InterfaceTypeContext _localctx = new InterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 22, RULE_interfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(565);
+ classType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceType_lf_classOrInterfaceTypeContext extends ParserRuleContext {
+ public ClassType_lf_classOrInterfaceTypeContext classType_lf_classOrInterfaceType() {
+ return getRuleContext(ClassType_lf_classOrInterfaceTypeContext.class,0);
+ }
+ public InterfaceType_lf_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceType_lf_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lf_classOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lf_classOrInterfaceType(this);
+ }
+ }
+
+ public final InterfaceType_lf_classOrInterfaceTypeContext interfaceType_lf_classOrInterfaceType() throws RecognitionException {
+ InterfaceType_lf_classOrInterfaceTypeContext _localctx = new InterfaceType_lf_classOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 24, RULE_interfaceType_lf_classOrInterfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(567);
+ classType_lf_classOrInterfaceType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceType_lfno_classOrInterfaceTypeContext extends ParserRuleContext {
+ public ClassType_lfno_classOrInterfaceTypeContext classType_lfno_classOrInterfaceType() {
+ return getRuleContext(ClassType_lfno_classOrInterfaceTypeContext.class,0);
+ }
+ public InterfaceType_lfno_classOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceType_lfno_classOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceType_lfno_classOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceType_lfno_classOrInterfaceType(this);
+ }
+ }
+
+ public final InterfaceType_lfno_classOrInterfaceTypeContext interfaceType_lfno_classOrInterfaceType() throws RecognitionException {
+ InterfaceType_lfno_classOrInterfaceTypeContext _localctx = new InterfaceType_lfno_classOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 26, RULE_interfaceType_lfno_classOrInterfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(569);
+ classType_lfno_classOrInterfaceType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeVariableContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeVariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeVariable; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeVariable(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeVariable(this);
+ }
+ }
+
+ public final TypeVariableContext typeVariable() throws RecognitionException {
+ TypeVariableContext _localctx = new TypeVariableContext(_ctx, getState());
+ enterRule(_localctx, 28, RULE_typeVariable);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(574);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(571);
+ annotation();
+ }
+ }
+ setState(576);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(577);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayTypeContext extends ParserRuleContext {
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public TypeVariableContext typeVariable() {
+ return getRuleContext(TypeVariableContext.class,0);
+ }
+ public ArrayTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayType(this);
+ }
+ }
+
+ public final ArrayTypeContext arrayType() throws RecognitionException {
+ ArrayTypeContext _localctx = new ArrayTypeContext(_ctx, getState());
+ enterRule(_localctx, 30, RULE_arrayType);
+ try {
+ setState(588);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(579);
+ primitiveType();
+ setState(580);
+ dims();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(582);
+ classOrInterfaceType();
+ setState(583);
+ dims();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(585);
+ typeVariable();
+ setState(586);
+ dims();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DimsContext extends ParserRuleContext {
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public DimsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dims; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDims(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDims(this);
+ }
+ }
+
+ public final DimsContext dims() throws RecognitionException {
+ DimsContext _localctx = new DimsContext(_ctx, getState());
+ enterRule(_localctx, 32, RULE_dims);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(593);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(590);
+ annotation();
+ }
+ }
+ setState(595);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(596);
+ match(LBRACK);
+ setState(597);
+ match(RBRACK);
+ setState(608);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(601);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(598);
+ annotation();
+ }
+ }
+ setState(603);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(604);
+ match(LBRACK);
+ setState(605);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(610);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,22,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeParameterContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List typeParameterModifier() {
+ return getRuleContexts(TypeParameterModifierContext.class);
+ }
+ public TypeParameterModifierContext typeParameterModifier(int i) {
+ return getRuleContext(TypeParameterModifierContext.class,i);
+ }
+ public TypeBoundContext typeBound() {
+ return getRuleContext(TypeBoundContext.class,0);
+ }
+ public TypeParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameter(this);
+ }
+ }
+
+ public final TypeParameterContext typeParameter() throws RecognitionException {
+ TypeParameterContext _localctx = new TypeParameterContext(_ctx, getState());
+ enterRule(_localctx, 34, RULE_typeParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(614);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(611);
+ typeParameterModifier();
+ }
+ }
+ setState(616);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(617);
+ match(Identifier);
+ setState(619);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(618);
+ typeBound();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeParameterModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TypeParameterModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameterModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterModifier(this);
+ }
+ }
+
+ public final TypeParameterModifierContext typeParameterModifier() throws RecognitionException {
+ TypeParameterModifierContext _localctx = new TypeParameterModifierContext(_ctx, getState());
+ enterRule(_localctx, 36, RULE_typeParameterModifier);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(621);
+ annotation();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeBoundContext extends ParserRuleContext {
+ public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); }
+ public TypeVariableContext typeVariable() {
+ return getRuleContext(TypeVariableContext.class,0);
+ }
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public List additionalBound() {
+ return getRuleContexts(AdditionalBoundContext.class);
+ }
+ public AdditionalBoundContext additionalBound(int i) {
+ return getRuleContext(AdditionalBoundContext.class,i);
+ }
+ public TypeBoundContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeBound; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeBound(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeBound(this);
+ }
+ }
+
+ public final TypeBoundContext typeBound() throws RecognitionException {
+ TypeBoundContext _localctx = new TypeBoundContext(_ctx, getState());
+ enterRule(_localctx, 38, RULE_typeBound);
+ int _la;
+ try {
+ setState(633);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(623);
+ match(EXTENDS);
+ setState(624);
+ typeVariable();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(625);
+ match(EXTENDS);
+ setState(626);
+ classOrInterfaceType();
+ setState(630);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITAND) {
+ {
+ {
+ setState(627);
+ additionalBound();
+ }
+ }
+ setState(632);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AdditionalBoundContext extends ParserRuleContext {
+ public TerminalNode BITAND() { return getToken(Java8Parser.BITAND, 0); }
+ public InterfaceTypeContext interfaceType() {
+ return getRuleContext(InterfaceTypeContext.class,0);
+ }
+ public AdditionalBoundContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_additionalBound; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditionalBound(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditionalBound(this);
+ }
+ }
+
+ public final AdditionalBoundContext additionalBound() throws RecognitionException {
+ AdditionalBoundContext _localctx = new AdditionalBoundContext(_ctx, getState());
+ enterRule(_localctx, 40, RULE_additionalBound);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(635);
+ match(BITAND);
+ setState(636);
+ interfaceType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeArgumentsContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(Java8Parser.LT, 0); }
+ public TypeArgumentListContext typeArgumentList() {
+ return getRuleContext(TypeArgumentListContext.class,0);
+ }
+ public TerminalNode GT() { return getToken(Java8Parser.GT, 0); }
+ public TypeArgumentsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArguments; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArguments(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArguments(this);
+ }
+ }
+
+ public final TypeArgumentsContext typeArguments() throws RecognitionException {
+ TypeArgumentsContext _localctx = new TypeArgumentsContext(_ctx, getState());
+ enterRule(_localctx, 42, RULE_typeArguments);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(638);
+ match(LT);
+ setState(639);
+ typeArgumentList();
+ setState(640);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeArgumentListContext extends ParserRuleContext {
+ public List typeArgument() {
+ return getRuleContexts(TypeArgumentContext.class);
+ }
+ public TypeArgumentContext typeArgument(int i) {
+ return getRuleContext(TypeArgumentContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public TypeArgumentListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArgumentList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgumentList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentList(this);
+ }
+ }
+
+ public final TypeArgumentListContext typeArgumentList() throws RecognitionException {
+ TypeArgumentListContext _localctx = new TypeArgumentListContext(_ctx, getState());
+ enterRule(_localctx, 44, RULE_typeArgumentList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(642);
+ typeArgument();
+ setState(647);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(643);
+ match(COMMA);
+ setState(644);
+ typeArgument();
+ }
+ }
+ setState(649);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeArgumentContext extends ParserRuleContext {
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public WildcardContext wildcard() {
+ return getRuleContext(WildcardContext.class,0);
+ }
+ public TypeArgumentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArgument; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgument(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgument(this);
+ }
+ }
+
+ public final TypeArgumentContext typeArgument() throws RecognitionException {
+ TypeArgumentContext _localctx = new TypeArgumentContext(_ctx, getState());
+ enterRule(_localctx, 46, RULE_typeArgument);
+ try {
+ setState(652);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,28,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(650);
+ referenceType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(651);
+ wildcard();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WildcardContext extends ParserRuleContext {
+ public TerminalNode QUESTION() { return getToken(Java8Parser.QUESTION, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public WildcardBoundsContext wildcardBounds() {
+ return getRuleContext(WildcardBoundsContext.class,0);
+ }
+ public WildcardContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_wildcard; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcard(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcard(this);
+ }
+ }
+
+ public final WildcardContext wildcard() throws RecognitionException {
+ WildcardContext _localctx = new WildcardContext(_ctx, getState());
+ enterRule(_localctx, 48, RULE_wildcard);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(657);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(654);
+ annotation();
+ }
+ }
+ setState(659);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(660);
+ match(QUESTION);
+ setState(662);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS || _la==SUPER) {
+ {
+ setState(661);
+ wildcardBounds();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WildcardBoundsContext extends ParserRuleContext {
+ public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public WildcardBoundsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_wildcardBounds; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWildcardBounds(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWildcardBounds(this);
+ }
+ }
+
+ public final WildcardBoundsContext wildcardBounds() throws RecognitionException {
+ WildcardBoundsContext _localctx = new WildcardBoundsContext(_ctx, getState());
+ enterRule(_localctx, 50, RULE_wildcardBounds);
+ try {
+ setState(668);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case EXTENDS:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(664);
+ match(EXTENDS);
+ setState(665);
+ referenceType();
+ }
+ break;
+ case SUPER:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(666);
+ match(SUPER);
+ setState(667);
+ referenceType();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PackageNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public PackageNameContext packageName() {
+ return getRuleContext(PackageNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public PackageNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageName(this);
+ }
+ }
+
+ public final PackageNameContext packageName() throws RecognitionException {
+ return packageName(0);
+ }
+
+ private PackageNameContext packageName(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ PackageNameContext _localctx = new PackageNameContext(_ctx, _parentState);
+ PackageNameContext _prevctx = _localctx;
+ int _startState = 52;
+ enterRecursionRule(_localctx, 52, RULE_packageName, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(671);
+ match(Identifier);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(678);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new PackageNameContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_packageName);
+ setState(673);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(674);
+ match(DOT);
+ setState(675);
+ match(Identifier);
+ }
+ }
+ }
+ setState(680);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,32,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public PackageOrTypeNameContext packageOrTypeName() {
+ return getRuleContext(PackageOrTypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeName(this);
+ }
+ }
+
+ public final TypeNameContext typeName() throws RecognitionException {
+ TypeNameContext _localctx = new TypeNameContext(_ctx, getState());
+ enterRule(_localctx, 54, RULE_typeName);
+ try {
+ setState(686);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(681);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(682);
+ packageOrTypeName(0);
+ setState(683);
+ match(DOT);
+ setState(684);
+ match(Identifier);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PackageOrTypeNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public PackageOrTypeNameContext packageOrTypeName() {
+ return getRuleContext(PackageOrTypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public PackageOrTypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageOrTypeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageOrTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageOrTypeName(this);
+ }
+ }
+
+ public final PackageOrTypeNameContext packageOrTypeName() throws RecognitionException {
+ return packageOrTypeName(0);
+ }
+
+ private PackageOrTypeNameContext packageOrTypeName(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ PackageOrTypeNameContext _localctx = new PackageOrTypeNameContext(_ctx, _parentState);
+ PackageOrTypeNameContext _prevctx = _localctx;
+ int _startState = 56;
+ enterRecursionRule(_localctx, 56, RULE_packageOrTypeName, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(689);
+ match(Identifier);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(696);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new PackageOrTypeNameContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_packageOrTypeName);
+ setState(691);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(692);
+ match(DOT);
+ setState(693);
+ match(Identifier);
+ }
+ }
+ }
+ setState(698);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,34,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public AmbiguousNameContext ambiguousName() {
+ return getRuleContext(AmbiguousNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public ExpressionNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionName(this);
+ }
+ }
+
+ public final ExpressionNameContext expressionName() throws RecognitionException {
+ ExpressionNameContext _localctx = new ExpressionNameContext(_ctx, getState());
+ enterRule(_localctx, 58, RULE_expressionName);
+ try {
+ setState(704);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(699);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(700);
+ ambiguousName(0);
+ setState(701);
+ match(DOT);
+ setState(702);
+ match(Identifier);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public MethodNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodName(this);
+ }
+ }
+
+ public final MethodNameContext methodName() throws RecognitionException {
+ MethodNameContext _localctx = new MethodNameContext(_ctx, getState());
+ enterRule(_localctx, 60, RULE_methodName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(706);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AmbiguousNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public AmbiguousNameContext ambiguousName() {
+ return getRuleContext(AmbiguousNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public AmbiguousNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ambiguousName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAmbiguousName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAmbiguousName(this);
+ }
+ }
+
+ public final AmbiguousNameContext ambiguousName() throws RecognitionException {
+ return ambiguousName(0);
+ }
+
+ private AmbiguousNameContext ambiguousName(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ AmbiguousNameContext _localctx = new AmbiguousNameContext(_ctx, _parentState);
+ AmbiguousNameContext _prevctx = _localctx;
+ int _startState = 62;
+ enterRecursionRule(_localctx, 62, RULE_ambiguousName, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(709);
+ match(Identifier);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(716);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new AmbiguousNameContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_ambiguousName);
+ setState(711);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(712);
+ match(DOT);
+ setState(713);
+ match(Identifier);
+ }
+ }
+ }
+ setState(718);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,36,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CompilationUnitContext extends ParserRuleContext {
+ public TerminalNode EOF() { return getToken(Java8Parser.EOF, 0); }
+ public PackageDeclarationContext packageDeclaration() {
+ return getRuleContext(PackageDeclarationContext.class,0);
+ }
+ public List importDeclaration() {
+ return getRuleContexts(ImportDeclarationContext.class);
+ }
+ public ImportDeclarationContext importDeclaration(int i) {
+ return getRuleContext(ImportDeclarationContext.class,i);
+ }
+ public List typeDeclaration() {
+ return getRuleContexts(TypeDeclarationContext.class);
+ }
+ public TypeDeclarationContext typeDeclaration(int i) {
+ return getRuleContext(TypeDeclarationContext.class,i);
+ }
+ public CompilationUnitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_compilationUnit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCompilationUnit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCompilationUnit(this);
+ }
+ }
+
+ public final CompilationUnitContext compilationUnit() throws RecognitionException {
+ CompilationUnitContext _localctx = new CompilationUnitContext(_ctx, getState());
+ enterRule(_localctx, 64, RULE_compilationUnit);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(720);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) {
+ case 1:
+ {
+ setState(719);
+ packageDeclaration();
+ }
+ break;
+ }
+ setState(725);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==IMPORT) {
+ {
+ {
+ setState(722);
+ importDeclaration();
+ }
+ }
+ setState(727);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(731);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223371151822749182L) != 0) || _la==AT) {
+ {
+ {
+ setState(728);
+ typeDeclaration();
+ }
+ }
+ setState(733);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(734);
+ match(EOF);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PackageDeclarationContext extends ParserRuleContext {
+ public TerminalNode PACKAGE() { return getToken(Java8Parser.PACKAGE, 0); }
+ public List Identifier() { return getTokens(Java8Parser.Identifier); }
+ public TerminalNode Identifier(int i) {
+ return getToken(Java8Parser.Identifier, i);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public List packageModifier() {
+ return getRuleContexts(PackageModifierContext.class);
+ }
+ public PackageModifierContext packageModifier(int i) {
+ return getRuleContext(PackageModifierContext.class,i);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public PackageDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageDeclaration(this);
+ }
+ }
+
+ public final PackageDeclarationContext packageDeclaration() throws RecognitionException {
+ PackageDeclarationContext _localctx = new PackageDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 66, RULE_packageDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(739);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(736);
+ packageModifier();
+ }
+ }
+ setState(741);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(742);
+ match(PACKAGE);
+ setState(743);
+ match(Identifier);
+ setState(748);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DOT) {
+ {
+ {
+ setState(744);
+ match(DOT);
+ setState(745);
+ match(Identifier);
+ }
+ }
+ setState(750);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(751);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PackageModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public PackageModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_packageModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPackageModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPackageModifier(this);
+ }
+ }
+
+ public final PackageModifierContext packageModifier() throws RecognitionException {
+ PackageModifierContext _localctx = new PackageModifierContext(_ctx, getState());
+ enterRule(_localctx, 68, RULE_packageModifier);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(753);
+ annotation();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ImportDeclarationContext extends ParserRuleContext {
+ public SingleTypeImportDeclarationContext singleTypeImportDeclaration() {
+ return getRuleContext(SingleTypeImportDeclarationContext.class,0);
+ }
+ public TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() {
+ return getRuleContext(TypeImportOnDemandDeclarationContext.class,0);
+ }
+ public SingleStaticImportDeclarationContext singleStaticImportDeclaration() {
+ return getRuleContext(SingleStaticImportDeclarationContext.class,0);
+ }
+ public StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() {
+ return getRuleContext(StaticImportOnDemandDeclarationContext.class,0);
+ }
+ public ImportDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_importDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterImportDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitImportDeclaration(this);
+ }
+ }
+
+ public final ImportDeclarationContext importDeclaration() throws RecognitionException {
+ ImportDeclarationContext _localctx = new ImportDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 70, RULE_importDeclaration);
+ try {
+ setState(759);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(755);
+ singleTypeImportDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(756);
+ typeImportOnDemandDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(757);
+ singleStaticImportDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(758);
+ staticImportOnDemandDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SingleTypeImportDeclarationContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public SingleTypeImportDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_singleTypeImportDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleTypeImportDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleTypeImportDeclaration(this);
+ }
+ }
+
+ public final SingleTypeImportDeclarationContext singleTypeImportDeclaration() throws RecognitionException {
+ SingleTypeImportDeclarationContext _localctx = new SingleTypeImportDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 72, RULE_singleTypeImportDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(761);
+ match(IMPORT);
+ setState(762);
+ typeName();
+ setState(763);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeImportOnDemandDeclarationContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); }
+ public PackageOrTypeNameContext packageOrTypeName() {
+ return getRuleContext(PackageOrTypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TypeImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeImportOnDemandDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeImportOnDemandDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeImportOnDemandDeclaration(this);
+ }
+ }
+
+ public final TypeImportOnDemandDeclarationContext typeImportOnDemandDeclaration() throws RecognitionException {
+ TypeImportOnDemandDeclarationContext _localctx = new TypeImportOnDemandDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 74, RULE_typeImportOnDemandDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(765);
+ match(IMPORT);
+ setState(766);
+ packageOrTypeName(0);
+ setState(767);
+ match(DOT);
+ setState(768);
+ match(MUL);
+ setState(769);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SingleStaticImportDeclarationContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public SingleStaticImportDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_singleStaticImportDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleStaticImportDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleStaticImportDeclaration(this);
+ }
+ }
+
+ public final SingleStaticImportDeclarationContext singleStaticImportDeclaration() throws RecognitionException {
+ SingleStaticImportDeclarationContext _localctx = new SingleStaticImportDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 76, RULE_singleStaticImportDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(771);
+ match(IMPORT);
+ setState(772);
+ match(STATIC);
+ setState(773);
+ typeName();
+ setState(774);
+ match(DOT);
+ setState(775);
+ match(Identifier);
+ setState(776);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StaticImportOnDemandDeclarationContext extends ParserRuleContext {
+ public TerminalNode IMPORT() { return getToken(Java8Parser.IMPORT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public StaticImportOnDemandDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_staticImportOnDemandDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticImportOnDemandDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticImportOnDemandDeclaration(this);
+ }
+ }
+
+ public final StaticImportOnDemandDeclarationContext staticImportOnDemandDeclaration() throws RecognitionException {
+ StaticImportOnDemandDeclarationContext _localctx = new StaticImportOnDemandDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 78, RULE_staticImportOnDemandDeclaration);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(778);
+ match(IMPORT);
+ setState(779);
+ match(STATIC);
+ setState(780);
+ typeName();
+ setState(781);
+ match(DOT);
+ setState(782);
+ match(MUL);
+ setState(783);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeDeclarationContext extends ParserRuleContext {
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TypeDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeDeclaration(this);
+ }
+ }
+
+ public final TypeDeclarationContext typeDeclaration() throws RecognitionException {
+ TypeDeclarationContext _localctx = new TypeDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 80, RULE_typeDeclaration);
+ try {
+ setState(788);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,43,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(785);
+ classDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(786);
+ interfaceDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(787);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassDeclarationContext extends ParserRuleContext {
+ public NormalClassDeclarationContext normalClassDeclaration() {
+ return getRuleContext(NormalClassDeclarationContext.class,0);
+ }
+ public EnumDeclarationContext enumDeclaration() {
+ return getRuleContext(EnumDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassDeclaration(this);
+ }
+ }
+
+ public final ClassDeclarationContext classDeclaration() throws RecognitionException {
+ ClassDeclarationContext _localctx = new ClassDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 82, RULE_classDeclaration);
+ try {
+ setState(792);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(790);
+ normalClassDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(791);
+ enumDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NormalClassDeclarationContext extends ParserRuleContext {
+ public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public List classModifier() {
+ return getRuleContexts(ClassModifierContext.class);
+ }
+ public ClassModifierContext classModifier(int i) {
+ return getRuleContext(ClassModifierContext.class,i);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public SuperclassContext superclass() {
+ return getRuleContext(SuperclassContext.class,0);
+ }
+ public SuperinterfacesContext superinterfaces() {
+ return getRuleContext(SuperinterfacesContext.class,0);
+ }
+ public NormalClassDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_normalClassDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalClassDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalClassDeclaration(this);
+ }
+ }
+
+ public final NormalClassDeclarationContext normalClassDeclaration() throws RecognitionException {
+ NormalClassDeclarationContext _localctx = new NormalClassDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 84, RULE_normalClassDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(797);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763525122L) != 0) || _la==AT) {
+ {
+ {
+ setState(794);
+ classModifier();
+ }
+ }
+ setState(799);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(800);
+ match(CLASS);
+ setState(801);
+ match(Identifier);
+ setState(803);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(802);
+ typeParameters();
+ }
+ }
+
+ setState(806);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(805);
+ superclass();
+ }
+ }
+
+ setState(809);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IMPLEMENTS) {
+ {
+ setState(808);
+ superinterfaces();
+ }
+ }
+
+ setState(811);
+ classBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); }
+ public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); }
+ public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); }
+ public ClassModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassModifier(this);
+ }
+ }
+
+ public final ClassModifierContext classModifier() throws RecognitionException {
+ ClassModifierContext _localctx = new ClassModifierContext(_ctx, getState());
+ enterRule(_localctx, 86, RULE_classModifier);
+ try {
+ setState(821);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(813);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(814);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(815);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(816);
+ match(PRIVATE);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(817);
+ match(ABSTRACT);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(818);
+ match(STATIC);
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(819);
+ match(FINAL);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(820);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeParametersContext extends ParserRuleContext {
+ public TerminalNode LT() { return getToken(Java8Parser.LT, 0); }
+ public TypeParameterListContext typeParameterList() {
+ return getRuleContext(TypeParameterListContext.class,0);
+ }
+ public TerminalNode GT() { return getToken(Java8Parser.GT, 0); }
+ public TypeParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameters(this);
+ }
+ }
+
+ public final TypeParametersContext typeParameters() throws RecognitionException {
+ TypeParametersContext _localctx = new TypeParametersContext(_ctx, getState());
+ enterRule(_localctx, 88, RULE_typeParameters);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(823);
+ match(LT);
+ setState(824);
+ typeParameterList();
+ setState(825);
+ match(GT);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeParameterListContext extends ParserRuleContext {
+ public List typeParameter() {
+ return getRuleContexts(TypeParameterContext.class);
+ }
+ public TypeParameterContext typeParameter(int i) {
+ return getRuleContext(TypeParameterContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public TypeParameterListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeParameterList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeParameterList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeParameterList(this);
+ }
+ }
+
+ public final TypeParameterListContext typeParameterList() throws RecognitionException {
+ TypeParameterListContext _localctx = new TypeParameterListContext(_ctx, getState());
+ enterRule(_localctx, 90, RULE_typeParameterList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(827);
+ typeParameter();
+ setState(832);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(828);
+ match(COMMA);
+ setState(829);
+ typeParameter();
+ }
+ }
+ setState(834);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SuperclassContext extends ParserRuleContext {
+ public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); }
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public SuperclassContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_superclass; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperclass(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperclass(this);
+ }
+ }
+
+ public final SuperclassContext superclass() throws RecognitionException {
+ SuperclassContext _localctx = new SuperclassContext(_ctx, getState());
+ enterRule(_localctx, 92, RULE_superclass);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(835);
+ match(EXTENDS);
+ setState(836);
+ classType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SuperinterfacesContext extends ParserRuleContext {
+ public TerminalNode IMPLEMENTS() { return getToken(Java8Parser.IMPLEMENTS, 0); }
+ public InterfaceTypeListContext interfaceTypeList() {
+ return getRuleContext(InterfaceTypeListContext.class,0);
+ }
+ public SuperinterfacesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_superinterfaces; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSuperinterfaces(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSuperinterfaces(this);
+ }
+ }
+
+ public final SuperinterfacesContext superinterfaces() throws RecognitionException {
+ SuperinterfacesContext _localctx = new SuperinterfacesContext(_ctx, getState());
+ enterRule(_localctx, 94, RULE_superinterfaces);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(838);
+ match(IMPLEMENTS);
+ setState(839);
+ interfaceTypeList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceTypeListContext extends ParserRuleContext {
+ public List interfaceType() {
+ return getRuleContexts(InterfaceTypeContext.class);
+ }
+ public InterfaceTypeContext interfaceType(int i) {
+ return getRuleContext(InterfaceTypeContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public InterfaceTypeListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceTypeList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceTypeList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceTypeList(this);
+ }
+ }
+
+ public final InterfaceTypeListContext interfaceTypeList() throws RecognitionException {
+ InterfaceTypeListContext _localctx = new InterfaceTypeListContext(_ctx, getState());
+ enterRule(_localctx, 96, RULE_interfaceTypeList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(841);
+ interfaceType();
+ setState(846);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(842);
+ match(COMMA);
+ setState(843);
+ interfaceType();
+ }
+ }
+ setState(848);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public ClassBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBody(this);
+ }
+ }
+
+ public final ClassBodyContext classBody() throws RecognitionException {
+ ClassBodyContext _localctx = new ClassBodyContext(_ctx, getState());
+ enterRule(_localctx, 98, RULE_classBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(849);
+ match(LBRACE);
+ setState(853);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8645991068613655766L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) {
+ {
+ {
+ setState(850);
+ classBodyDeclaration();
+ }
+ }
+ setState(855);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(856);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassBodyDeclarationContext extends ParserRuleContext {
+ public ClassMemberDeclarationContext classMemberDeclaration() {
+ return getRuleContext(ClassMemberDeclarationContext.class,0);
+ }
+ public InstanceInitializerContext instanceInitializer() {
+ return getRuleContext(InstanceInitializerContext.class,0);
+ }
+ public StaticInitializerContext staticInitializer() {
+ return getRuleContext(StaticInitializerContext.class,0);
+ }
+ public ConstructorDeclarationContext constructorDeclaration() {
+ return getRuleContext(ConstructorDeclarationContext.class,0);
+ }
+ public ClassBodyDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classBodyDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassBodyDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassBodyDeclaration(this);
+ }
+ }
+
+ public final ClassBodyDeclarationContext classBodyDeclaration() throws RecognitionException {
+ ClassBodyDeclarationContext _localctx = new ClassBodyDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 100, RULE_classBodyDeclaration);
+ try {
+ setState(862);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,53,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(858);
+ classMemberDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(859);
+ instanceInitializer();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(860);
+ staticInitializer();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(861);
+ constructorDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassMemberDeclarationContext extends ParserRuleContext {
+ public FieldDeclarationContext fieldDeclaration() {
+ return getRuleContext(FieldDeclarationContext.class,0);
+ }
+ public MethodDeclarationContext methodDeclaration() {
+ return getRuleContext(MethodDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public ClassMemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classMemberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassMemberDeclaration(this);
+ }
+ }
+
+ public final ClassMemberDeclarationContext classMemberDeclaration() throws RecognitionException {
+ ClassMemberDeclarationContext _localctx = new ClassMemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 102, RULE_classMemberDeclaration);
+ try {
+ setState(869);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,54,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(864);
+ fieldDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(865);
+ methodDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(866);
+ classDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(867);
+ interfaceDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(868);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldDeclarationContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorListContext variableDeclaratorList() {
+ return getRuleContext(VariableDeclaratorListContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public List fieldModifier() {
+ return getRuleContexts(FieldModifierContext.class);
+ }
+ public FieldModifierContext fieldModifier(int i) {
+ return getRuleContext(FieldModifierContext.class,i);
+ }
+ public FieldDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldDeclaration(this);
+ }
+ }
+
+ public final FieldDeclarationContext fieldDeclaration() throws RecognitionException {
+ FieldDeclarationContext _localctx = new FieldDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 104, RULE_fieldDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(874);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 633653705310208L) != 0) || _la==AT) {
+ {
+ {
+ setState(871);
+ fieldModifier();
+ }
+ }
+ setState(876);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(877);
+ unannType();
+ setState(878);
+ variableDeclaratorList();
+ setState(879);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); }
+ public TerminalNode TRANSIENT() { return getToken(Java8Parser.TRANSIENT, 0); }
+ public TerminalNode VOLATILE() { return getToken(Java8Parser.VOLATILE, 0); }
+ public FieldModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldModifier(this);
+ }
+ }
+
+ public final FieldModifierContext fieldModifier() throws RecognitionException {
+ FieldModifierContext _localctx = new FieldModifierContext(_ctx, getState());
+ enterRule(_localctx, 106, RULE_fieldModifier);
+ try {
+ setState(889);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(881);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(882);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(883);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(884);
+ match(PRIVATE);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(885);
+ match(STATIC);
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(886);
+ match(FINAL);
+ }
+ break;
+ case TRANSIENT:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(887);
+ match(TRANSIENT);
+ }
+ break;
+ case VOLATILE:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(888);
+ match(VOLATILE);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableDeclaratorListContext extends ParserRuleContext {
+ public List variableDeclarator() {
+ return getRuleContexts(VariableDeclaratorContext.class);
+ }
+ public VariableDeclaratorContext variableDeclarator(int i) {
+ return getRuleContext(VariableDeclaratorContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public VariableDeclaratorListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclaratorList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorList(this);
+ }
+ }
+
+ public final VariableDeclaratorListContext variableDeclaratorList() throws RecognitionException {
+ VariableDeclaratorListContext _localctx = new VariableDeclaratorListContext(_ctx, getState());
+ enterRule(_localctx, 108, RULE_variableDeclaratorList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(891);
+ variableDeclarator();
+ setState(896);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(892);
+ match(COMMA);
+ setState(893);
+ variableDeclarator();
+ }
+ }
+ setState(898);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableDeclaratorContext extends ParserRuleContext {
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(Java8Parser.ASSIGN, 0); }
+ public VariableInitializerContext variableInitializer() {
+ return getRuleContext(VariableInitializerContext.class,0);
+ }
+ public VariableDeclaratorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclarator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclarator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclarator(this);
+ }
+ }
+
+ public final VariableDeclaratorContext variableDeclarator() throws RecognitionException {
+ VariableDeclaratorContext _localctx = new VariableDeclaratorContext(_ctx, getState());
+ enterRule(_localctx, 110, RULE_variableDeclarator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(899);
+ variableDeclaratorId();
+ setState(902);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==ASSIGN) {
+ {
+ setState(900);
+ match(ASSIGN);
+ setState(901);
+ variableInitializer();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableDeclaratorIdContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public VariableDeclaratorIdContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableDeclaratorId; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableDeclaratorId(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableDeclaratorId(this);
+ }
+ }
+
+ public final VariableDeclaratorIdContext variableDeclaratorId() throws RecognitionException {
+ VariableDeclaratorIdContext _localctx = new VariableDeclaratorIdContext(_ctx, getState());
+ enterRule(_localctx, 112, RULE_variableDeclaratorId);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(904);
+ match(Identifier);
+ setState(906);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACK || _la==AT) {
+ {
+ setState(905);
+ dims();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableInitializerContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ArrayInitializerContext arrayInitializer() {
+ return getRuleContext(ArrayInitializerContext.class,0);
+ }
+ public VariableInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializer(this);
+ }
+ }
+
+ public final VariableInitializerContext variableInitializer() throws RecognitionException {
+ VariableInitializerContext _localctx = new VariableInitializerContext(_ctx, getState());
+ enterRule(_localctx, 114, RULE_variableInitializer);
+ try {
+ setState(910);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case IntegerLiteral:
+ case FloatingPointLiteral:
+ case BooleanLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case NullLiteral:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case INC:
+ case DEC:
+ case ADD:
+ case SUB:
+ case Identifier:
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(908);
+ expression();
+ }
+ break;
+ case LBRACE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(909);
+ arrayInitializer();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannTypeContext extends ParserRuleContext {
+ public UnannPrimitiveTypeContext unannPrimitiveType() {
+ return getRuleContext(UnannPrimitiveTypeContext.class,0);
+ }
+ public UnannReferenceTypeContext unannReferenceType() {
+ return getRuleContext(UnannReferenceTypeContext.class,0);
+ }
+ public UnannTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannType(this);
+ }
+ }
+
+ public final UnannTypeContext unannType() throws RecognitionException {
+ UnannTypeContext _localctx = new UnannTypeContext(_ctx, getState());
+ enterRule(_localctx, 116, RULE_unannType);
+ try {
+ setState(914);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,61,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(912);
+ unannPrimitiveType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(913);
+ unannReferenceType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannPrimitiveTypeContext extends ParserRuleContext {
+ public NumericTypeContext numericType() {
+ return getRuleContext(NumericTypeContext.class,0);
+ }
+ public TerminalNode BOOLEAN() { return getToken(Java8Parser.BOOLEAN, 0); }
+ public UnannPrimitiveTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannPrimitiveType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannPrimitiveType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannPrimitiveType(this);
+ }
+ }
+
+ public final UnannPrimitiveTypeContext unannPrimitiveType() throws RecognitionException {
+ UnannPrimitiveTypeContext _localctx = new UnannPrimitiveTypeContext(_ctx, getState());
+ enterRule(_localctx, 118, RULE_unannPrimitiveType);
+ try {
+ setState(918);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(916);
+ numericType();
+ }
+ break;
+ case BOOLEAN:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(917);
+ match(BOOLEAN);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannReferenceTypeContext extends ParserRuleContext {
+ public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassOrInterfaceTypeContext.class,0);
+ }
+ public UnannTypeVariableContext unannTypeVariable() {
+ return getRuleContext(UnannTypeVariableContext.class,0);
+ }
+ public UnannArrayTypeContext unannArrayType() {
+ return getRuleContext(UnannArrayTypeContext.class,0);
+ }
+ public UnannReferenceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannReferenceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannReferenceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannReferenceType(this);
+ }
+ }
+
+ public final UnannReferenceTypeContext unannReferenceType() throws RecognitionException {
+ UnannReferenceTypeContext _localctx = new UnannReferenceTypeContext(_ctx, getState());
+ enterRule(_localctx, 120, RULE_unannReferenceType);
+ try {
+ setState(923);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,63,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(920);
+ unannClassOrInterfaceType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(921);
+ unannTypeVariable();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(922);
+ unannArrayType();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannClassOrInterfaceTypeContext extends ParserRuleContext {
+ public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0);
+ }
+ public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() {
+ return getRuleContext(UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext.class,0);
+ }
+ public List unannClassType_lf_unannClassOrInterfaceType() {
+ return getRuleContexts(UnannClassType_lf_unannClassOrInterfaceTypeContext.class);
+ }
+ public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType(int i) {
+ return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,i);
+ }
+ public List unannInterfaceType_lf_unannClassOrInterfaceType() {
+ return getRuleContexts(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class);
+ }
+ public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType(int i) {
+ return getRuleContext(UnannInterfaceType_lf_unannClassOrInterfaceTypeContext.class,i);
+ }
+ public UnannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannClassOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassOrInterfaceType(this);
+ }
+ }
+
+ public final UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() throws RecognitionException {
+ UnannClassOrInterfaceTypeContext _localctx = new UnannClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 122, RULE_unannClassOrInterfaceType);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(927);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,64,_ctx) ) {
+ case 1:
+ {
+ setState(925);
+ unannClassType_lfno_unannClassOrInterfaceType();
+ }
+ break;
+ case 2:
+ {
+ setState(926);
+ unannInterfaceType_lfno_unannClassOrInterfaceType();
+ }
+ break;
+ }
+ setState(933);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,66,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(931);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,65,_ctx) ) {
+ case 1:
+ {
+ setState(929);
+ unannClassType_lf_unannClassOrInterfaceType();
+ }
+ break;
+ case 2:
+ {
+ setState(930);
+ unannInterfaceType_lf_unannClassOrInterfaceType();
+ }
+ break;
+ }
+ }
+ }
+ setState(935);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,66,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannClassTypeContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassOrInterfaceTypeContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public UnannClassTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannClassType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType(this);
+ }
+ }
+
+ public final UnannClassTypeContext unannClassType() throws RecognitionException {
+ UnannClassTypeContext _localctx = new UnannClassTypeContext(_ctx, getState());
+ enterRule(_localctx, 124, RULE_unannClassType);
+ int _la;
+ try {
+ setState(952);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,70,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(936);
+ match(Identifier);
+ setState(938);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(937);
+ typeArguments();
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(940);
+ unannClassOrInterfaceType();
+ setState(941);
+ match(DOT);
+ setState(945);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(942);
+ annotation();
+ }
+ }
+ setState(947);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(948);
+ match(Identifier);
+ setState(950);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(949);
+ typeArguments();
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannClassType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public UnannClassType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannClassType_lf_unannClassOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lf_unannClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lf_unannClassOrInterfaceType(this);
+ }
+ }
+
+ public final UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() throws RecognitionException {
+ UnannClassType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lf_unannClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 126, RULE_unannClassType_lf_unannClassOrInterfaceType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(954);
+ match(DOT);
+ setState(958);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(955);
+ annotation();
+ }
+ }
+ setState(960);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(961);
+ match(Identifier);
+ setState(963);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(962);
+ typeArguments();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannClassType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public UnannClassType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannClassType_lfno_unannClassOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannClassType_lfno_unannClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannClassType_lfno_unannClassOrInterfaceType(this);
+ }
+ }
+
+ public final UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() throws RecognitionException {
+ UnannClassType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannClassType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 128, RULE_unannClassType_lfno_unannClassOrInterfaceType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(965);
+ match(Identifier);
+ setState(967);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(966);
+ typeArguments();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannInterfaceTypeContext extends ParserRuleContext {
+ public UnannClassTypeContext unannClassType() {
+ return getRuleContext(UnannClassTypeContext.class,0);
+ }
+ public UnannInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType(this);
+ }
+ }
+
+ public final UnannInterfaceTypeContext unannInterfaceType() throws RecognitionException {
+ UnannInterfaceTypeContext _localctx = new UnannInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 130, RULE_unannInterfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(969);
+ unannClassType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannInterfaceType_lf_unannClassOrInterfaceTypeContext extends ParserRuleContext {
+ public UnannClassType_lf_unannClassOrInterfaceTypeContext unannClassType_lf_unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassType_lf_unannClassOrInterfaceTypeContext.class,0);
+ }
+ public UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannInterfaceType_lf_unannClassOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lf_unannClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lf_unannClassOrInterfaceType(this);
+ }
+ }
+
+ public final UnannInterfaceType_lf_unannClassOrInterfaceTypeContext unannInterfaceType_lf_unannClassOrInterfaceType() throws RecognitionException {
+ UnannInterfaceType_lf_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lf_unannClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 132, RULE_unannInterfaceType_lf_unannClassOrInterfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(971);
+ unannClassType_lf_unannClassOrInterfaceType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext extends ParserRuleContext {
+ public UnannClassType_lfno_unannClassOrInterfaceTypeContext unannClassType_lfno_unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassType_lfno_unannClassOrInterfaceTypeContext.class,0);
+ }
+ public UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannInterfaceType_lfno_unannClassOrInterfaceType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannInterfaceType_lfno_unannClassOrInterfaceType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannInterfaceType_lfno_unannClassOrInterfaceType(this);
+ }
+ }
+
+ public final UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext unannInterfaceType_lfno_unannClassOrInterfaceType() throws RecognitionException {
+ UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext _localctx = new UnannInterfaceType_lfno_unannClassOrInterfaceTypeContext(_ctx, getState());
+ enterRule(_localctx, 134, RULE_unannInterfaceType_lfno_unannClassOrInterfaceType);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(973);
+ unannClassType_lfno_unannClassOrInterfaceType();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannTypeVariableContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public UnannTypeVariableContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannTypeVariable; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannTypeVariable(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannTypeVariable(this);
+ }
+ }
+
+ public final UnannTypeVariableContext unannTypeVariable() throws RecognitionException {
+ UnannTypeVariableContext _localctx = new UnannTypeVariableContext(_ctx, getState());
+ enterRule(_localctx, 136, RULE_unannTypeVariable);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(975);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnannArrayTypeContext extends ParserRuleContext {
+ public UnannPrimitiveTypeContext unannPrimitiveType() {
+ return getRuleContext(UnannPrimitiveTypeContext.class,0);
+ }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public UnannClassOrInterfaceTypeContext unannClassOrInterfaceType() {
+ return getRuleContext(UnannClassOrInterfaceTypeContext.class,0);
+ }
+ public UnannTypeVariableContext unannTypeVariable() {
+ return getRuleContext(UnannTypeVariableContext.class,0);
+ }
+ public UnannArrayTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unannArrayType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnannArrayType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnannArrayType(this);
+ }
+ }
+
+ public final UnannArrayTypeContext unannArrayType() throws RecognitionException {
+ UnannArrayTypeContext _localctx = new UnannArrayTypeContext(_ctx, getState());
+ enterRule(_localctx, 138, RULE_unannArrayType);
+ try {
+ setState(986);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,74,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(977);
+ unannPrimitiveType();
+ setState(978);
+ dims();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(980);
+ unannClassOrInterfaceType();
+ setState(981);
+ dims();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(983);
+ unannTypeVariable();
+ setState(984);
+ dims();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodDeclarationContext extends ParserRuleContext {
+ public MethodHeaderContext methodHeader() {
+ return getRuleContext(MethodHeaderContext.class,0);
+ }
+ public MethodBodyContext methodBody() {
+ return getRuleContext(MethodBodyContext.class,0);
+ }
+ public List methodModifier() {
+ return getRuleContexts(MethodModifierContext.class);
+ }
+ public MethodModifierContext methodModifier(int i) {
+ return getRuleContext(MethodModifierContext.class,i);
+ }
+ public MethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclaration(this);
+ }
+ }
+
+ public final MethodDeclarationContext methodDeclaration() throws RecognitionException {
+ MethodDeclarationContext _localctx = new MethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 140, RULE_methodDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(991);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 5283883778050L) != 0) || _la==AT) {
+ {
+ {
+ setState(988);
+ methodModifier();
+ }
+ }
+ setState(993);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(994);
+ methodHeader();
+ setState(995);
+ methodBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); }
+ public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); }
+ public TerminalNode SYNCHRONIZED() { return getToken(Java8Parser.SYNCHRONIZED, 0); }
+ public TerminalNode NATIVE() { return getToken(Java8Parser.NATIVE, 0); }
+ public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); }
+ public MethodModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodModifier(this);
+ }
+ }
+
+ public final MethodModifierContext methodModifier() throws RecognitionException {
+ MethodModifierContext _localctx = new MethodModifierContext(_ctx, getState());
+ enterRule(_localctx, 142, RULE_methodModifier);
+ try {
+ setState(1007);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(997);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(998);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(999);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1000);
+ match(PRIVATE);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1001);
+ match(ABSTRACT);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1002);
+ match(STATIC);
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1003);
+ match(FINAL);
+ }
+ break;
+ case SYNCHRONIZED:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1004);
+ match(SYNCHRONIZED);
+ }
+ break;
+ case NATIVE:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1005);
+ match(NATIVE);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1006);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodHeaderContext extends ParserRuleContext {
+ public ResultContext result() {
+ return getRuleContext(ResultContext.class,0);
+ }
+ public MethodDeclaratorContext methodDeclarator() {
+ return getRuleContext(MethodDeclaratorContext.class,0);
+ }
+ public Throws_Context throws_() {
+ return getRuleContext(Throws_Context.class,0);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public MethodHeaderContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodHeader; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodHeader(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodHeader(this);
+ }
+ }
+
+ public final MethodHeaderContext methodHeader() throws RecognitionException {
+ MethodHeaderContext _localctx = new MethodHeaderContext(_ctx, getState());
+ enterRule(_localctx, 144, RULE_methodHeader);
+ int _la;
+ try {
+ setState(1026);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case VOID:
+ case Identifier:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1009);
+ result();
+ setState(1010);
+ methodDeclarator();
+ setState(1012);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(1011);
+ throws_();
+ }
+ }
+
+ }
+ break;
+ case LT:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1014);
+ typeParameters();
+ setState(1018);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(1015);
+ annotation();
+ }
+ }
+ setState(1020);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1021);
+ result();
+ setState(1022);
+ methodDeclarator();
+ setState(1024);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(1023);
+ throws_();
+ }
+ }
+
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ResultContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); }
+ public ResultContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_result; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResult(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResult(this);
+ }
+ }
+
+ public final ResultContext result() throws RecognitionException {
+ ResultContext _localctx = new ResultContext(_ctx, getState());
+ enterRule(_localctx, 146, RULE_result);
+ try {
+ setState(1030);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case SHORT:
+ case Identifier:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1028);
+ unannType();
+ }
+ break;
+ case VOID:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1029);
+ match(VOID);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodDeclaratorContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public FormalParameterListContext formalParameterList() {
+ return getRuleContext(FormalParameterListContext.class,0);
+ }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public MethodDeclaratorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodDeclarator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodDeclarator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodDeclarator(this);
+ }
+ }
+
+ public final MethodDeclaratorContext methodDeclarator() throws RecognitionException {
+ MethodDeclaratorContext _localctx = new MethodDeclaratorContext(_ctx, getState());
+ enterRule(_localctx, 148, RULE_methodDeclarator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1032);
+ match(Identifier);
+ setState(1033);
+ match(LPAREN);
+ setState(1035);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) {
+ {
+ setState(1034);
+ formalParameterList();
+ }
+ }
+
+ setState(1037);
+ match(RPAREN);
+ setState(1039);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACK || _la==AT) {
+ {
+ setState(1038);
+ dims();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FormalParameterListContext extends ParserRuleContext {
+ public FormalParametersContext formalParameters() {
+ return getRuleContext(FormalParametersContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); }
+ public LastFormalParameterContext lastFormalParameter() {
+ return getRuleContext(LastFormalParameterContext.class,0);
+ }
+ public FormalParameterListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameterList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameterList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameterList(this);
+ }
+ }
+
+ public final FormalParameterListContext formalParameterList() throws RecognitionException {
+ FormalParameterListContext _localctx = new FormalParameterListContext(_ctx, getState());
+ enterRule(_localctx, 150, RULE_formalParameterList);
+ try {
+ setState(1046);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,84,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1041);
+ formalParameters();
+ setState(1042);
+ match(COMMA);
+ setState(1043);
+ lastFormalParameter();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1045);
+ lastFormalParameter();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FormalParametersContext extends ParserRuleContext {
+ public List formalParameter() {
+ return getRuleContexts(FormalParameterContext.class);
+ }
+ public FormalParameterContext formalParameter(int i) {
+ return getRuleContext(FormalParameterContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public ReceiverParameterContext receiverParameter() {
+ return getRuleContext(ReceiverParameterContext.class,0);
+ }
+ public FormalParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameters(this);
+ }
+ }
+
+ public final FormalParametersContext formalParameters() throws RecognitionException {
+ FormalParametersContext _localctx = new FormalParametersContext(_ctx, getState());
+ enterRule(_localctx, 152, RULE_formalParameters);
+ try {
+ int _alt;
+ setState(1064);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,87,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1048);
+ formalParameter();
+ setState(1053);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,85,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1049);
+ match(COMMA);
+ setState(1050);
+ formalParameter();
+ }
+ }
+ }
+ setState(1055);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,85,_ctx);
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1056);
+ receiverParameter();
+ setState(1061);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,86,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1057);
+ match(COMMA);
+ setState(1058);
+ formalParameter();
+ }
+ }
+ }
+ setState(1063);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,86,_ctx);
+ }
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FormalParameterContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public FormalParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_formalParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFormalParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFormalParameter(this);
+ }
+ }
+
+ public final FormalParameterContext formalParameter() throws RecognitionException {
+ FormalParameterContext _localctx = new FormalParameterContext(_ctx, getState());
+ enterRule(_localctx, 154, RULE_formalParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1069);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1066);
+ variableModifier();
+ }
+ }
+ setState(1071);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1072);
+ unannType();
+ setState(1073);
+ variableDeclaratorId();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); }
+ public VariableModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableModifier(this);
+ }
+ }
+
+ public final VariableModifierContext variableModifier() throws RecognitionException {
+ VariableModifierContext _localctx = new VariableModifierContext(_ctx, getState());
+ enterRule(_localctx, 156, RULE_variableModifier);
+ try {
+ setState(1077);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1075);
+ annotation();
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1076);
+ match(FINAL);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LastFormalParameterContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public TerminalNode ELLIPSIS() { return getToken(Java8Parser.ELLIPSIS, 0); }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public FormalParameterContext formalParameter() {
+ return getRuleContext(FormalParameterContext.class,0);
+ }
+ public LastFormalParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lastFormalParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLastFormalParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLastFormalParameter(this);
+ }
+ }
+
+ public final LastFormalParameterContext lastFormalParameter() throws RecognitionException {
+ LastFormalParameterContext _localctx = new LastFormalParameterContext(_ctx, getState());
+ enterRule(_localctx, 158, RULE_lastFormalParameter);
+ int _la;
+ try {
+ setState(1096);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,92,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1082);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1079);
+ variableModifier();
+ }
+ }
+ setState(1084);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1085);
+ unannType();
+ setState(1089);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(1086);
+ annotation();
+ }
+ }
+ setState(1091);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1092);
+ match(ELLIPSIS);
+ setState(1093);
+ variableDeclaratorId();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1095);
+ formalParameter();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReceiverParameterContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public ReceiverParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_receiverParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReceiverParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReceiverParameter(this);
+ }
+ }
+
+ public final ReceiverParameterContext receiverParameter() throws RecognitionException {
+ ReceiverParameterContext _localctx = new ReceiverParameterContext(_ctx, getState());
+ enterRule(_localctx, 160, RULE_receiverParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1101);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(1098);
+ annotation();
+ }
+ }
+ setState(1103);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1104);
+ unannType();
+ setState(1107);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==Identifier) {
+ {
+ setState(1105);
+ match(Identifier);
+ setState(1106);
+ match(DOT);
+ }
+ }
+
+ setState(1109);
+ match(THIS);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class Throws_Context extends ParserRuleContext {
+ public TerminalNode THROWS() { return getToken(Java8Parser.THROWS, 0); }
+ public ExceptionTypeListContext exceptionTypeList() {
+ return getRuleContext(ExceptionTypeListContext.class,0);
+ }
+ public Throws_Context(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_throws_; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrows_(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrows_(this);
+ }
+ }
+
+ public final Throws_Context throws_() throws RecognitionException {
+ Throws_Context _localctx = new Throws_Context(_ctx, getState());
+ enterRule(_localctx, 162, RULE_throws_);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1111);
+ match(THROWS);
+ setState(1112);
+ exceptionTypeList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExceptionTypeListContext extends ParserRuleContext {
+ public List exceptionType() {
+ return getRuleContexts(ExceptionTypeContext.class);
+ }
+ public ExceptionTypeContext exceptionType(int i) {
+ return getRuleContext(ExceptionTypeContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public ExceptionTypeListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exceptionTypeList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionTypeList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionTypeList(this);
+ }
+ }
+
+ public final ExceptionTypeListContext exceptionTypeList() throws RecognitionException {
+ ExceptionTypeListContext _localctx = new ExceptionTypeListContext(_ctx, getState());
+ enterRule(_localctx, 164, RULE_exceptionTypeList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1114);
+ exceptionType();
+ setState(1119);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1115);
+ match(COMMA);
+ setState(1116);
+ exceptionType();
+ }
+ }
+ setState(1121);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExceptionTypeContext extends ParserRuleContext {
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public TypeVariableContext typeVariable() {
+ return getRuleContext(TypeVariableContext.class,0);
+ }
+ public ExceptionTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exceptionType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExceptionType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExceptionType(this);
+ }
+ }
+
+ public final ExceptionTypeContext exceptionType() throws RecognitionException {
+ ExceptionTypeContext _localctx = new ExceptionTypeContext(_ctx, getState());
+ enterRule(_localctx, 166, RULE_exceptionType);
+ try {
+ setState(1124);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,96,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1122);
+ classType();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1123);
+ typeVariable();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodBodyContext extends ParserRuleContext {
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public MethodBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodBody(this);
+ }
+ }
+
+ public final MethodBodyContext methodBody() throws RecognitionException {
+ MethodBodyContext _localctx = new MethodBodyContext(_ctx, getState());
+ enterRule(_localctx, 168, RULE_methodBody);
+ try {
+ setState(1128);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LBRACE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1126);
+ block();
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1127);
+ match(SEMI);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InstanceInitializerContext extends ParserRuleContext {
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public InstanceInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_instanceInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInstanceInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInstanceInitializer(this);
+ }
+ }
+
+ public final InstanceInitializerContext instanceInitializer() throws RecognitionException {
+ InstanceInitializerContext _localctx = new InstanceInitializerContext(_ctx, getState());
+ enterRule(_localctx, 170, RULE_instanceInitializer);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1130);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StaticInitializerContext extends ParserRuleContext {
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public StaticInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_staticInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStaticInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStaticInitializer(this);
+ }
+ }
+
+ public final StaticInitializerContext staticInitializer() throws RecognitionException {
+ StaticInitializerContext _localctx = new StaticInitializerContext(_ctx, getState());
+ enterRule(_localctx, 172, RULE_staticInitializer);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1132);
+ match(STATIC);
+ setState(1133);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstructorDeclarationContext extends ParserRuleContext {
+ public ConstructorDeclaratorContext constructorDeclarator() {
+ return getRuleContext(ConstructorDeclaratorContext.class,0);
+ }
+ public ConstructorBodyContext constructorBody() {
+ return getRuleContext(ConstructorBodyContext.class,0);
+ }
+ public List constructorModifier() {
+ return getRuleContexts(ConstructorModifierContext.class);
+ }
+ public ConstructorModifierContext constructorModifier(int i) {
+ return getRuleContext(ConstructorModifierContext.class,i);
+ }
+ public Throws_Context throws_() {
+ return getRuleContext(Throws_Context.class,0);
+ }
+ public ConstructorDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclaration(this);
+ }
+ }
+
+ public final ConstructorDeclarationContext constructorDeclaration() throws RecognitionException {
+ ConstructorDeclarationContext _localctx = new ConstructorDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 174, RULE_constructorDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1138);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 60129542144L) != 0) || _la==AT) {
+ {
+ {
+ setState(1135);
+ constructorModifier();
+ }
+ }
+ setState(1140);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1141);
+ constructorDeclarator();
+ setState(1143);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==THROWS) {
+ {
+ setState(1142);
+ throws_();
+ }
+ }
+
+ setState(1145);
+ constructorBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstructorModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); }
+ public ConstructorModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorModifier(this);
+ }
+ }
+
+ public final ConstructorModifierContext constructorModifier() throws RecognitionException {
+ ConstructorModifierContext _localctx = new ConstructorModifierContext(_ctx, getState());
+ enterRule(_localctx, 176, RULE_constructorModifier);
+ try {
+ setState(1151);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1147);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1148);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1149);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1150);
+ match(PRIVATE);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstructorDeclaratorContext extends ParserRuleContext {
+ public SimpleTypeNameContext simpleTypeName() {
+ return getRuleContext(SimpleTypeNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public FormalParameterListContext formalParameterList() {
+ return getRuleContext(FormalParameterListContext.class,0);
+ }
+ public ConstructorDeclaratorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorDeclarator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorDeclarator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorDeclarator(this);
+ }
+ }
+
+ public final ConstructorDeclaratorContext constructorDeclarator() throws RecognitionException {
+ ConstructorDeclaratorContext _localctx = new ConstructorDeclaratorContext(_ctx, getState());
+ enterRule(_localctx, 178, RULE_constructorDeclarator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1154);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1153);
+ typeParameters();
+ }
+ }
+
+ setState(1156);
+ simpleTypeName();
+ setState(1157);
+ match(LPAREN);
+ setState(1159);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) {
+ {
+ setState(1158);
+ formalParameterList();
+ }
+ }
+
+ setState(1161);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SimpleTypeNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public SimpleTypeNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_simpleTypeName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSimpleTypeName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSimpleTypeName(this);
+ }
+ }
+
+ public final SimpleTypeNameContext simpleTypeName() throws RecognitionException {
+ SimpleTypeNameContext _localctx = new SimpleTypeNameContext(_ctx, getState());
+ enterRule(_localctx, 180, RULE_simpleTypeName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1163);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstructorBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public ExplicitConstructorInvocationContext explicitConstructorInvocation() {
+ return getRuleContext(ExplicitConstructorInvocationContext.class,0);
+ }
+ public BlockStatementsContext blockStatements() {
+ return getRuleContext(BlockStatementsContext.class,0);
+ }
+ public ConstructorBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constructorBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstructorBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstructorBody(this);
+ }
+ }
+
+ public final ConstructorBodyContext constructorBody() throws RecognitionException {
+ ConstructorBodyContext _localctx = new ConstructorBodyContext(_ctx, getState());
+ enterRule(_localctx, 182, RULE_constructorBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1165);
+ match(LBRACE);
+ setState(1167);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,103,_ctx) ) {
+ case 1:
+ {
+ setState(1166);
+ explicitConstructorInvocation();
+ }
+ break;
+ }
+ setState(1170);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1169);
+ blockStatements();
+ }
+ }
+
+ setState(1172);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExplicitConstructorInvocationContext extends ParserRuleContext {
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public ExplicitConstructorInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_explicitConstructorInvocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExplicitConstructorInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExplicitConstructorInvocation(this);
+ }
+ }
+
+ public final ExplicitConstructorInvocationContext explicitConstructorInvocation() throws RecognitionException {
+ ExplicitConstructorInvocationContext _localctx = new ExplicitConstructorInvocationContext(_ctx, getState());
+ enterRule(_localctx, 184, RULE_explicitConstructorInvocation);
+ int _la;
+ try {
+ setState(1220);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,113,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1175);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1174);
+ typeArguments();
+ }
+ }
+
+ setState(1177);
+ match(THIS);
+ setState(1178);
+ match(LPAREN);
+ setState(1180);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1179);
+ argumentList();
+ }
+ }
+
+ setState(1182);
+ match(RPAREN);
+ setState(1183);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1185);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1184);
+ typeArguments();
+ }
+ }
+
+ setState(1187);
+ match(SUPER);
+ setState(1188);
+ match(LPAREN);
+ setState(1190);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1189);
+ argumentList();
+ }
+ }
+
+ setState(1192);
+ match(RPAREN);
+ setState(1193);
+ match(SEMI);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1194);
+ expressionName();
+ setState(1195);
+ match(DOT);
+ setState(1197);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1196);
+ typeArguments();
+ }
+ }
+
+ setState(1199);
+ match(SUPER);
+ setState(1200);
+ match(LPAREN);
+ setState(1202);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1201);
+ argumentList();
+ }
+ }
+
+ setState(1204);
+ match(RPAREN);
+ setState(1205);
+ match(SEMI);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1207);
+ primary();
+ setState(1208);
+ match(DOT);
+ setState(1210);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1209);
+ typeArguments();
+ }
+ }
+
+ setState(1212);
+ match(SUPER);
+ setState(1213);
+ match(LPAREN);
+ setState(1215);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1214);
+ argumentList();
+ }
+ }
+
+ setState(1217);
+ match(RPAREN);
+ setState(1218);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumDeclarationContext extends ParserRuleContext {
+ public TerminalNode ENUM() { return getToken(Java8Parser.ENUM, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public EnumBodyContext enumBody() {
+ return getRuleContext(EnumBodyContext.class,0);
+ }
+ public List classModifier() {
+ return getRuleContexts(ClassModifierContext.class);
+ }
+ public ClassModifierContext classModifier(int i) {
+ return getRuleContext(ClassModifierContext.class,i);
+ }
+ public SuperinterfacesContext superinterfaces() {
+ return getRuleContext(SuperinterfacesContext.class,0);
+ }
+ public EnumDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumDeclaration(this);
+ }
+ }
+
+ public final EnumDeclarationContext enumDeclaration() throws RecognitionException {
+ EnumDeclarationContext _localctx = new EnumDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 186, RULE_enumDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1225);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763525122L) != 0) || _la==AT) {
+ {
+ {
+ setState(1222);
+ classModifier();
+ }
+ }
+ setState(1227);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1228);
+ match(ENUM);
+ setState(1229);
+ match(Identifier);
+ setState(1231);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==IMPLEMENTS) {
+ {
+ setState(1230);
+ superinterfaces();
+ }
+ }
+
+ setState(1233);
+ enumBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public EnumConstantListContext enumConstantList() {
+ return getRuleContext(EnumConstantListContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); }
+ public EnumBodyDeclarationsContext enumBodyDeclarations() {
+ return getRuleContext(EnumBodyDeclarationsContext.class,0);
+ }
+ public EnumBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBody(this);
+ }
+ }
+
+ public final EnumBodyContext enumBody() throws RecognitionException {
+ EnumBodyContext _localctx = new EnumBodyContext(_ctx, getState());
+ enterRule(_localctx, 188, RULE_enumBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1235);
+ match(LBRACE);
+ setState(1237);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==Identifier || _la==AT) {
+ {
+ setState(1236);
+ enumConstantList();
+ }
+ }
+
+ setState(1240);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(1239);
+ match(COMMA);
+ }
+ }
+
+ setState(1243);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEMI) {
+ {
+ setState(1242);
+ enumBodyDeclarations();
+ }
+ }
+
+ setState(1245);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumConstantListContext extends ParserRuleContext {
+ public List enumConstant() {
+ return getRuleContexts(EnumConstantContext.class);
+ }
+ public EnumConstantContext enumConstant(int i) {
+ return getRuleContext(EnumConstantContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public EnumConstantListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstantList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantList(this);
+ }
+ }
+
+ public final EnumConstantListContext enumConstantList() throws RecognitionException {
+ EnumConstantListContext _localctx = new EnumConstantListContext(_ctx, getState());
+ enterRule(_localctx, 190, RULE_enumConstantList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1247);
+ enumConstant();
+ setState(1252);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,119,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1248);
+ match(COMMA);
+ setState(1249);
+ enumConstant();
+ }
+ }
+ }
+ setState(1254);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,119,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumConstantContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public List enumConstantModifier() {
+ return getRuleContexts(EnumConstantModifierContext.class);
+ }
+ public EnumConstantModifierContext enumConstantModifier(int i) {
+ return getRuleContext(EnumConstantModifierContext.class,i);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public EnumConstantContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstant; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstant(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstant(this);
+ }
+ }
+
+ public final EnumConstantContext enumConstant() throws RecognitionException {
+ EnumConstantContext _localctx = new EnumConstantContext(_ctx, getState());
+ enterRule(_localctx, 192, RULE_enumConstant);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1258);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(1255);
+ enumConstantModifier();
+ }
+ }
+ setState(1260);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1261);
+ match(Identifier);
+ setState(1267);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LPAREN) {
+ {
+ setState(1262);
+ match(LPAREN);
+ setState(1264);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1263);
+ argumentList();
+ }
+ }
+
+ setState(1266);
+ match(RPAREN);
+ }
+ }
+
+ setState(1270);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACE) {
+ {
+ setState(1269);
+ classBody();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumConstantModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public EnumConstantModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstantModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantModifier(this);
+ }
+ }
+
+ public final EnumConstantModifierContext enumConstantModifier() throws RecognitionException {
+ EnumConstantModifierContext _localctx = new EnumConstantModifierContext(_ctx, getState());
+ enterRule(_localctx, 194, RULE_enumConstantModifier);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1272);
+ annotation();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumBodyDeclarationsContext extends ParserRuleContext {
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public List classBodyDeclaration() {
+ return getRuleContexts(ClassBodyDeclarationContext.class);
+ }
+ public ClassBodyDeclarationContext classBodyDeclaration(int i) {
+ return getRuleContext(ClassBodyDeclarationContext.class,i);
+ }
+ public EnumBodyDeclarationsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumBodyDeclarations; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumBodyDeclarations(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumBodyDeclarations(this);
+ }
+ }
+
+ public final EnumBodyDeclarationsContext enumBodyDeclarations() throws RecognitionException {
+ EnumBodyDeclarationsContext _localctx = new EnumBodyDeclarationsContext(_ctx, getState());
+ enterRule(_localctx, 196, RULE_enumBodyDeclarations);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1274);
+ match(SEMI);
+ setState(1278);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8645991068613655766L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) {
+ {
+ {
+ setState(1275);
+ classBodyDeclaration();
+ }
+ }
+ setState(1280);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceDeclarationContext extends ParserRuleContext {
+ public NormalInterfaceDeclarationContext normalInterfaceDeclaration() {
+ return getRuleContext(NormalInterfaceDeclarationContext.class,0);
+ }
+ public AnnotationTypeDeclarationContext annotationTypeDeclaration() {
+ return getRuleContext(AnnotationTypeDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceDeclaration(this);
+ }
+ }
+
+ public final InterfaceDeclarationContext interfaceDeclaration() throws RecognitionException {
+ InterfaceDeclarationContext _localctx = new InterfaceDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 198, RULE_interfaceDeclaration);
+ try {
+ setState(1283);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,125,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1281);
+ normalInterfaceDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1282);
+ annotationTypeDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NormalInterfaceDeclarationContext extends ParserRuleContext {
+ public TerminalNode INTERFACE() { return getToken(Java8Parser.INTERFACE, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public InterfaceBodyContext interfaceBody() {
+ return getRuleContext(InterfaceBodyContext.class,0);
+ }
+ public List interfaceModifier() {
+ return getRuleContexts(InterfaceModifierContext.class);
+ }
+ public InterfaceModifierContext interfaceModifier(int i) {
+ return getRuleContext(InterfaceModifierContext.class,i);
+ }
+ public TypeParametersContext typeParameters() {
+ return getRuleContext(TypeParametersContext.class,0);
+ }
+ public ExtendsInterfacesContext extendsInterfaces() {
+ return getRuleContext(ExtendsInterfacesContext.class,0);
+ }
+ public NormalInterfaceDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_normalInterfaceDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalInterfaceDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalInterfaceDeclaration(this);
+ }
+ }
+
+ public final NormalInterfaceDeclarationContext normalInterfaceDeclaration() throws RecognitionException {
+ NormalInterfaceDeclarationContext _localctx = new NormalInterfaceDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 200, RULE_normalInterfaceDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1288);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 884763262978L) != 0) || _la==AT) {
+ {
+ {
+ setState(1285);
+ interfaceModifier();
+ }
+ }
+ setState(1290);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1291);
+ match(INTERFACE);
+ setState(1292);
+ match(Identifier);
+ setState(1294);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(1293);
+ typeParameters();
+ }
+ }
+
+ setState(1297);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==EXTENDS) {
+ {
+ setState(1296);
+ extendsInterfaces();
+ }
+ }
+
+ setState(1299);
+ interfaceBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode PROTECTED() { return getToken(Java8Parser.PROTECTED, 0); }
+ public TerminalNode PRIVATE() { return getToken(Java8Parser.PRIVATE, 0); }
+ public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); }
+ public InterfaceModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceModifier(this);
+ }
+ }
+
+ public final InterfaceModifierContext interfaceModifier() throws RecognitionException {
+ InterfaceModifierContext _localctx = new InterfaceModifierContext(_ctx, getState());
+ enterRule(_localctx, 202, RULE_interfaceModifier);
+ try {
+ setState(1308);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1301);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1302);
+ match(PUBLIC);
+ }
+ break;
+ case PROTECTED:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1303);
+ match(PROTECTED);
+ }
+ break;
+ case PRIVATE:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1304);
+ match(PRIVATE);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1305);
+ match(ABSTRACT);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1306);
+ match(STATIC);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1307);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExtendsInterfacesContext extends ParserRuleContext {
+ public TerminalNode EXTENDS() { return getToken(Java8Parser.EXTENDS, 0); }
+ public InterfaceTypeListContext interfaceTypeList() {
+ return getRuleContext(InterfaceTypeListContext.class,0);
+ }
+ public ExtendsInterfacesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_extendsInterfaces; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExtendsInterfaces(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExtendsInterfaces(this);
+ }
+ }
+
+ public final ExtendsInterfacesContext extendsInterfaces() throws RecognitionException {
+ ExtendsInterfacesContext _localctx = new ExtendsInterfacesContext(_ctx, getState());
+ enterRule(_localctx, 204, RULE_extendsInterfaces);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1310);
+ match(EXTENDS);
+ setState(1311);
+ interfaceTypeList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public List interfaceMemberDeclaration() {
+ return getRuleContexts(InterfaceMemberDeclarationContext.class);
+ }
+ public InterfaceMemberDeclarationContext interfaceMemberDeclaration(int i) {
+ return getRuleContext(InterfaceMemberDeclarationContext.class,i);
+ }
+ public InterfaceBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceBody(this);
+ }
+ }
+
+ public final InterfaceBodyContext interfaceBody() throws RecognitionException {
+ InterfaceBodyContext _localctx = new InterfaceBodyContext(_ctx, getState());
+ enterRule(_localctx, 206, RULE_interfaceBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1313);
+ match(LBRACE);
+ setState(1317);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223089538734927062L) != 0) || ((((_la - 68)) & ~0x3f) == 0 && ((1L << (_la - 68)) & 51539607553L) != 0)) {
+ {
+ {
+ setState(1314);
+ interfaceMemberDeclaration();
+ }
+ }
+ setState(1319);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1320);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceMemberDeclarationContext extends ParserRuleContext {
+ public ConstantDeclarationContext constantDeclaration() {
+ return getRuleContext(ConstantDeclarationContext.class,0);
+ }
+ public InterfaceMethodDeclarationContext interfaceMethodDeclaration() {
+ return getRuleContext(InterfaceMethodDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public InterfaceMemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMemberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMemberDeclaration(this);
+ }
+ }
+
+ public final InterfaceMemberDeclarationContext interfaceMemberDeclaration() throws RecognitionException {
+ InterfaceMemberDeclarationContext _localctx = new InterfaceMemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 208, RULE_interfaceMemberDeclaration);
+ try {
+ setState(1327);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,131,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1322);
+ constantDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1323);
+ interfaceMethodDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1324);
+ classDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1325);
+ interfaceDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1326);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstantDeclarationContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorListContext variableDeclaratorList() {
+ return getRuleContext(VariableDeclaratorListContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public List constantModifier() {
+ return getRuleContexts(ConstantModifierContext.class);
+ }
+ public ConstantModifierContext constantModifier(int i) {
+ return getRuleContext(ConstantModifierContext.class,i);
+ }
+ public ConstantDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constantDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantDeclaration(this);
+ }
+ }
+
+ public final ConstantDeclarationContext constantDeclaration() throws RecognitionException {
+ ConstantDeclarationContext _localctx = new ConstantDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 210, RULE_constantDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1332);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 309237907456L) != 0) || _la==AT) {
+ {
+ {
+ setState(1329);
+ constantModifier();
+ }
+ }
+ setState(1334);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1335);
+ unannType();
+ setState(1336);
+ variableDeclaratorList();
+ setState(1337);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstantModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode FINAL() { return getToken(Java8Parser.FINAL, 0); }
+ public ConstantModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constantModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantModifier(this);
+ }
+ }
+
+ public final ConstantModifierContext constantModifier() throws RecognitionException {
+ ConstantModifierContext _localctx = new ConstantModifierContext(_ctx, getState());
+ enterRule(_localctx, 212, RULE_constantModifier);
+ try {
+ setState(1343);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1339);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1340);
+ match(PUBLIC);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1341);
+ match(STATIC);
+ }
+ break;
+ case FINAL:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1342);
+ match(FINAL);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceMethodDeclarationContext extends ParserRuleContext {
+ public MethodHeaderContext methodHeader() {
+ return getRuleContext(MethodHeaderContext.class,0);
+ }
+ public MethodBodyContext methodBody() {
+ return getRuleContext(MethodBodyContext.class,0);
+ }
+ public List interfaceMethodModifier() {
+ return getRuleContexts(InterfaceMethodModifierContext.class);
+ }
+ public InterfaceMethodModifierContext interfaceMethodModifier(int i) {
+ return getRuleContext(InterfaceMethodModifierContext.class,i);
+ }
+ public InterfaceMethodDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMethodDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodDeclaration(this);
+ }
+ }
+
+ public final InterfaceMethodDeclarationContext interfaceMethodDeclaration() throws RecognitionException {
+ InterfaceMethodDeclarationContext _localctx = new InterfaceMethodDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 214, RULE_interfaceMethodDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1348);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 858993463298L) != 0) || _la==AT) {
+ {
+ {
+ setState(1345);
+ interfaceMethodModifier();
+ }
+ }
+ setState(1350);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1351);
+ methodHeader();
+ setState(1352);
+ methodBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InterfaceMethodModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); }
+ public TerminalNode DEFAULT() { return getToken(Java8Parser.DEFAULT, 0); }
+ public TerminalNode STATIC() { return getToken(Java8Parser.STATIC, 0); }
+ public TerminalNode STRICTFP() { return getToken(Java8Parser.STRICTFP, 0); }
+ public InterfaceMethodModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_interfaceMethodModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInterfaceMethodModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInterfaceMethodModifier(this);
+ }
+ }
+
+ public final InterfaceMethodModifierContext interfaceMethodModifier() throws RecognitionException {
+ InterfaceMethodModifierContext _localctx = new InterfaceMethodModifierContext(_ctx, getState());
+ enterRule(_localctx, 216, RULE_interfaceMethodModifier);
+ try {
+ setState(1360);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1354);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1355);
+ match(PUBLIC);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1356);
+ match(ABSTRACT);
+ }
+ break;
+ case DEFAULT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1357);
+ match(DEFAULT);
+ }
+ break;
+ case STATIC:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1358);
+ match(STATIC);
+ }
+ break;
+ case STRICTFP:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1359);
+ match(STRICTFP);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationTypeDeclarationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(Java8Parser.AT, 0); }
+ public TerminalNode INTERFACE() { return getToken(Java8Parser.INTERFACE, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public AnnotationTypeBodyContext annotationTypeBody() {
+ return getRuleContext(AnnotationTypeBodyContext.class,0);
+ }
+ public List interfaceModifier() {
+ return getRuleContexts(InterfaceModifierContext.class);
+ }
+ public InterfaceModifierContext interfaceModifier(int i) {
+ return getRuleContext(InterfaceModifierContext.class,i);
+ }
+ public AnnotationTypeDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeDeclaration(this);
+ }
+ }
+
+ public final AnnotationTypeDeclarationContext annotationTypeDeclaration() throws RecognitionException {
+ AnnotationTypeDeclarationContext _localctx = new AnnotationTypeDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 218, RULE_annotationTypeDeclaration);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1365);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,136,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1362);
+ interfaceModifier();
+ }
+ }
+ }
+ setState(1367);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,136,_ctx);
+ }
+ setState(1368);
+ match(AT);
+ setState(1369);
+ match(INTERFACE);
+ setState(1370);
+ match(Identifier);
+ setState(1371);
+ annotationTypeBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationTypeBodyContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public List annotationTypeMemberDeclaration() {
+ return getRuleContexts(AnnotationTypeMemberDeclarationContext.class);
+ }
+ public AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration(int i) {
+ return getRuleContext(AnnotationTypeMemberDeclarationContext.class,i);
+ }
+ public AnnotationTypeBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeBody(this);
+ }
+ }
+
+ public final AnnotationTypeBodyContext annotationTypeBody() throws RecognitionException {
+ AnnotationTypeBodyContext _localctx = new AnnotationTypeBodyContext(_ctx, getState());
+ enterRule(_localctx, 220, RULE_annotationTypeBody);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1373);
+ match(LBRACE);
+ setState(1377);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -9223371013711641814L) != 0) || _la==Identifier || _la==AT) {
+ {
+ {
+ setState(1374);
+ annotationTypeMemberDeclaration();
+ }
+ }
+ setState(1379);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1380);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationTypeMemberDeclarationContext extends ParserRuleContext {
+ public AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() {
+ return getRuleContext(AnnotationTypeElementDeclarationContext.class,0);
+ }
+ public ConstantDeclarationContext constantDeclaration() {
+ return getRuleContext(ConstantDeclarationContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public InterfaceDeclarationContext interfaceDeclaration() {
+ return getRuleContext(InterfaceDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public AnnotationTypeMemberDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeMemberDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeMemberDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeMemberDeclaration(this);
+ }
+ }
+
+ public final AnnotationTypeMemberDeclarationContext annotationTypeMemberDeclaration() throws RecognitionException {
+ AnnotationTypeMemberDeclarationContext _localctx = new AnnotationTypeMemberDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 222, RULE_annotationTypeMemberDeclaration);
+ try {
+ setState(1387);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,138,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1382);
+ annotationTypeElementDeclaration();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1383);
+ constantDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1384);
+ classDeclaration();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1385);
+ interfaceDeclaration();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1386);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationTypeElementDeclarationContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public List annotationTypeElementModifier() {
+ return getRuleContexts(AnnotationTypeElementModifierContext.class);
+ }
+ public AnnotationTypeElementModifierContext annotationTypeElementModifier(int i) {
+ return getRuleContext(AnnotationTypeElementModifierContext.class,i);
+ }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public DefaultValueContext defaultValue() {
+ return getRuleContext(DefaultValueContext.class,0);
+ }
+ public AnnotationTypeElementDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeElementDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementDeclaration(this);
+ }
+ }
+
+ public final AnnotationTypeElementDeclarationContext annotationTypeElementDeclaration() throws RecognitionException {
+ AnnotationTypeElementDeclarationContext _localctx = new AnnotationTypeElementDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 224, RULE_annotationTypeElementDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1392);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==ABSTRACT || _la==PUBLIC || _la==AT) {
+ {
+ {
+ setState(1389);
+ annotationTypeElementModifier();
+ }
+ }
+ setState(1394);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1395);
+ unannType();
+ setState(1396);
+ match(Identifier);
+ setState(1397);
+ match(LPAREN);
+ setState(1398);
+ match(RPAREN);
+ setState(1400);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACK || _la==AT) {
+ {
+ setState(1399);
+ dims();
+ }
+ }
+
+ setState(1403);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==DEFAULT) {
+ {
+ setState(1402);
+ defaultValue();
+ }
+ }
+
+ setState(1405);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationTypeElementModifierContext extends ParserRuleContext {
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public TerminalNode PUBLIC() { return getToken(Java8Parser.PUBLIC, 0); }
+ public TerminalNode ABSTRACT() { return getToken(Java8Parser.ABSTRACT, 0); }
+ public AnnotationTypeElementModifierContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotationTypeElementModifier; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotationTypeElementModifier(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotationTypeElementModifier(this);
+ }
+ }
+
+ public final AnnotationTypeElementModifierContext annotationTypeElementModifier() throws RecognitionException {
+ AnnotationTypeElementModifierContext _localctx = new AnnotationTypeElementModifierContext(_ctx, getState());
+ enterRule(_localctx, 226, RULE_annotationTypeElementModifier);
+ try {
+ setState(1410);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1407);
+ annotation();
+ }
+ break;
+ case PUBLIC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1408);
+ match(PUBLIC);
+ }
+ break;
+ case ABSTRACT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1409);
+ match(ABSTRACT);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DefaultValueContext extends ParserRuleContext {
+ public TerminalNode DEFAULT() { return getToken(Java8Parser.DEFAULT, 0); }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public DefaultValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_defaultValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDefaultValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDefaultValue(this);
+ }
+ }
+
+ public final DefaultValueContext defaultValue() throws RecognitionException {
+ DefaultValueContext _localctx = new DefaultValueContext(_ctx, getState());
+ enterRule(_localctx, 228, RULE_defaultValue);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1412);
+ match(DEFAULT);
+ setState(1413);
+ elementValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AnnotationContext extends ParserRuleContext {
+ public NormalAnnotationContext normalAnnotation() {
+ return getRuleContext(NormalAnnotationContext.class,0);
+ }
+ public MarkerAnnotationContext markerAnnotation() {
+ return getRuleContext(MarkerAnnotationContext.class,0);
+ }
+ public SingleElementAnnotationContext singleElementAnnotation() {
+ return getRuleContext(SingleElementAnnotationContext.class,0);
+ }
+ public AnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_annotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAnnotation(this);
+ }
+ }
+
+ public final AnnotationContext annotation() throws RecognitionException {
+ AnnotationContext _localctx = new AnnotationContext(_ctx, getState());
+ enterRule(_localctx, 230, RULE_annotation);
+ try {
+ setState(1418);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,143,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1415);
+ normalAnnotation();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1416);
+ markerAnnotation();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1417);
+ singleElementAnnotation();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class NormalAnnotationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(Java8Parser.AT, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ElementValuePairListContext elementValuePairList() {
+ return getRuleContext(ElementValuePairListContext.class,0);
+ }
+ public NormalAnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_normalAnnotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterNormalAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitNormalAnnotation(this);
+ }
+ }
+
+ public final NormalAnnotationContext normalAnnotation() throws RecognitionException {
+ NormalAnnotationContext _localctx = new NormalAnnotationContext(_ctx, getState());
+ enterRule(_localctx, 232, RULE_normalAnnotation);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1420);
+ match(AT);
+ setState(1421);
+ typeName();
+ setState(1422);
+ match(LPAREN);
+ setState(1424);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==Identifier) {
+ {
+ setState(1423);
+ elementValuePairList();
+ }
+ }
+
+ setState(1426);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementValuePairListContext extends ParserRuleContext {
+ public List elementValuePair() {
+ return getRuleContexts(ElementValuePairContext.class);
+ }
+ public ElementValuePairContext elementValuePair(int i) {
+ return getRuleContext(ElementValuePairContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public ElementValuePairListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValuePairList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePairList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePairList(this);
+ }
+ }
+
+ public final ElementValuePairListContext elementValuePairList() throws RecognitionException {
+ ElementValuePairListContext _localctx = new ElementValuePairListContext(_ctx, getState());
+ enterRule(_localctx, 234, RULE_elementValuePairList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1428);
+ elementValuePair();
+ setState(1433);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1429);
+ match(COMMA);
+ setState(1430);
+ elementValuePair();
+ }
+ }
+ setState(1435);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementValuePairContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode ASSIGN() { return getToken(Java8Parser.ASSIGN, 0); }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public ElementValuePairContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValuePair; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValuePair(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValuePair(this);
+ }
+ }
+
+ public final ElementValuePairContext elementValuePair() throws RecognitionException {
+ ElementValuePairContext _localctx = new ElementValuePairContext(_ctx, getState());
+ enterRule(_localctx, 236, RULE_elementValuePair);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1436);
+ match(Identifier);
+ setState(1437);
+ match(ASSIGN);
+ setState(1438);
+ elementValue();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementValueContext extends ParserRuleContext {
+ public ConditionalExpressionContext conditionalExpression() {
+ return getRuleContext(ConditionalExpressionContext.class,0);
+ }
+ public ElementValueArrayInitializerContext elementValueArrayInitializer() {
+ return getRuleContext(ElementValueArrayInitializerContext.class,0);
+ }
+ public AnnotationContext annotation() {
+ return getRuleContext(AnnotationContext.class,0);
+ }
+ public ElementValueContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValue; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValue(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValue(this);
+ }
+ }
+
+ public final ElementValueContext elementValue() throws RecognitionException {
+ ElementValueContext _localctx = new ElementValueContext(_ctx, getState());
+ enterRule(_localctx, 238, RULE_elementValue);
+ try {
+ setState(1443);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,146,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1440);
+ conditionalExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1441);
+ elementValueArrayInitializer();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1442);
+ annotation();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementValueArrayInitializerContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public ElementValueListContext elementValueList() {
+ return getRuleContext(ElementValueListContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); }
+ public ElementValueArrayInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValueArrayInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValueArrayInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueArrayInitializer(this);
+ }
+ }
+
+ public final ElementValueArrayInitializerContext elementValueArrayInitializer() throws RecognitionException {
+ ElementValueArrayInitializerContext _localctx = new ElementValueArrayInitializerContext(_ctx, getState());
+ enterRule(_localctx, 240, RULE_elementValueArrayInitializer);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1445);
+ match(LBRACE);
+ setState(1447);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 862730839481401640L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1446);
+ elementValueList();
+ }
+ }
+
+ setState(1450);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(1449);
+ match(COMMA);
+ }
+ }
+
+ setState(1452);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ElementValueListContext extends ParserRuleContext {
+ public List elementValue() {
+ return getRuleContexts(ElementValueContext.class);
+ }
+ public ElementValueContext elementValue(int i) {
+ return getRuleContext(ElementValueContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public ElementValueListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_elementValueList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterElementValueList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitElementValueList(this);
+ }
+ }
+
+ public final ElementValueListContext elementValueList() throws RecognitionException {
+ ElementValueListContext _localctx = new ElementValueListContext(_ctx, getState());
+ enterRule(_localctx, 242, RULE_elementValueList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1454);
+ elementValue();
+ setState(1459);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,149,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1455);
+ match(COMMA);
+ setState(1456);
+ elementValue();
+ }
+ }
+ }
+ setState(1461);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,149,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MarkerAnnotationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(Java8Parser.AT, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public MarkerAnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_markerAnnotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMarkerAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMarkerAnnotation(this);
+ }
+ }
+
+ public final MarkerAnnotationContext markerAnnotation() throws RecognitionException {
+ MarkerAnnotationContext _localctx = new MarkerAnnotationContext(_ctx, getState());
+ enterRule(_localctx, 244, RULE_markerAnnotation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1462);
+ match(AT);
+ setState(1463);
+ typeName();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SingleElementAnnotationContext extends ParserRuleContext {
+ public TerminalNode AT() { return getToken(Java8Parser.AT, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ElementValueContext elementValue() {
+ return getRuleContext(ElementValueContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public SingleElementAnnotationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_singleElementAnnotation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSingleElementAnnotation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSingleElementAnnotation(this);
+ }
+ }
+
+ public final SingleElementAnnotationContext singleElementAnnotation() throws RecognitionException {
+ SingleElementAnnotationContext _localctx = new SingleElementAnnotationContext(_ctx, getState());
+ enterRule(_localctx, 246, RULE_singleElementAnnotation);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1465);
+ match(AT);
+ setState(1466);
+ typeName();
+ setState(1467);
+ match(LPAREN);
+ setState(1468);
+ elementValue();
+ setState(1469);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayInitializerContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public VariableInitializerListContext variableInitializerList() {
+ return getRuleContext(VariableInitializerListContext.class,0);
+ }
+ public TerminalNode COMMA() { return getToken(Java8Parser.COMMA, 0); }
+ public ArrayInitializerContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayInitializer; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayInitializer(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayInitializer(this);
+ }
+ }
+
+ public final ArrayInitializerContext arrayInitializer() throws RecognitionException {
+ ArrayInitializerContext _localctx = new ArrayInitializerContext(_ctx, getState());
+ enterRule(_localctx, 248, RULE_arrayInitializer);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1471);
+ match(LBRACE);
+ setState(1473);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 862730839481401640L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1472);
+ variableInitializerList();
+ }
+ }
+
+ setState(1476);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==COMMA) {
+ {
+ setState(1475);
+ match(COMMA);
+ }
+ }
+
+ setState(1478);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class VariableInitializerListContext extends ParserRuleContext {
+ public List variableInitializer() {
+ return getRuleContexts(VariableInitializerContext.class);
+ }
+ public VariableInitializerContext variableInitializer(int i) {
+ return getRuleContext(VariableInitializerContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public VariableInitializerListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_variableInitializerList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterVariableInitializerList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitVariableInitializerList(this);
+ }
+ }
+
+ public final VariableInitializerListContext variableInitializerList() throws RecognitionException {
+ VariableInitializerListContext _localctx = new VariableInitializerListContext(_ctx, getState());
+ enterRule(_localctx, 250, RULE_variableInitializerList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1480);
+ variableInitializer();
+ setState(1485);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,152,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1481);
+ match(COMMA);
+ setState(1482);
+ variableInitializer();
+ }
+ }
+ }
+ setState(1487);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,152,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BlockContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public BlockStatementsContext blockStatements() {
+ return getRuleContext(BlockStatementsContext.class,0);
+ }
+ public BlockContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_block; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlock(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlock(this);
+ }
+ }
+
+ public final BlockContext block() throws RecognitionException {
+ BlockContext _localctx = new BlockContext(_ctx, getState());
+ enterRule(_localctx, 252, RULE_block);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1488);
+ match(LBRACE);
+ setState(1490);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1489);
+ blockStatements();
+ }
+ }
+
+ setState(1492);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BlockStatementsContext extends ParserRuleContext {
+ public List blockStatement() {
+ return getRuleContexts(BlockStatementContext.class);
+ }
+ public BlockStatementContext blockStatement(int i) {
+ return getRuleContext(BlockStatementContext.class,i);
+ }
+ public BlockStatementsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_blockStatements; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlockStatements(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatements(this);
+ }
+ }
+
+ public final BlockStatementsContext blockStatements() throws RecognitionException {
+ BlockStatementsContext _localctx = new BlockStatementsContext(_ctx, getState());
+ enterRule(_localctx, 254, RULE_blockStatements);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1494);
+ blockStatement();
+ setState(1498);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while ((((_la) & ~0x3f) == 0 && ((1L << _la) & -8359349417232995522L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ {
+ setState(1495);
+ blockStatement();
+ }
+ }
+ setState(1500);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BlockStatementContext extends ParserRuleContext {
+ public LocalVariableDeclarationStatementContext localVariableDeclarationStatement() {
+ return getRuleContext(LocalVariableDeclarationStatementContext.class,0);
+ }
+ public ClassDeclarationContext classDeclaration() {
+ return getRuleContext(ClassDeclarationContext.class,0);
+ }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public BlockStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_blockStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBlockStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBlockStatement(this);
+ }
+ }
+
+ public final BlockStatementContext blockStatement() throws RecognitionException {
+ BlockStatementContext _localctx = new BlockStatementContext(_ctx, getState());
+ enterRule(_localctx, 256, RULE_blockStatement);
+ try {
+ setState(1504);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,155,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1501);
+ localVariableDeclarationStatement();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1502);
+ classDeclaration();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1503);
+ statement();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LocalVariableDeclarationStatementContext extends ParserRuleContext {
+ public LocalVariableDeclarationContext localVariableDeclaration() {
+ return getRuleContext(LocalVariableDeclarationContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public LocalVariableDeclarationStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_localVariableDeclarationStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclarationStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclarationStatement(this);
+ }
+ }
+
+ public final LocalVariableDeclarationStatementContext localVariableDeclarationStatement() throws RecognitionException {
+ LocalVariableDeclarationStatementContext _localctx = new LocalVariableDeclarationStatementContext(_ctx, getState());
+ enterRule(_localctx, 258, RULE_localVariableDeclarationStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1506);
+ localVariableDeclaration();
+ setState(1507);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LocalVariableDeclarationContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorListContext variableDeclaratorList() {
+ return getRuleContext(VariableDeclaratorListContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public LocalVariableDeclarationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_localVariableDeclaration; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLocalVariableDeclaration(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLocalVariableDeclaration(this);
+ }
+ }
+
+ public final LocalVariableDeclarationContext localVariableDeclaration() throws RecognitionException {
+ LocalVariableDeclarationContext _localctx = new LocalVariableDeclarationContext(_ctx, getState());
+ enterRule(_localctx, 260, RULE_localVariableDeclaration);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1512);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1509);
+ variableModifier();
+ }
+ }
+ setState(1514);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1515);
+ unannType();
+ setState(1516);
+ variableDeclaratorList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementContext extends ParserRuleContext {
+ public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() {
+ return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0);
+ }
+ public LabeledStatementContext labeledStatement() {
+ return getRuleContext(LabeledStatementContext.class,0);
+ }
+ public IfThenStatementContext ifThenStatement() {
+ return getRuleContext(IfThenStatementContext.class,0);
+ }
+ public IfThenElseStatementContext ifThenElseStatement() {
+ return getRuleContext(IfThenElseStatementContext.class,0);
+ }
+ public WhileStatementContext whileStatement() {
+ return getRuleContext(WhileStatementContext.class,0);
+ }
+ public ForStatementContext forStatement() {
+ return getRuleContext(ForStatementContext.class,0);
+ }
+ public StatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatement(this);
+ }
+ }
+
+ public final StatementContext statement() throws RecognitionException {
+ StatementContext _localctx = new StatementContext(_ctx, getState());
+ enterRule(_localctx, 262, RULE_statement);
+ try {
+ setState(1524);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,157,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1518);
+ statementWithoutTrailingSubstatement();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1519);
+ labeledStatement();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1520);
+ ifThenStatement();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1521);
+ ifThenElseStatement();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1522);
+ whileStatement();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1523);
+ forStatement();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementNoShortIfContext extends ParserRuleContext {
+ public StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() {
+ return getRuleContext(StatementWithoutTrailingSubstatementContext.class,0);
+ }
+ public LabeledStatementNoShortIfContext labeledStatementNoShortIf() {
+ return getRuleContext(LabeledStatementNoShortIfContext.class,0);
+ }
+ public IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() {
+ return getRuleContext(IfThenElseStatementNoShortIfContext.class,0);
+ }
+ public WhileStatementNoShortIfContext whileStatementNoShortIf() {
+ return getRuleContext(WhileStatementNoShortIfContext.class,0);
+ }
+ public ForStatementNoShortIfContext forStatementNoShortIf() {
+ return getRuleContext(ForStatementNoShortIfContext.class,0);
+ }
+ public StatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementNoShortIf(this);
+ }
+ }
+
+ public final StatementNoShortIfContext statementNoShortIf() throws RecognitionException {
+ StatementNoShortIfContext _localctx = new StatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 264, RULE_statementNoShortIf);
+ try {
+ setState(1531);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,158,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1526);
+ statementWithoutTrailingSubstatement();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1527);
+ labeledStatementNoShortIf();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1528);
+ ifThenElseStatementNoShortIf();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1529);
+ whileStatementNoShortIf();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1530);
+ forStatementNoShortIf();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementWithoutTrailingSubstatementContext extends ParserRuleContext {
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public EmptyStatementContext emptyStatement() {
+ return getRuleContext(EmptyStatementContext.class,0);
+ }
+ public ExpressionStatementContext expressionStatement() {
+ return getRuleContext(ExpressionStatementContext.class,0);
+ }
+ public AssertStatementContext assertStatement() {
+ return getRuleContext(AssertStatementContext.class,0);
+ }
+ public SwitchStatementContext switchStatement() {
+ return getRuleContext(SwitchStatementContext.class,0);
+ }
+ public DoStatementContext doStatement() {
+ return getRuleContext(DoStatementContext.class,0);
+ }
+ public BreakStatementContext breakStatement() {
+ return getRuleContext(BreakStatementContext.class,0);
+ }
+ public ContinueStatementContext continueStatement() {
+ return getRuleContext(ContinueStatementContext.class,0);
+ }
+ public ReturnStatementContext returnStatement() {
+ return getRuleContext(ReturnStatementContext.class,0);
+ }
+ public SynchronizedStatementContext synchronizedStatement() {
+ return getRuleContext(SynchronizedStatementContext.class,0);
+ }
+ public ThrowStatementContext throwStatement() {
+ return getRuleContext(ThrowStatementContext.class,0);
+ }
+ public TryStatementContext tryStatement() {
+ return getRuleContext(TryStatementContext.class,0);
+ }
+ public StatementWithoutTrailingSubstatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statementWithoutTrailingSubstatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementWithoutTrailingSubstatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementWithoutTrailingSubstatement(this);
+ }
+ }
+
+ public final StatementWithoutTrailingSubstatementContext statementWithoutTrailingSubstatement() throws RecognitionException {
+ StatementWithoutTrailingSubstatementContext _localctx = new StatementWithoutTrailingSubstatementContext(_ctx, getState());
+ enterRule(_localctx, 266, RULE_statementWithoutTrailingSubstatement);
+ try {
+ setState(1545);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case LBRACE:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1533);
+ block();
+ }
+ break;
+ case SEMI:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1534);
+ emptyStatement();
+ }
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case IntegerLiteral:
+ case FloatingPointLiteral:
+ case BooleanLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case NullLiteral:
+ case LPAREN:
+ case INC:
+ case DEC:
+ case Identifier:
+ case AT:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1535);
+ expressionStatement();
+ }
+ break;
+ case ASSERT:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1536);
+ assertStatement();
+ }
+ break;
+ case SWITCH:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1537);
+ switchStatement();
+ }
+ break;
+ case DO:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1538);
+ doStatement();
+ }
+ break;
+ case BREAK:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1539);
+ breakStatement();
+ }
+ break;
+ case CONTINUE:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1540);
+ continueStatement();
+ }
+ break;
+ case RETURN:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1541);
+ returnStatement();
+ }
+ break;
+ case SYNCHRONIZED:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1542);
+ synchronizedStatement();
+ }
+ break;
+ case THROW:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(1543);
+ throwStatement();
+ }
+ break;
+ case TRY:
+ enterOuterAlt(_localctx, 12);
+ {
+ setState(1544);
+ tryStatement();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EmptyStatementContext extends ParserRuleContext {
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public EmptyStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_emptyStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEmptyStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEmptyStatement(this);
+ }
+ }
+
+ public final EmptyStatementContext emptyStatement() throws RecognitionException {
+ EmptyStatementContext _localctx = new EmptyStatementContext(_ctx, getState());
+ enterRule(_localctx, 268, RULE_emptyStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1547);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LabeledStatementContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public LabeledStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_labeledStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatement(this);
+ }
+ }
+
+ public final LabeledStatementContext labeledStatement() throws RecognitionException {
+ LabeledStatementContext _localctx = new LabeledStatementContext(_ctx, getState());
+ enterRule(_localctx, 270, RULE_labeledStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1549);
+ match(Identifier);
+ setState(1550);
+ match(COLON);
+ setState(1551);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LabeledStatementNoShortIfContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public StatementNoShortIfContext statementNoShortIf() {
+ return getRuleContext(StatementNoShortIfContext.class,0);
+ }
+ public LabeledStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_labeledStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLabeledStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLabeledStatementNoShortIf(this);
+ }
+ }
+
+ public final LabeledStatementNoShortIfContext labeledStatementNoShortIf() throws RecognitionException {
+ LabeledStatementNoShortIfContext _localctx = new LabeledStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 272, RULE_labeledStatementNoShortIf);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1553);
+ match(Identifier);
+ setState(1554);
+ match(COLON);
+ setState(1555);
+ statementNoShortIf();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionStatementContext extends ParserRuleContext {
+ public StatementExpressionContext statementExpression() {
+ return getRuleContext(StatementExpressionContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public ExpressionStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expressionStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpressionStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpressionStatement(this);
+ }
+ }
+
+ public final ExpressionStatementContext expressionStatement() throws RecognitionException {
+ ExpressionStatementContext _localctx = new ExpressionStatementContext(_ctx, getState());
+ enterRule(_localctx, 274, RULE_expressionStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1557);
+ statementExpression();
+ setState(1558);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementExpressionContext extends ParserRuleContext {
+ public AssignmentContext assignment() {
+ return getRuleContext(AssignmentContext.class,0);
+ }
+ public PreIncrementExpressionContext preIncrementExpression() {
+ return getRuleContext(PreIncrementExpressionContext.class,0);
+ }
+ public PreDecrementExpressionContext preDecrementExpression() {
+ return getRuleContext(PreDecrementExpressionContext.class,0);
+ }
+ public PostIncrementExpressionContext postIncrementExpression() {
+ return getRuleContext(PostIncrementExpressionContext.class,0);
+ }
+ public PostDecrementExpressionContext postDecrementExpression() {
+ return getRuleContext(PostDecrementExpressionContext.class,0);
+ }
+ public MethodInvocationContext methodInvocation() {
+ return getRuleContext(MethodInvocationContext.class,0);
+ }
+ public ClassInstanceCreationExpressionContext classInstanceCreationExpression() {
+ return getRuleContext(ClassInstanceCreationExpressionContext.class,0);
+ }
+ public StatementExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statementExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpression(this);
+ }
+ }
+
+ public final StatementExpressionContext statementExpression() throws RecognitionException {
+ StatementExpressionContext _localctx = new StatementExpressionContext(_ctx, getState());
+ enterRule(_localctx, 276, RULE_statementExpression);
+ try {
+ setState(1567);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,160,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1560);
+ assignment();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1561);
+ preIncrementExpression();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1562);
+ preDecrementExpression();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1563);
+ postIncrementExpression();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1564);
+ postDecrementExpression();
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1565);
+ methodInvocation();
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1566);
+ classInstanceCreationExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IfThenStatementContext extends ParserRuleContext {
+ public TerminalNode IF() { return getToken(Java8Parser.IF, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public IfThenStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ifThenStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenStatement(this);
+ }
+ }
+
+ public final IfThenStatementContext ifThenStatement() throws RecognitionException {
+ IfThenStatementContext _localctx = new IfThenStatementContext(_ctx, getState());
+ enterRule(_localctx, 278, RULE_ifThenStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1569);
+ match(IF);
+ setState(1570);
+ match(LPAREN);
+ setState(1571);
+ expression();
+ setState(1572);
+ match(RPAREN);
+ setState(1573);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IfThenElseStatementContext extends ParserRuleContext {
+ public TerminalNode IF() { return getToken(Java8Parser.IF, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementNoShortIfContext statementNoShortIf() {
+ return getRuleContext(StatementNoShortIfContext.class,0);
+ }
+ public TerminalNode ELSE() { return getToken(Java8Parser.ELSE, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public IfThenElseStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ifThenElseStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatement(this);
+ }
+ }
+
+ public final IfThenElseStatementContext ifThenElseStatement() throws RecognitionException {
+ IfThenElseStatementContext _localctx = new IfThenElseStatementContext(_ctx, getState());
+ enterRule(_localctx, 280, RULE_ifThenElseStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1575);
+ match(IF);
+ setState(1576);
+ match(LPAREN);
+ setState(1577);
+ expression();
+ setState(1578);
+ match(RPAREN);
+ setState(1579);
+ statementNoShortIf();
+ setState(1580);
+ match(ELSE);
+ setState(1581);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class IfThenElseStatementNoShortIfContext extends ParserRuleContext {
+ public TerminalNode IF() { return getToken(Java8Parser.IF, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public List statementNoShortIf() {
+ return getRuleContexts(StatementNoShortIfContext.class);
+ }
+ public StatementNoShortIfContext statementNoShortIf(int i) {
+ return getRuleContext(StatementNoShortIfContext.class,i);
+ }
+ public TerminalNode ELSE() { return getToken(Java8Parser.ELSE, 0); }
+ public IfThenElseStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_ifThenElseStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterIfThenElseStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitIfThenElseStatementNoShortIf(this);
+ }
+ }
+
+ public final IfThenElseStatementNoShortIfContext ifThenElseStatementNoShortIf() throws RecognitionException {
+ IfThenElseStatementNoShortIfContext _localctx = new IfThenElseStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 282, RULE_ifThenElseStatementNoShortIf);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1583);
+ match(IF);
+ setState(1584);
+ match(LPAREN);
+ setState(1585);
+ expression();
+ setState(1586);
+ match(RPAREN);
+ setState(1587);
+ statementNoShortIf();
+ setState(1588);
+ match(ELSE);
+ setState(1589);
+ statementNoShortIf();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssertStatementContext extends ParserRuleContext {
+ public TerminalNode ASSERT() { return getToken(Java8Parser.ASSERT, 0); }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public AssertStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assertStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssertStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssertStatement(this);
+ }
+ }
+
+ public final AssertStatementContext assertStatement() throws RecognitionException {
+ AssertStatementContext _localctx = new AssertStatementContext(_ctx, getState());
+ enterRule(_localctx, 284, RULE_assertStatement);
+ try {
+ setState(1601);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,161,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1591);
+ match(ASSERT);
+ setState(1592);
+ expression();
+ setState(1593);
+ match(SEMI);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1595);
+ match(ASSERT);
+ setState(1596);
+ expression();
+ setState(1597);
+ match(COLON);
+ setState(1598);
+ expression();
+ setState(1599);
+ match(SEMI);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchStatementContext extends ParserRuleContext {
+ public TerminalNode SWITCH() { return getToken(Java8Parser.SWITCH, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public SwitchBlockContext switchBlock() {
+ return getRuleContext(SwitchBlockContext.class,0);
+ }
+ public SwitchStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchStatement(this);
+ }
+ }
+
+ public final SwitchStatementContext switchStatement() throws RecognitionException {
+ SwitchStatementContext _localctx = new SwitchStatementContext(_ctx, getState());
+ enterRule(_localctx, 286, RULE_switchStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1603);
+ match(SWITCH);
+ setState(1604);
+ match(LPAREN);
+ setState(1605);
+ expression();
+ setState(1606);
+ match(RPAREN);
+ setState(1607);
+ switchBlock();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchBlockContext extends ParserRuleContext {
+ public TerminalNode LBRACE() { return getToken(Java8Parser.LBRACE, 0); }
+ public TerminalNode RBRACE() { return getToken(Java8Parser.RBRACE, 0); }
+ public List switchBlockStatementGroup() {
+ return getRuleContexts(SwitchBlockStatementGroupContext.class);
+ }
+ public SwitchBlockStatementGroupContext switchBlockStatementGroup(int i) {
+ return getRuleContext(SwitchBlockStatementGroupContext.class,i);
+ }
+ public List switchLabel() {
+ return getRuleContexts(SwitchLabelContext.class);
+ }
+ public SwitchLabelContext switchLabel(int i) {
+ return getRuleContext(SwitchLabelContext.class,i);
+ }
+ public SwitchBlockContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchBlock; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchBlock(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlock(this);
+ }
+ }
+
+ public final SwitchBlockContext switchBlock() throws RecognitionException {
+ SwitchBlockContext _localctx = new SwitchBlockContext(_ctx, getState());
+ enterRule(_localctx, 288, RULE_switchBlock);
+ int _la;
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1609);
+ match(LBRACE);
+ setState(1613);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,162,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1610);
+ switchBlockStatementGroup();
+ }
+ }
+ }
+ setState(1615);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,162,_ctx);
+ }
+ setState(1619);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==CASE || _la==DEFAULT) {
+ {
+ {
+ setState(1616);
+ switchLabel();
+ }
+ }
+ setState(1621);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1622);
+ match(RBRACE);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchBlockStatementGroupContext extends ParserRuleContext {
+ public SwitchLabelsContext switchLabels() {
+ return getRuleContext(SwitchLabelsContext.class,0);
+ }
+ public BlockStatementsContext blockStatements() {
+ return getRuleContext(BlockStatementsContext.class,0);
+ }
+ public SwitchBlockStatementGroupContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchBlockStatementGroup; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchBlockStatementGroup(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchBlockStatementGroup(this);
+ }
+ }
+
+ public final SwitchBlockStatementGroupContext switchBlockStatementGroup() throws RecognitionException {
+ SwitchBlockStatementGroupContext _localctx = new SwitchBlockStatementGroupContext(_ctx, getState());
+ enterRule(_localctx, 290, RULE_switchBlockStatementGroup);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1624);
+ switchLabels();
+ setState(1625);
+ blockStatements();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchLabelsContext extends ParserRuleContext {
+ public List switchLabel() {
+ return getRuleContexts(SwitchLabelContext.class);
+ }
+ public SwitchLabelContext switchLabel(int i) {
+ return getRuleContext(SwitchLabelContext.class,i);
+ }
+ public SwitchLabelsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchLabels; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchLabels(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabels(this);
+ }
+ }
+
+ public final SwitchLabelsContext switchLabels() throws RecognitionException {
+ SwitchLabelsContext _localctx = new SwitchLabelsContext(_ctx, getState());
+ enterRule(_localctx, 292, RULE_switchLabels);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1627);
+ switchLabel();
+ setState(1631);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==CASE || _la==DEFAULT) {
+ {
+ {
+ setState(1628);
+ switchLabel();
+ }
+ }
+ setState(1633);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SwitchLabelContext extends ParserRuleContext {
+ public TerminalNode CASE() { return getToken(Java8Parser.CASE, 0); }
+ public ConstantExpressionContext constantExpression() {
+ return getRuleContext(ConstantExpressionContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public EnumConstantNameContext enumConstantName() {
+ return getRuleContext(EnumConstantNameContext.class,0);
+ }
+ public TerminalNode DEFAULT() { return getToken(Java8Parser.DEFAULT, 0); }
+ public SwitchLabelContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_switchLabel; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSwitchLabel(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSwitchLabel(this);
+ }
+ }
+
+ public final SwitchLabelContext switchLabel() throws RecognitionException {
+ SwitchLabelContext _localctx = new SwitchLabelContext(_ctx, getState());
+ enterRule(_localctx, 294, RULE_switchLabel);
+ try {
+ setState(1644);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,165,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1634);
+ match(CASE);
+ setState(1635);
+ constantExpression();
+ setState(1636);
+ match(COLON);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1638);
+ match(CASE);
+ setState(1639);
+ enumConstantName();
+ setState(1640);
+ match(COLON);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1642);
+ match(DEFAULT);
+ setState(1643);
+ match(COLON);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnumConstantNameContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public EnumConstantNameContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enumConstantName; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnumConstantName(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnumConstantName(this);
+ }
+ }
+
+ public final EnumConstantNameContext enumConstantName() throws RecognitionException {
+ EnumConstantNameContext _localctx = new EnumConstantNameContext(_ctx, getState());
+ enterRule(_localctx, 296, RULE_enumConstantName);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1646);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WhileStatementContext extends ParserRuleContext {
+ public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public WhileStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_whileStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatement(this);
+ }
+ }
+
+ public final WhileStatementContext whileStatement() throws RecognitionException {
+ WhileStatementContext _localctx = new WhileStatementContext(_ctx, getState());
+ enterRule(_localctx, 298, RULE_whileStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1648);
+ match(WHILE);
+ setState(1649);
+ match(LPAREN);
+ setState(1650);
+ expression();
+ setState(1651);
+ match(RPAREN);
+ setState(1652);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class WhileStatementNoShortIfContext extends ParserRuleContext {
+ public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementNoShortIfContext statementNoShortIf() {
+ return getRuleContext(StatementNoShortIfContext.class,0);
+ }
+ public WhileStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_whileStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterWhileStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitWhileStatementNoShortIf(this);
+ }
+ }
+
+ public final WhileStatementNoShortIfContext whileStatementNoShortIf() throws RecognitionException {
+ WhileStatementNoShortIfContext _localctx = new WhileStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 300, RULE_whileStatementNoShortIf);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1654);
+ match(WHILE);
+ setState(1655);
+ match(LPAREN);
+ setState(1656);
+ expression();
+ setState(1657);
+ match(RPAREN);
+ setState(1658);
+ statementNoShortIf();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DoStatementContext extends ParserRuleContext {
+ public TerminalNode DO() { return getToken(Java8Parser.DO, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public TerminalNode WHILE() { return getToken(Java8Parser.WHILE, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public DoStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_doStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDoStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDoStatement(this);
+ }
+ }
+
+ public final DoStatementContext doStatement() throws RecognitionException {
+ DoStatementContext _localctx = new DoStatementContext(_ctx, getState());
+ enterRule(_localctx, 302, RULE_doStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1660);
+ match(DO);
+ setState(1661);
+ statement();
+ setState(1662);
+ match(WHILE);
+ setState(1663);
+ match(LPAREN);
+ setState(1664);
+ expression();
+ setState(1665);
+ match(RPAREN);
+ setState(1666);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForStatementContext extends ParserRuleContext {
+ public BasicForStatementContext basicForStatement() {
+ return getRuleContext(BasicForStatementContext.class,0);
+ }
+ public EnhancedForStatementContext enhancedForStatement() {
+ return getRuleContext(EnhancedForStatementContext.class,0);
+ }
+ public ForStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatement(this);
+ }
+ }
+
+ public final ForStatementContext forStatement() throws RecognitionException {
+ ForStatementContext _localctx = new ForStatementContext(_ctx, getState());
+ enterRule(_localctx, 304, RULE_forStatement);
+ try {
+ setState(1670);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,166,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1668);
+ basicForStatement();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1669);
+ enhancedForStatement();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForStatementNoShortIfContext extends ParserRuleContext {
+ public BasicForStatementNoShortIfContext basicForStatementNoShortIf() {
+ return getRuleContext(BasicForStatementNoShortIfContext.class,0);
+ }
+ public EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() {
+ return getRuleContext(EnhancedForStatementNoShortIfContext.class,0);
+ }
+ public ForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForStatementNoShortIf(this);
+ }
+ }
+
+ public final ForStatementNoShortIfContext forStatementNoShortIf() throws RecognitionException {
+ ForStatementNoShortIfContext _localctx = new ForStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 306, RULE_forStatementNoShortIf);
+ try {
+ setState(1674);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,167,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1672);
+ basicForStatementNoShortIf();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1673);
+ enhancedForStatementNoShortIf();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BasicForStatementContext extends ParserRuleContext {
+ public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public List SEMI() { return getTokens(Java8Parser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(Java8Parser.SEMI, i);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public ForInitContext forInit() {
+ return getRuleContext(ForInitContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ForUpdateContext forUpdate() {
+ return getRuleContext(ForUpdateContext.class,0);
+ }
+ public BasicForStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_basicForStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatement(this);
+ }
+ }
+
+ public final BasicForStatementContext basicForStatement() throws RecognitionException {
+ BasicForStatementContext _localctx = new BasicForStatementContext(_ctx, getState());
+ enterRule(_localctx, 308, RULE_basicForStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1676);
+ match(FOR);
+ setState(1677);
+ match(LPAREN);
+ setState(1679);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087178240296L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1678);
+ forInit();
+ }
+ }
+
+ setState(1681);
+ match(SEMI);
+ setState(1683);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1682);
+ expression();
+ }
+ }
+
+ setState(1685);
+ match(SEMI);
+ setState(1687);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1686);
+ forUpdate();
+ }
+ }
+
+ setState(1689);
+ match(RPAREN);
+ setState(1690);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BasicForStatementNoShortIfContext extends ParserRuleContext {
+ public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public List SEMI() { return getTokens(Java8Parser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(Java8Parser.SEMI, i);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementNoShortIfContext statementNoShortIf() {
+ return getRuleContext(StatementNoShortIfContext.class,0);
+ }
+ public ForInitContext forInit() {
+ return getRuleContext(ForInitContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ForUpdateContext forUpdate() {
+ return getRuleContext(ForUpdateContext.class,0);
+ }
+ public BasicForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_basicForStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBasicForStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBasicForStatementNoShortIf(this);
+ }
+ }
+
+ public final BasicForStatementNoShortIfContext basicForStatementNoShortIf() throws RecognitionException {
+ BasicForStatementNoShortIfContext _localctx = new BasicForStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 310, RULE_basicForStatementNoShortIf);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1692);
+ match(FOR);
+ setState(1693);
+ match(LPAREN);
+ setState(1695);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087178240296L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1694);
+ forInit();
+ }
+ }
+
+ setState(1697);
+ match(SEMI);
+ setState(1699);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1698);
+ expression();
+ }
+ }
+
+ setState(1701);
+ match(SEMI);
+ setState(1703);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 79)) & ~0x3f) == 0 && ((1L << (_la - 79)) & 25165827L) != 0)) {
+ {
+ setState(1702);
+ forUpdate();
+ }
+ }
+
+ setState(1705);
+ match(RPAREN);
+ setState(1706);
+ statementNoShortIf();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForInitContext extends ParserRuleContext {
+ public StatementExpressionListContext statementExpressionList() {
+ return getRuleContext(StatementExpressionListContext.class,0);
+ }
+ public LocalVariableDeclarationContext localVariableDeclaration() {
+ return getRuleContext(LocalVariableDeclarationContext.class,0);
+ }
+ public ForInitContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forInit; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForInit(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForInit(this);
+ }
+ }
+
+ public final ForInitContext forInit() throws RecognitionException {
+ ForInitContext _localctx = new ForInitContext(_ctx, getState());
+ enterRule(_localctx, 312, RULE_forInit);
+ try {
+ setState(1710);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,174,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1708);
+ statementExpressionList();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1709);
+ localVariableDeclaration();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ForUpdateContext extends ParserRuleContext {
+ public StatementExpressionListContext statementExpressionList() {
+ return getRuleContext(StatementExpressionListContext.class,0);
+ }
+ public ForUpdateContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_forUpdate; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterForUpdate(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitForUpdate(this);
+ }
+ }
+
+ public final ForUpdateContext forUpdate() throws RecognitionException {
+ ForUpdateContext _localctx = new ForUpdateContext(_ctx, getState());
+ enterRule(_localctx, 314, RULE_forUpdate);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1712);
+ statementExpressionList();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class StatementExpressionListContext extends ParserRuleContext {
+ public List statementExpression() {
+ return getRuleContexts(StatementExpressionContext.class);
+ }
+ public StatementExpressionContext statementExpression(int i) {
+ return getRuleContext(StatementExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public StatementExpressionListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_statementExpressionList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterStatementExpressionList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitStatementExpressionList(this);
+ }
+ }
+
+ public final StatementExpressionListContext statementExpressionList() throws RecognitionException {
+ StatementExpressionListContext _localctx = new StatementExpressionListContext(_ctx, getState());
+ enterRule(_localctx, 316, RULE_statementExpressionList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1714);
+ statementExpression();
+ setState(1719);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(1715);
+ match(COMMA);
+ setState(1716);
+ statementExpression();
+ }
+ }
+ setState(1721);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnhancedForStatementContext extends ParserRuleContext {
+ public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementContext statement() {
+ return getRuleContext(StatementContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public EnhancedForStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enhancedForStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatement(this);
+ }
+ }
+
+ public final EnhancedForStatementContext enhancedForStatement() throws RecognitionException {
+ EnhancedForStatementContext _localctx = new EnhancedForStatementContext(_ctx, getState());
+ enterRule(_localctx, 318, RULE_enhancedForStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1722);
+ match(FOR);
+ setState(1723);
+ match(LPAREN);
+ setState(1727);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1724);
+ variableModifier();
+ }
+ }
+ setState(1729);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1730);
+ unannType();
+ setState(1731);
+ variableDeclaratorId();
+ setState(1732);
+ match(COLON);
+ setState(1733);
+ expression();
+ setState(1734);
+ match(RPAREN);
+ setState(1735);
+ statement();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EnhancedForStatementNoShortIfContext extends ParserRuleContext {
+ public TerminalNode FOR() { return getToken(Java8Parser.FOR, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public StatementNoShortIfContext statementNoShortIf() {
+ return getRuleContext(StatementNoShortIfContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public EnhancedForStatementNoShortIfContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_enhancedForStatementNoShortIf; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEnhancedForStatementNoShortIf(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEnhancedForStatementNoShortIf(this);
+ }
+ }
+
+ public final EnhancedForStatementNoShortIfContext enhancedForStatementNoShortIf() throws RecognitionException {
+ EnhancedForStatementNoShortIfContext _localctx = new EnhancedForStatementNoShortIfContext(_ctx, getState());
+ enterRule(_localctx, 320, RULE_enhancedForStatementNoShortIf);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1737);
+ match(FOR);
+ setState(1738);
+ match(LPAREN);
+ setState(1742);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1739);
+ variableModifier();
+ }
+ }
+ setState(1744);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1745);
+ unannType();
+ setState(1746);
+ variableDeclaratorId();
+ setState(1747);
+ match(COLON);
+ setState(1748);
+ expression();
+ setState(1749);
+ match(RPAREN);
+ setState(1750);
+ statementNoShortIf();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class BreakStatementContext extends ParserRuleContext {
+ public TerminalNode BREAK() { return getToken(Java8Parser.BREAK, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public BreakStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_breakStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterBreakStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitBreakStatement(this);
+ }
+ }
+
+ public final BreakStatementContext breakStatement() throws RecognitionException {
+ BreakStatementContext _localctx = new BreakStatementContext(_ctx, getState());
+ enterRule(_localctx, 322, RULE_breakStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1752);
+ match(BREAK);
+ setState(1754);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==Identifier) {
+ {
+ setState(1753);
+ match(Identifier);
+ }
+ }
+
+ setState(1756);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ContinueStatementContext extends ParserRuleContext {
+ public TerminalNode CONTINUE() { return getToken(Java8Parser.CONTINUE, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public ContinueStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_continueStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterContinueStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitContinueStatement(this);
+ }
+ }
+
+ public final ContinueStatementContext continueStatement() throws RecognitionException {
+ ContinueStatementContext _localctx = new ContinueStatementContext(_ctx, getState());
+ enterRule(_localctx, 324, RULE_continueStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1758);
+ match(CONTINUE);
+ setState(1760);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==Identifier) {
+ {
+ setState(1759);
+ match(Identifier);
+ }
+ }
+
+ setState(1762);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ReturnStatementContext extends ParserRuleContext {
+ public TerminalNode RETURN() { return getToken(Java8Parser.RETURN, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ReturnStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_returnStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterReturnStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitReturnStatement(this);
+ }
+ }
+
+ public final ReturnStatementContext returnStatement() throws RecognitionException {
+ ReturnStatementContext _localctx = new ReturnStatementContext(_ctx, getState());
+ enterRule(_localctx, 326, RULE_returnStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1764);
+ match(RETURN);
+ setState(1766);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(1765);
+ expression();
+ }
+ }
+
+ setState(1768);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ThrowStatementContext extends ParserRuleContext {
+ public TerminalNode THROW() { return getToken(Java8Parser.THROW, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public ThrowStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_throwStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterThrowStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitThrowStatement(this);
+ }
+ }
+
+ public final ThrowStatementContext throwStatement() throws RecognitionException {
+ ThrowStatementContext _localctx = new ThrowStatementContext(_ctx, getState());
+ enterRule(_localctx, 328, RULE_throwStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1770);
+ match(THROW);
+ setState(1771);
+ expression();
+ setState(1772);
+ match(SEMI);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class SynchronizedStatementContext extends ParserRuleContext {
+ public TerminalNode SYNCHRONIZED() { return getToken(Java8Parser.SYNCHRONIZED, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public SynchronizedStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_synchronizedStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterSynchronizedStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitSynchronizedStatement(this);
+ }
+ }
+
+ public final SynchronizedStatementContext synchronizedStatement() throws RecognitionException {
+ SynchronizedStatementContext _localctx = new SynchronizedStatementContext(_ctx, getState());
+ enterRule(_localctx, 330, RULE_synchronizedStatement);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1774);
+ match(SYNCHRONIZED);
+ setState(1775);
+ match(LPAREN);
+ setState(1776);
+ expression();
+ setState(1777);
+ match(RPAREN);
+ setState(1778);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TryStatementContext extends ParserRuleContext {
+ public TerminalNode TRY() { return getToken(Java8Parser.TRY, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public CatchesContext catches() {
+ return getRuleContext(CatchesContext.class,0);
+ }
+ public Finally_Context finally_() {
+ return getRuleContext(Finally_Context.class,0);
+ }
+ public TryWithResourcesStatementContext tryWithResourcesStatement() {
+ return getRuleContext(TryWithResourcesStatementContext.class,0);
+ }
+ public TryStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_tryStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryStatement(this);
+ }
+ }
+
+ public final TryStatementContext tryStatement() throws RecognitionException {
+ TryStatementContext _localctx = new TryStatementContext(_ctx, getState());
+ enterRule(_localctx, 332, RULE_tryStatement);
+ int _la;
+ try {
+ setState(1792);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,182,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1780);
+ match(TRY);
+ setState(1781);
+ block();
+ setState(1782);
+ catches();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1784);
+ match(TRY);
+ setState(1785);
+ block();
+ setState(1787);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==CATCH) {
+ {
+ setState(1786);
+ catches();
+ }
+ }
+
+ setState(1789);
+ finally_();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1791);
+ tryWithResourcesStatement();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CatchesContext extends ParserRuleContext {
+ public List catchClause() {
+ return getRuleContexts(CatchClauseContext.class);
+ }
+ public CatchClauseContext catchClause(int i) {
+ return getRuleContext(CatchClauseContext.class,i);
+ }
+ public CatchesContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catches; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatches(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatches(this);
+ }
+ }
+
+ public final CatchesContext catches() throws RecognitionException {
+ CatchesContext _localctx = new CatchesContext(_ctx, getState());
+ enterRule(_localctx, 334, RULE_catches);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1794);
+ catchClause();
+ setState(1798);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==CATCH) {
+ {
+ {
+ setState(1795);
+ catchClause();
+ }
+ }
+ setState(1800);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CatchClauseContext extends ParserRuleContext {
+ public TerminalNode CATCH() { return getToken(Java8Parser.CATCH, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public CatchFormalParameterContext catchFormalParameter() {
+ return getRuleContext(CatchFormalParameterContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public CatchClauseContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catchClause; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchClause(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchClause(this);
+ }
+ }
+
+ public final CatchClauseContext catchClause() throws RecognitionException {
+ CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState());
+ enterRule(_localctx, 336, RULE_catchClause);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1801);
+ match(CATCH);
+ setState(1802);
+ match(LPAREN);
+ setState(1803);
+ catchFormalParameter();
+ setState(1804);
+ match(RPAREN);
+ setState(1805);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CatchFormalParameterContext extends ParserRuleContext {
+ public CatchTypeContext catchType() {
+ return getRuleContext(CatchTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public CatchFormalParameterContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catchFormalParameter; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchFormalParameter(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchFormalParameter(this);
+ }
+ }
+
+ public final CatchFormalParameterContext catchFormalParameter() throws RecognitionException {
+ CatchFormalParameterContext _localctx = new CatchFormalParameterContext(_ctx, getState());
+ enterRule(_localctx, 338, RULE_catchFormalParameter);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1810);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1807);
+ variableModifier();
+ }
+ }
+ setState(1812);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1813);
+ catchType();
+ setState(1814);
+ variableDeclaratorId();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CatchTypeContext extends ParserRuleContext {
+ public UnannClassTypeContext unannClassType() {
+ return getRuleContext(UnannClassTypeContext.class,0);
+ }
+ public List BITOR() { return getTokens(Java8Parser.BITOR); }
+ public TerminalNode BITOR(int i) {
+ return getToken(Java8Parser.BITOR, i);
+ }
+ public List classType() {
+ return getRuleContexts(ClassTypeContext.class);
+ }
+ public ClassTypeContext classType(int i) {
+ return getRuleContext(ClassTypeContext.class,i);
+ }
+ public CatchTypeContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_catchType; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCatchType(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCatchType(this);
+ }
+ }
+
+ public final CatchTypeContext catchType() throws RecognitionException {
+ CatchTypeContext _localctx = new CatchTypeContext(_ctx, getState());
+ enterRule(_localctx, 340, RULE_catchType);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1816);
+ unannClassType();
+ setState(1821);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITOR) {
+ {
+ {
+ setState(1817);
+ match(BITOR);
+ setState(1818);
+ classType();
+ }
+ }
+ setState(1823);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class Finally_Context extends ParserRuleContext {
+ public TerminalNode FINALLY() { return getToken(Java8Parser.FINALLY, 0); }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public Finally_Context(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_finally_; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFinally_(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFinally_(this);
+ }
+ }
+
+ public final Finally_Context finally_() throws RecognitionException {
+ Finally_Context _localctx = new Finally_Context(_ctx, getState());
+ enterRule(_localctx, 342, RULE_finally_);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1824);
+ match(FINALLY);
+ setState(1825);
+ block();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TryWithResourcesStatementContext extends ParserRuleContext {
+ public TerminalNode TRY() { return getToken(Java8Parser.TRY, 0); }
+ public ResourceSpecificationContext resourceSpecification() {
+ return getRuleContext(ResourceSpecificationContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public CatchesContext catches() {
+ return getRuleContext(CatchesContext.class,0);
+ }
+ public Finally_Context finally_() {
+ return getRuleContext(Finally_Context.class,0);
+ }
+ public TryWithResourcesStatementContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_tryWithResourcesStatement; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTryWithResourcesStatement(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTryWithResourcesStatement(this);
+ }
+ }
+
+ public final TryWithResourcesStatementContext tryWithResourcesStatement() throws RecognitionException {
+ TryWithResourcesStatementContext _localctx = new TryWithResourcesStatementContext(_ctx, getState());
+ enterRule(_localctx, 344, RULE_tryWithResourcesStatement);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1827);
+ match(TRY);
+ setState(1828);
+ resourceSpecification();
+ setState(1829);
+ block();
+ setState(1831);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==CATCH) {
+ {
+ setState(1830);
+ catches();
+ }
+ }
+
+ setState(1834);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==FINALLY) {
+ {
+ setState(1833);
+ finally_();
+ }
+ }
+
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ResourceSpecificationContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ResourceListContext resourceList() {
+ return getRuleContext(ResourceListContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TerminalNode SEMI() { return getToken(Java8Parser.SEMI, 0); }
+ public ResourceSpecificationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resourceSpecification; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResourceSpecification(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceSpecification(this);
+ }
+ }
+
+ public final ResourceSpecificationContext resourceSpecification() throws RecognitionException {
+ ResourceSpecificationContext _localctx = new ResourceSpecificationContext(_ctx, getState());
+ enterRule(_localctx, 346, RULE_resourceSpecification);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1836);
+ match(LPAREN);
+ setState(1837);
+ resourceList();
+ setState(1839);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==SEMI) {
+ {
+ setState(1838);
+ match(SEMI);
+ }
+ }
+
+ setState(1841);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ResourceListContext extends ParserRuleContext {
+ public List resource() {
+ return getRuleContexts(ResourceContext.class);
+ }
+ public ResourceContext resource(int i) {
+ return getRuleContext(ResourceContext.class,i);
+ }
+ public List SEMI() { return getTokens(Java8Parser.SEMI); }
+ public TerminalNode SEMI(int i) {
+ return getToken(Java8Parser.SEMI, i);
+ }
+ public ResourceListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resourceList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResourceList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResourceList(this);
+ }
+ }
+
+ public final ResourceListContext resourceList() throws RecognitionException {
+ ResourceListContext _localctx = new ResourceListContext(_ctx, getState());
+ enterRule(_localctx, 348, RULE_resourceList);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1843);
+ resource();
+ setState(1848);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,189,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1844);
+ match(SEMI);
+ setState(1845);
+ resource();
+ }
+ }
+ }
+ setState(1850);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,189,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ResourceContext extends ParserRuleContext {
+ public UnannTypeContext unannType() {
+ return getRuleContext(UnannTypeContext.class,0);
+ }
+ public VariableDeclaratorIdContext variableDeclaratorId() {
+ return getRuleContext(VariableDeclaratorIdContext.class,0);
+ }
+ public TerminalNode ASSIGN() { return getToken(Java8Parser.ASSIGN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public List variableModifier() {
+ return getRuleContexts(VariableModifierContext.class);
+ }
+ public VariableModifierContext variableModifier(int i) {
+ return getRuleContext(VariableModifierContext.class,i);
+ }
+ public ResourceContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_resource; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterResource(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitResource(this);
+ }
+ }
+
+ public final ResourceContext resource() throws RecognitionException {
+ ResourceContext _localctx = new ResourceContext(_ctx, getState());
+ enterRule(_localctx, 350, RULE_resource);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1854);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==FINAL || _la==AT) {
+ {
+ {
+ setState(1851);
+ variableModifier();
+ }
+ }
+ setState(1856);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1857);
+ unannType();
+ setState(1858);
+ variableDeclaratorId();
+ setState(1859);
+ match(ASSIGN);
+ setState(1860);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryContext extends ParserRuleContext {
+ public PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() {
+ return getRuleContext(PrimaryNoNewArray_lfno_primaryContext.class,0);
+ }
+ public ArrayCreationExpressionContext arrayCreationExpression() {
+ return getRuleContext(ArrayCreationExpressionContext.class,0);
+ }
+ public List primaryNoNewArray_lf_primary() {
+ return getRuleContexts(PrimaryNoNewArray_lf_primaryContext.class);
+ }
+ public PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary(int i) {
+ return getRuleContext(PrimaryNoNewArray_lf_primaryContext.class,i);
+ }
+ public PrimaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimary(this);
+ }
+ }
+
+ public final PrimaryContext primary() throws RecognitionException {
+ PrimaryContext _localctx = new PrimaryContext(_ctx, getState());
+ enterRule(_localctx, 352, RULE_primary);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1864);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,191,_ctx) ) {
+ case 1:
+ {
+ setState(1862);
+ primaryNoNewArray_lfno_primary();
+ }
+ break;
+ case 2:
+ {
+ setState(1863);
+ arrayCreationExpression();
+ }
+ break;
+ }
+ setState(1869);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,192,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(1866);
+ primaryNoNewArray_lf_primary();
+ }
+ }
+ }
+ setState(1871);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,192,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArrayContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); }
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ClassInstanceCreationExpressionContext classInstanceCreationExpression() {
+ return getRuleContext(ClassInstanceCreationExpressionContext.class,0);
+ }
+ public FieldAccessContext fieldAccess() {
+ return getRuleContext(FieldAccessContext.class,0);
+ }
+ public ArrayAccessContext arrayAccess() {
+ return getRuleContext(ArrayAccessContext.class,0);
+ }
+ public MethodInvocationContext methodInvocation() {
+ return getRuleContext(MethodInvocationContext.class,0);
+ }
+ public MethodReferenceContext methodReference() {
+ return getRuleContext(MethodReferenceContext.class,0);
+ }
+ public PrimaryNoNewArrayContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray(this);
+ }
+ }
+
+ public final PrimaryNoNewArrayContext primaryNoNewArray() throws RecognitionException {
+ PrimaryNoNewArrayContext _localctx = new PrimaryNoNewArrayContext(_ctx, getState());
+ enterRule(_localctx, 354, RULE_primaryNoNewArray);
+ int _la;
+ try {
+ setState(1901);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,194,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1872);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1873);
+ typeName();
+ setState(1878);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1874);
+ match(LBRACK);
+ setState(1875);
+ match(RBRACK);
+ }
+ }
+ setState(1880);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1881);
+ match(DOT);
+ setState(1882);
+ match(CLASS);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1884);
+ match(VOID);
+ setState(1885);
+ match(DOT);
+ setState(1886);
+ match(CLASS);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1887);
+ match(THIS);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1888);
+ typeName();
+ setState(1889);
+ match(DOT);
+ setState(1890);
+ match(THIS);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1892);
+ match(LPAREN);
+ setState(1893);
+ expression();
+ setState(1894);
+ match(RPAREN);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1896);
+ classInstanceCreationExpression();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1897);
+ fieldAccess();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1898);
+ arrayAccess();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1899);
+ methodInvocation();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(1900);
+ methodReference();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lf_arrayAccessContext extends ParserRuleContext {
+ public PrimaryNoNewArray_lf_arrayAccessContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_arrayAccess; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_arrayAccess(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_arrayAccess(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess() throws RecognitionException {
+ PrimaryNoNewArray_lf_arrayAccessContext _localctx = new PrimaryNoNewArray_lf_arrayAccessContext(_ctx, getState());
+ enterRule(_localctx, 356, RULE_primaryNoNewArray_lf_arrayAccess);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lfno_arrayAccessContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); }
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ClassInstanceCreationExpressionContext classInstanceCreationExpression() {
+ return getRuleContext(ClassInstanceCreationExpressionContext.class,0);
+ }
+ public FieldAccessContext fieldAccess() {
+ return getRuleContext(FieldAccessContext.class,0);
+ }
+ public MethodInvocationContext methodInvocation() {
+ return getRuleContext(MethodInvocationContext.class,0);
+ }
+ public MethodReferenceContext methodReference() {
+ return getRuleContext(MethodReferenceContext.class,0);
+ }
+ public PrimaryNoNewArray_lfno_arrayAccessContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_arrayAccess; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_arrayAccess(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_arrayAccess(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() throws RecognitionException {
+ PrimaryNoNewArray_lfno_arrayAccessContext _localctx = new PrimaryNoNewArray_lfno_arrayAccessContext(_ctx, getState());
+ enterRule(_localctx, 358, RULE_primaryNoNewArray_lfno_arrayAccess);
+ int _la;
+ try {
+ setState(1933);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,196,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1905);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1906);
+ typeName();
+ setState(1911);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1907);
+ match(LBRACK);
+ setState(1908);
+ match(RBRACK);
+ }
+ }
+ setState(1913);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1914);
+ match(DOT);
+ setState(1915);
+ match(CLASS);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1917);
+ match(VOID);
+ setState(1918);
+ match(DOT);
+ setState(1919);
+ match(CLASS);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1920);
+ match(THIS);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1921);
+ typeName();
+ setState(1922);
+ match(DOT);
+ setState(1923);
+ match(THIS);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1925);
+ match(LPAREN);
+ setState(1926);
+ expression();
+ setState(1927);
+ match(RPAREN);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1929);
+ classInstanceCreationExpression();
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1930);
+ fieldAccess();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1931);
+ methodInvocation();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1932);
+ methodReference();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lf_primaryContext extends ParserRuleContext {
+ public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() {
+ return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0);
+ }
+ public FieldAccess_lf_primaryContext fieldAccess_lf_primary() {
+ return getRuleContext(FieldAccess_lf_primaryContext.class,0);
+ }
+ public ArrayAccess_lf_primaryContext arrayAccess_lf_primary() {
+ return getRuleContext(ArrayAccess_lf_primaryContext.class,0);
+ }
+ public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() {
+ return getRuleContext(MethodInvocation_lf_primaryContext.class,0);
+ }
+ public MethodReference_lf_primaryContext methodReference_lf_primary() {
+ return getRuleContext(MethodReference_lf_primaryContext.class,0);
+ }
+ public PrimaryNoNewArray_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lf_primaryContext primaryNoNewArray_lf_primary() throws RecognitionException {
+ PrimaryNoNewArray_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 360, RULE_primaryNoNewArray_lf_primary);
+ try {
+ setState(1940);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,197,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1935);
+ classInstanceCreationExpression_lf_primary();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1936);
+ fieldAccess_lf_primary();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1937);
+ arrayAccess_lf_primary();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1938);
+ methodInvocation_lf_primary();
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1939);
+ methodReference_lf_primary();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext extends ParserRuleContext {
+ public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() throws RecognitionException {
+ PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 362, RULE_primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext extends ParserRuleContext {
+ public ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() {
+ return getRuleContext(ClassInstanceCreationExpression_lf_primaryContext.class,0);
+ }
+ public FieldAccess_lf_primaryContext fieldAccess_lf_primary() {
+ return getRuleContext(FieldAccess_lf_primaryContext.class,0);
+ }
+ public MethodInvocation_lf_primaryContext methodInvocation_lf_primary() {
+ return getRuleContext(MethodInvocation_lf_primaryContext.class,0);
+ }
+ public MethodReference_lf_primaryContext methodReference_lf_primary() {
+ return getRuleContext(MethodReference_lf_primaryContext.class,0);
+ }
+ public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() throws RecognitionException {
+ PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext _localctx = new PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 364, RULE_primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary);
+ try {
+ setState(1948);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,198,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1944);
+ classInstanceCreationExpression_lf_primary();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1945);
+ fieldAccess_lf_primary();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1946);
+ methodInvocation_lf_primary();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1947);
+ methodReference_lf_primary();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lfno_primaryContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public UnannPrimitiveTypeContext unannPrimitiveType() {
+ return getRuleContext(UnannPrimitiveTypeContext.class,0);
+ }
+ public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); }
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() {
+ return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0);
+ }
+ public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() {
+ return getRuleContext(FieldAccess_lfno_primaryContext.class,0);
+ }
+ public ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() {
+ return getRuleContext(ArrayAccess_lfno_primaryContext.class,0);
+ }
+ public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() {
+ return getRuleContext(MethodInvocation_lfno_primaryContext.class,0);
+ }
+ public MethodReference_lfno_primaryContext methodReference_lfno_primary() {
+ return getRuleContext(MethodReference_lfno_primaryContext.class,0);
+ }
+ public PrimaryNoNewArray_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lfno_primaryContext primaryNoNewArray_lfno_primary() throws RecognitionException {
+ PrimaryNoNewArray_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 366, RULE_primaryNoNewArray_lfno_primary);
+ int _la;
+ try {
+ setState(1990);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,201,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1950);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1951);
+ typeName();
+ setState(1956);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1952);
+ match(LBRACK);
+ setState(1953);
+ match(RBRACK);
+ }
+ }
+ setState(1958);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1959);
+ match(DOT);
+ setState(1960);
+ match(CLASS);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(1962);
+ unannPrimitiveType();
+ setState(1967);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1963);
+ match(LBRACK);
+ setState(1964);
+ match(RBRACK);
+ }
+ }
+ setState(1969);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(1970);
+ match(DOT);
+ setState(1971);
+ match(CLASS);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(1973);
+ match(VOID);
+ setState(1974);
+ match(DOT);
+ setState(1975);
+ match(CLASS);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(1976);
+ match(THIS);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(1977);
+ typeName();
+ setState(1978);
+ match(DOT);
+ setState(1979);
+ match(THIS);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(1981);
+ match(LPAREN);
+ setState(1982);
+ expression();
+ setState(1983);
+ match(RPAREN);
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(1985);
+ classInstanceCreationExpression_lfno_primary();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(1986);
+ fieldAccess_lfno_primary();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(1987);
+ arrayAccess_lfno_primary();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(1988);
+ methodInvocation_lfno_primary();
+ }
+ break;
+ case 12:
+ enterOuterAlt(_localctx, 12);
+ {
+ setState(1989);
+ methodReference_lfno_primary();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext extends ParserRuleContext {
+ public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() throws RecognitionException {
+ PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 368, RULE_primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext extends ParserRuleContext {
+ public LiteralContext literal() {
+ return getRuleContext(LiteralContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode CLASS() { return getToken(Java8Parser.CLASS, 0); }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public UnannPrimitiveTypeContext unannPrimitiveType() {
+ return getRuleContext(UnannPrimitiveTypeContext.class,0);
+ }
+ public TerminalNode VOID() { return getToken(Java8Parser.VOID, 0); }
+ public TerminalNode THIS() { return getToken(Java8Parser.THIS, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() {
+ return getRuleContext(ClassInstanceCreationExpression_lfno_primaryContext.class,0);
+ }
+ public FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() {
+ return getRuleContext(FieldAccess_lfno_primaryContext.class,0);
+ }
+ public MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() {
+ return getRuleContext(MethodInvocation_lfno_primaryContext.class,0);
+ }
+ public MethodReference_lfno_primaryContext methodReference_lfno_primary() {
+ return getRuleContext(MethodReference_lfno_primaryContext.class,0);
+ }
+ public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary(this);
+ }
+ }
+
+ public final PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() throws RecognitionException {
+ PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext _localctx = new PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 370, RULE_primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary);
+ int _la;
+ try {
+ setState(2033);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,204,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(1994);
+ literal();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(1995);
+ typeName();
+ setState(2000);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(1996);
+ match(LBRACK);
+ setState(1997);
+ match(RBRACK);
+ }
+ }
+ setState(2002);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2003);
+ match(DOT);
+ setState(2004);
+ match(CLASS);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2006);
+ unannPrimitiveType();
+ setState(2011);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(2007);
+ match(LBRACK);
+ setState(2008);
+ match(RBRACK);
+ }
+ }
+ setState(2013);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2014);
+ match(DOT);
+ setState(2015);
+ match(CLASS);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2017);
+ match(VOID);
+ setState(2018);
+ match(DOT);
+ setState(2019);
+ match(CLASS);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2020);
+ match(THIS);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(2021);
+ typeName();
+ setState(2022);
+ match(DOT);
+ setState(2023);
+ match(THIS);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(2025);
+ match(LPAREN);
+ setState(2026);
+ expression();
+ setState(2027);
+ match(RPAREN);
+ }
+ break;
+ case 8:
+ enterOuterAlt(_localctx, 8);
+ {
+ setState(2029);
+ classInstanceCreationExpression_lfno_primary();
+ }
+ break;
+ case 9:
+ enterOuterAlt(_localctx, 9);
+ {
+ setState(2030);
+ fieldAccess_lfno_primary();
+ }
+ break;
+ case 10:
+ enterOuterAlt(_localctx, 10);
+ {
+ setState(2031);
+ methodInvocation_lfno_primary();
+ }
+ break;
+ case 11:
+ enterOuterAlt(_localctx, 11);
+ {
+ setState(2032);
+ methodReference_lfno_primary();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassInstanceCreationExpressionContext extends ParserRuleContext {
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public List Identifier() { return getTokens(Java8Parser.Identifier); }
+ public TerminalNode Identifier(int i) {
+ return getToken(Java8Parser.Identifier, i);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() {
+ return getRuleContext(TypeArgumentsOrDiamondContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public ClassInstanceCreationExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression(this);
+ }
+ }
+
+ public final ClassInstanceCreationExpressionContext classInstanceCreationExpression() throws RecognitionException {
+ ClassInstanceCreationExpressionContext _localctx = new ClassInstanceCreationExpressionContext(_ctx, getState());
+ enterRule(_localctx, 372, RULE_classInstanceCreationExpression);
+ int _la;
+ try {
+ setState(2118);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,222,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2035);
+ match(NEW);
+ setState(2037);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2036);
+ typeArguments();
+ }
+ }
+
+ setState(2042);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2039);
+ annotation();
+ }
+ }
+ setState(2044);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2045);
+ match(Identifier);
+ setState(2056);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DOT) {
+ {
+ {
+ setState(2046);
+ match(DOT);
+ setState(2050);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2047);
+ annotation();
+ }
+ }
+ setState(2052);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2053);
+ match(Identifier);
+ }
+ }
+ setState(2058);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2060);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2059);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2062);
+ match(LPAREN);
+ setState(2064);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2063);
+ argumentList();
+ }
+ }
+
+ setState(2066);
+ match(RPAREN);
+ setState(2068);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACE) {
+ {
+ setState(2067);
+ classBody();
+ }
+ }
+
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2070);
+ expressionName();
+ setState(2071);
+ match(DOT);
+ setState(2072);
+ match(NEW);
+ setState(2074);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2073);
+ typeArguments();
+ }
+ }
+
+ setState(2079);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2076);
+ annotation();
+ }
+ }
+ setState(2081);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2082);
+ match(Identifier);
+ setState(2084);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2083);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2086);
+ match(LPAREN);
+ setState(2088);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2087);
+ argumentList();
+ }
+ }
+
+ setState(2090);
+ match(RPAREN);
+ setState(2092);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACE) {
+ {
+ setState(2091);
+ classBody();
+ }
+ }
+
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2094);
+ primary();
+ setState(2095);
+ match(DOT);
+ setState(2096);
+ match(NEW);
+ setState(2098);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2097);
+ typeArguments();
+ }
+ }
+
+ setState(2103);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2100);
+ annotation();
+ }
+ }
+ setState(2105);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2106);
+ match(Identifier);
+ setState(2108);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2107);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2110);
+ match(LPAREN);
+ setState(2112);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2111);
+ argumentList();
+ }
+ }
+
+ setState(2114);
+ match(RPAREN);
+ setState(2116);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LBRACE) {
+ {
+ setState(2115);
+ classBody();
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassInstanceCreationExpression_lf_primaryContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() {
+ return getRuleContext(TypeArgumentsOrDiamondContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ClassInstanceCreationExpression_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lf_primary(this);
+ }
+ }
+
+ public final ClassInstanceCreationExpression_lf_primaryContext classInstanceCreationExpression_lf_primary() throws RecognitionException {
+ ClassInstanceCreationExpression_lf_primaryContext _localctx = new ClassInstanceCreationExpression_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 374, RULE_classInstanceCreationExpression_lf_primary);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2120);
+ match(DOT);
+ setState(2121);
+ match(NEW);
+ setState(2123);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2122);
+ typeArguments();
+ }
+ }
+
+ setState(2128);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2125);
+ annotation();
+ }
+ }
+ setState(2130);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2131);
+ match(Identifier);
+ setState(2133);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2132);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2135);
+ match(LPAREN);
+ setState(2137);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2136);
+ argumentList();
+ }
+ }
+
+ setState(2139);
+ match(RPAREN);
+ setState(2141);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,227,_ctx) ) {
+ case 1:
+ {
+ setState(2140);
+ classBody();
+ }
+ break;
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ClassInstanceCreationExpression_lfno_primaryContext extends ParserRuleContext {
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public List Identifier() { return getTokens(Java8Parser.Identifier); }
+ public TerminalNode Identifier(int i) {
+ return getToken(Java8Parser.Identifier, i);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() {
+ return getRuleContext(TypeArgumentsOrDiamondContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public ClassBodyContext classBody() {
+ return getRuleContext(ClassBodyContext.class,0);
+ }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public ClassInstanceCreationExpression_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_classInstanceCreationExpression_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterClassInstanceCreationExpression_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitClassInstanceCreationExpression_lfno_primary(this);
+ }
+ }
+
+ public final ClassInstanceCreationExpression_lfno_primaryContext classInstanceCreationExpression_lfno_primary() throws RecognitionException {
+ ClassInstanceCreationExpression_lfno_primaryContext _localctx = new ClassInstanceCreationExpression_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 376, RULE_classInstanceCreationExpression_lfno_primary);
+ int _la;
+ try {
+ setState(2202);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case NEW:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2143);
+ match(NEW);
+ setState(2145);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2144);
+ typeArguments();
+ }
+ }
+
+ setState(2150);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2147);
+ annotation();
+ }
+ }
+ setState(2152);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2153);
+ match(Identifier);
+ setState(2164);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==DOT) {
+ {
+ {
+ setState(2154);
+ match(DOT);
+ setState(2158);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2155);
+ annotation();
+ }
+ }
+ setState(2160);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2161);
+ match(Identifier);
+ }
+ }
+ setState(2166);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2168);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2167);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2170);
+ match(LPAREN);
+ setState(2172);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2171);
+ argumentList();
+ }
+ }
+
+ setState(2174);
+ match(RPAREN);
+ setState(2176);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,234,_ctx) ) {
+ case 1:
+ {
+ setState(2175);
+ classBody();
+ }
+ break;
+ }
+ }
+ break;
+ case Identifier:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2178);
+ expressionName();
+ setState(2179);
+ match(DOT);
+ setState(2180);
+ match(NEW);
+ setState(2182);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2181);
+ typeArguments();
+ }
+ }
+
+ setState(2187);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2184);
+ annotation();
+ }
+ }
+ setState(2189);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2190);
+ match(Identifier);
+ setState(2192);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2191);
+ typeArgumentsOrDiamond();
+ }
+ }
+
+ setState(2194);
+ match(LPAREN);
+ setState(2196);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2195);
+ argumentList();
+ }
+ }
+
+ setState(2198);
+ match(RPAREN);
+ setState(2200);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,239,_ctx) ) {
+ case 1:
+ {
+ setState(2199);
+ classBody();
+ }
+ break;
+ }
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class TypeArgumentsOrDiamondContext extends ParserRuleContext {
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public TerminalNode LT() { return getToken(Java8Parser.LT, 0); }
+ public TerminalNode GT() { return getToken(Java8Parser.GT, 0); }
+ public TypeArgumentsOrDiamondContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_typeArgumentsOrDiamond; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterTypeArgumentsOrDiamond(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitTypeArgumentsOrDiamond(this);
+ }
+ }
+
+ public final TypeArgumentsOrDiamondContext typeArgumentsOrDiamond() throws RecognitionException {
+ TypeArgumentsOrDiamondContext _localctx = new TypeArgumentsOrDiamondContext(_ctx, getState());
+ enterRule(_localctx, 378, RULE_typeArgumentsOrDiamond);
+ try {
+ setState(2207);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,241,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2204);
+ typeArguments();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2205);
+ match(LT);
+ setState(2206);
+ match(GT);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldAccessContext extends ParserRuleContext {
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public FieldAccessContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldAccess; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess(this);
+ }
+ }
+
+ public final FieldAccessContext fieldAccess() throws RecognitionException {
+ FieldAccessContext _localctx = new FieldAccessContext(_ctx, getState());
+ enterRule(_localctx, 380, RULE_fieldAccess);
+ try {
+ setState(2222);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,242,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2209);
+ primary();
+ setState(2210);
+ match(DOT);
+ setState(2211);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2213);
+ match(SUPER);
+ setState(2214);
+ match(DOT);
+ setState(2215);
+ match(Identifier);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2216);
+ typeName();
+ setState(2217);
+ match(DOT);
+ setState(2218);
+ match(SUPER);
+ setState(2219);
+ match(DOT);
+ setState(2220);
+ match(Identifier);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldAccess_lf_primaryContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public FieldAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldAccess_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lf_primary(this);
+ }
+ }
+
+ public final FieldAccess_lf_primaryContext fieldAccess_lf_primary() throws RecognitionException {
+ FieldAccess_lf_primaryContext _localctx = new FieldAccess_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 382, RULE_fieldAccess_lf_primary);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2224);
+ match(DOT);
+ setState(2225);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class FieldAccess_lfno_primaryContext extends ParserRuleContext {
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public FieldAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_fieldAccess_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterFieldAccess_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitFieldAccess_lfno_primary(this);
+ }
+ }
+
+ public final FieldAccess_lfno_primaryContext fieldAccess_lfno_primary() throws RecognitionException {
+ FieldAccess_lfno_primaryContext _localctx = new FieldAccess_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 384, RULE_fieldAccess_lfno_primary);
+ try {
+ setState(2236);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case SUPER:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2227);
+ match(SUPER);
+ setState(2228);
+ match(DOT);
+ setState(2229);
+ match(Identifier);
+ }
+ break;
+ case Identifier:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2230);
+ typeName();
+ setState(2231);
+ match(DOT);
+ setState(2232);
+ match(SUPER);
+ setState(2233);
+ match(DOT);
+ setState(2234);
+ match(Identifier);
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayAccessContext extends ParserRuleContext {
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public PrimaryNoNewArray_lfno_arrayAccessContext primaryNoNewArray_lfno_arrayAccess() {
+ return getRuleContext(PrimaryNoNewArray_lfno_arrayAccessContext.class,0);
+ }
+ public List primaryNoNewArray_lf_arrayAccess() {
+ return getRuleContexts(PrimaryNoNewArray_lf_arrayAccessContext.class);
+ }
+ public PrimaryNoNewArray_lf_arrayAccessContext primaryNoNewArray_lf_arrayAccess(int i) {
+ return getRuleContext(PrimaryNoNewArray_lf_arrayAccessContext.class,i);
+ }
+ public ArrayAccessContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayAccess; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess(this);
+ }
+ }
+
+ public final ArrayAccessContext arrayAccess() throws RecognitionException {
+ ArrayAccessContext _localctx = new ArrayAccessContext(_ctx, getState());
+ enterRule(_localctx, 386, RULE_arrayAccess);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2248);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,244,_ctx) ) {
+ case 1:
+ {
+ setState(2238);
+ expressionName();
+ setState(2239);
+ match(LBRACK);
+ setState(2240);
+ expression();
+ setState(2241);
+ match(RBRACK);
+ }
+ break;
+ case 2:
+ {
+ setState(2243);
+ primaryNoNewArray_lfno_arrayAccess();
+ setState(2244);
+ match(LBRACK);
+ setState(2245);
+ expression();
+ setState(2246);
+ match(RBRACK);
+ }
+ break;
+ }
+ setState(2257);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==LBRACK) {
+ {
+ {
+ setState(2250);
+ primaryNoNewArray_lf_arrayAccess();
+ setState(2251);
+ match(LBRACK);
+ setState(2252);
+ expression();
+ setState(2253);
+ match(RBRACK);
+ }
+ }
+ setState(2259);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayAccess_lf_primaryContext extends ParserRuleContext {
+ public PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary() {
+ return getRuleContext(PrimaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primaryContext.class,0);
+ }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public List primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary() {
+ return getRuleContexts(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class);
+ }
+ public PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary(int i) {
+ return getRuleContext(PrimaryNoNewArray_lf_primary_lf_arrayAccess_lf_primaryContext.class,i);
+ }
+ public ArrayAccess_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayAccess_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lf_primary(this);
+ }
+ }
+
+ public final ArrayAccess_lf_primaryContext arrayAccess_lf_primary() throws RecognitionException {
+ ArrayAccess_lf_primaryContext _localctx = new ArrayAccess_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 388, RULE_arrayAccess_lf_primary);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2260);
+ primaryNoNewArray_lf_primary_lfno_arrayAccess_lf_primary();
+ setState(2261);
+ match(LBRACK);
+ setState(2262);
+ expression();
+ setState(2263);
+ match(RBRACK);
+ }
+ setState(2272);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,246,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(2265);
+ primaryNoNewArray_lf_primary_lf_arrayAccess_lf_primary();
+ setState(2266);
+ match(LBRACK);
+ setState(2267);
+ expression();
+ setState(2268);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(2274);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,246,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayAccess_lfno_primaryContext extends ParserRuleContext {
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public List LBRACK() { return getTokens(Java8Parser.LBRACK); }
+ public TerminalNode LBRACK(int i) {
+ return getToken(Java8Parser.LBRACK, i);
+ }
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List RBRACK() { return getTokens(Java8Parser.RBRACK); }
+ public TerminalNode RBRACK(int i) {
+ return getToken(Java8Parser.RBRACK, i);
+ }
+ public PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary() {
+ return getRuleContext(PrimaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primaryContext.class,0);
+ }
+ public List primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary() {
+ return getRuleContexts(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class);
+ }
+ public PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary(int i) {
+ return getRuleContext(PrimaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primaryContext.class,i);
+ }
+ public ArrayAccess_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayAccess_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayAccess_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayAccess_lfno_primary(this);
+ }
+ }
+
+ public final ArrayAccess_lfno_primaryContext arrayAccess_lfno_primary() throws RecognitionException {
+ ArrayAccess_lfno_primaryContext _localctx = new ArrayAccess_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 390, RULE_arrayAccess_lfno_primary);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2285);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,247,_ctx) ) {
+ case 1:
+ {
+ setState(2275);
+ expressionName();
+ setState(2276);
+ match(LBRACK);
+ setState(2277);
+ expression();
+ setState(2278);
+ match(RBRACK);
+ }
+ break;
+ case 2:
+ {
+ setState(2280);
+ primaryNoNewArray_lfno_primary_lfno_arrayAccess_lfno_primary();
+ setState(2281);
+ match(LBRACK);
+ setState(2282);
+ expression();
+ setState(2283);
+ match(RBRACK);
+ }
+ break;
+ }
+ setState(2294);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,248,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(2287);
+ primaryNoNewArray_lfno_primary_lf_arrayAccess_lfno_primary();
+ setState(2288);
+ match(LBRACK);
+ setState(2289);
+ expression();
+ setState(2290);
+ match(RBRACK);
+ }
+ }
+ }
+ setState(2296);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,248,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodInvocationContext extends ParserRuleContext {
+ public MethodNameContext methodName() {
+ return getRuleContext(MethodNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public MethodInvocationContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodInvocation; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation(this);
+ }
+ }
+
+ public final MethodInvocationContext methodInvocation() throws RecognitionException {
+ MethodInvocationContext _localctx = new MethodInvocationContext(_ctx, getState());
+ enterRule(_localctx, 392, RULE_methodInvocation);
+ int _la;
+ try {
+ setState(2365);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,260,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2297);
+ methodName();
+ setState(2298);
+ match(LPAREN);
+ setState(2300);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2299);
+ argumentList();
+ }
+ }
+
+ setState(2302);
+ match(RPAREN);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2304);
+ typeName();
+ setState(2305);
+ match(DOT);
+ setState(2307);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2306);
+ typeArguments();
+ }
+ }
+
+ setState(2309);
+ match(Identifier);
+ setState(2310);
+ match(LPAREN);
+ setState(2312);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2311);
+ argumentList();
+ }
+ }
+
+ setState(2314);
+ match(RPAREN);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2316);
+ expressionName();
+ setState(2317);
+ match(DOT);
+ setState(2319);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2318);
+ typeArguments();
+ }
+ }
+
+ setState(2321);
+ match(Identifier);
+ setState(2322);
+ match(LPAREN);
+ setState(2324);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2323);
+ argumentList();
+ }
+ }
+
+ setState(2326);
+ match(RPAREN);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2328);
+ primary();
+ setState(2329);
+ match(DOT);
+ setState(2331);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2330);
+ typeArguments();
+ }
+ }
+
+ setState(2333);
+ match(Identifier);
+ setState(2334);
+ match(LPAREN);
+ setState(2336);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2335);
+ argumentList();
+ }
+ }
+
+ setState(2338);
+ match(RPAREN);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2340);
+ match(SUPER);
+ setState(2341);
+ match(DOT);
+ setState(2343);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2342);
+ typeArguments();
+ }
+ }
+
+ setState(2345);
+ match(Identifier);
+ setState(2346);
+ match(LPAREN);
+ setState(2348);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2347);
+ argumentList();
+ }
+ }
+
+ setState(2350);
+ match(RPAREN);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(2351);
+ typeName();
+ setState(2352);
+ match(DOT);
+ setState(2353);
+ match(SUPER);
+ setState(2354);
+ match(DOT);
+ setState(2356);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2355);
+ typeArguments();
+ }
+ }
+
+ setState(2358);
+ match(Identifier);
+ setState(2359);
+ match(LPAREN);
+ setState(2361);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2360);
+ argumentList();
+ }
+ }
+
+ setState(2363);
+ match(RPAREN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodInvocation_lf_primaryContext extends ParserRuleContext {
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public MethodInvocation_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodInvocation_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lf_primary(this);
+ }
+ }
+
+ public final MethodInvocation_lf_primaryContext methodInvocation_lf_primary() throws RecognitionException {
+ MethodInvocation_lf_primaryContext _localctx = new MethodInvocation_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 394, RULE_methodInvocation_lf_primary);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2367);
+ match(DOT);
+ setState(2369);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2368);
+ typeArguments();
+ }
+ }
+
+ setState(2371);
+ match(Identifier);
+ setState(2372);
+ match(LPAREN);
+ setState(2374);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2373);
+ argumentList();
+ }
+ }
+
+ setState(2376);
+ match(RPAREN);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodInvocation_lfno_primaryContext extends ParserRuleContext {
+ public MethodNameContext methodName() {
+ return getRuleContext(MethodNameContext.class,0);
+ }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public ArgumentListContext argumentList() {
+ return getRuleContext(ArgumentListContext.class,0);
+ }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public List DOT() { return getTokens(Java8Parser.DOT); }
+ public TerminalNode DOT(int i) {
+ return getToken(Java8Parser.DOT, i);
+ }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public MethodInvocation_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodInvocation_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodInvocation_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodInvocation_lfno_primary(this);
+ }
+ }
+
+ public final MethodInvocation_lfno_primaryContext methodInvocation_lfno_primary() throws RecognitionException {
+ MethodInvocation_lfno_primaryContext _localctx = new MethodInvocation_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 396, RULE_methodInvocation_lfno_primary);
+ int _la;
+ try {
+ setState(2434);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,272,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2378);
+ methodName();
+ setState(2379);
+ match(LPAREN);
+ setState(2381);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2380);
+ argumentList();
+ }
+ }
+
+ setState(2383);
+ match(RPAREN);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2385);
+ typeName();
+ setState(2386);
+ match(DOT);
+ setState(2388);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2387);
+ typeArguments();
+ }
+ }
+
+ setState(2390);
+ match(Identifier);
+ setState(2391);
+ match(LPAREN);
+ setState(2393);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2392);
+ argumentList();
+ }
+ }
+
+ setState(2395);
+ match(RPAREN);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2397);
+ expressionName();
+ setState(2398);
+ match(DOT);
+ setState(2400);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2399);
+ typeArguments();
+ }
+ }
+
+ setState(2402);
+ match(Identifier);
+ setState(2403);
+ match(LPAREN);
+ setState(2405);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2404);
+ argumentList();
+ }
+ }
+
+ setState(2407);
+ match(RPAREN);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2409);
+ match(SUPER);
+ setState(2410);
+ match(DOT);
+ setState(2412);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2411);
+ typeArguments();
+ }
+ }
+
+ setState(2414);
+ match(Identifier);
+ setState(2415);
+ match(LPAREN);
+ setState(2417);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2416);
+ argumentList();
+ }
+ }
+
+ setState(2419);
+ match(RPAREN);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2420);
+ typeName();
+ setState(2421);
+ match(DOT);
+ setState(2422);
+ match(SUPER);
+ setState(2423);
+ match(DOT);
+ setState(2425);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2424);
+ typeArguments();
+ }
+ }
+
+ setState(2427);
+ match(Identifier);
+ setState(2428);
+ match(LPAREN);
+ setState(2430);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 286270087177978152L) != 0) || ((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & 25769819139L) != 0)) {
+ {
+ setState(2429);
+ argumentList();
+ }
+ }
+
+ setState(2432);
+ match(RPAREN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArgumentListContext extends ParserRuleContext {
+ public List expression() {
+ return getRuleContexts(ExpressionContext.class);
+ }
+ public ExpressionContext expression(int i) {
+ return getRuleContext(ExpressionContext.class,i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public ArgumentListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_argumentList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArgumentList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArgumentList(this);
+ }
+ }
+
+ public final ArgumentListContext argumentList() throws RecognitionException {
+ ArgumentListContext _localctx = new ArgumentListContext(_ctx, getState());
+ enterRule(_localctx, 398, RULE_argumentList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2436);
+ expression();
+ setState(2441);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(2437);
+ match(COMMA);
+ setState(2438);
+ expression();
+ }
+ }
+ setState(2443);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodReferenceContext extends ParserRuleContext {
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public ArrayTypeContext arrayType() {
+ return getRuleContext(ArrayTypeContext.class,0);
+ }
+ public MethodReferenceContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodReference; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference(this);
+ }
+ }
+
+ public final MethodReferenceContext methodReference() throws RecognitionException {
+ MethodReferenceContext _localctx = new MethodReferenceContext(_ctx, getState());
+ enterRule(_localctx, 400, RULE_methodReference);
+ int _la;
+ try {
+ setState(2491);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,280,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2444);
+ expressionName();
+ setState(2445);
+ match(COLONCOLON);
+ setState(2447);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2446);
+ typeArguments();
+ }
+ }
+
+ setState(2449);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2451);
+ referenceType();
+ setState(2452);
+ match(COLONCOLON);
+ setState(2454);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2453);
+ typeArguments();
+ }
+ }
+
+ setState(2456);
+ match(Identifier);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2458);
+ primary();
+ setState(2459);
+ match(COLONCOLON);
+ setState(2461);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2460);
+ typeArguments();
+ }
+ }
+
+ setState(2463);
+ match(Identifier);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2465);
+ match(SUPER);
+ setState(2466);
+ match(COLONCOLON);
+ setState(2468);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2467);
+ typeArguments();
+ }
+ }
+
+ setState(2470);
+ match(Identifier);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2471);
+ typeName();
+ setState(2472);
+ match(DOT);
+ setState(2473);
+ match(SUPER);
+ setState(2474);
+ match(COLONCOLON);
+ setState(2476);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2475);
+ typeArguments();
+ }
+ }
+
+ setState(2478);
+ match(Identifier);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(2480);
+ classType();
+ setState(2481);
+ match(COLONCOLON);
+ setState(2483);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2482);
+ typeArguments();
+ }
+ }
+
+ setState(2485);
+ match(NEW);
+ }
+ break;
+ case 7:
+ enterOuterAlt(_localctx, 7);
+ {
+ setState(2487);
+ arrayType();
+ setState(2488);
+ match(COLONCOLON);
+ setState(2489);
+ match(NEW);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodReference_lf_primaryContext extends ParserRuleContext {
+ public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public MethodReference_lf_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodReference_lf_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lf_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lf_primary(this);
+ }
+ }
+
+ public final MethodReference_lf_primaryContext methodReference_lf_primary() throws RecognitionException {
+ MethodReference_lf_primaryContext _localctx = new MethodReference_lf_primaryContext(_ctx, getState());
+ enterRule(_localctx, 402, RULE_methodReference_lf_primary);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2493);
+ match(COLONCOLON);
+ setState(2495);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2494);
+ typeArguments();
+ }
+ }
+
+ setState(2497);
+ match(Identifier);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MethodReference_lfno_primaryContext extends ParserRuleContext {
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public TerminalNode COLONCOLON() { return getToken(Java8Parser.COLONCOLON, 0); }
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TypeArgumentsContext typeArguments() {
+ return getRuleContext(TypeArgumentsContext.class,0);
+ }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public TerminalNode SUPER() { return getToken(Java8Parser.SUPER, 0); }
+ public TypeNameContext typeName() {
+ return getRuleContext(TypeNameContext.class,0);
+ }
+ public TerminalNode DOT() { return getToken(Java8Parser.DOT, 0); }
+ public ClassTypeContext classType() {
+ return getRuleContext(ClassTypeContext.class,0);
+ }
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public ArrayTypeContext arrayType() {
+ return getRuleContext(ArrayTypeContext.class,0);
+ }
+ public MethodReference_lfno_primaryContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_methodReference_lfno_primary; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMethodReference_lfno_primary(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMethodReference_lfno_primary(this);
+ }
+ }
+
+ public final MethodReference_lfno_primaryContext methodReference_lfno_primary() throws RecognitionException {
+ MethodReference_lfno_primaryContext _localctx = new MethodReference_lfno_primaryContext(_ctx, getState());
+ enterRule(_localctx, 404, RULE_methodReference_lfno_primary);
+ int _la;
+ try {
+ setState(2539);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,287,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2499);
+ expressionName();
+ setState(2500);
+ match(COLONCOLON);
+ setState(2502);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2501);
+ typeArguments();
+ }
+ }
+
+ setState(2504);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2506);
+ referenceType();
+ setState(2507);
+ match(COLONCOLON);
+ setState(2509);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2508);
+ typeArguments();
+ }
+ }
+
+ setState(2511);
+ match(Identifier);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2513);
+ match(SUPER);
+ setState(2514);
+ match(COLONCOLON);
+ setState(2516);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2515);
+ typeArguments();
+ }
+ }
+
+ setState(2518);
+ match(Identifier);
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2519);
+ typeName();
+ setState(2520);
+ match(DOT);
+ setState(2521);
+ match(SUPER);
+ setState(2522);
+ match(COLONCOLON);
+ setState(2524);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2523);
+ typeArguments();
+ }
+ }
+
+ setState(2526);
+ match(Identifier);
+ }
+ break;
+ case 5:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2528);
+ classType();
+ setState(2529);
+ match(COLONCOLON);
+ setState(2531);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if (_la==LT) {
+ {
+ setState(2530);
+ typeArguments();
+ }
+ }
+
+ setState(2533);
+ match(NEW);
+ }
+ break;
+ case 6:
+ enterOuterAlt(_localctx, 6);
+ {
+ setState(2535);
+ arrayType();
+ setState(2536);
+ match(COLONCOLON);
+ setState(2537);
+ match(NEW);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ArrayCreationExpressionContext extends ParserRuleContext {
+ public TerminalNode NEW() { return getToken(Java8Parser.NEW, 0); }
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public DimExprsContext dimExprs() {
+ return getRuleContext(DimExprsContext.class,0);
+ }
+ public DimsContext dims() {
+ return getRuleContext(DimsContext.class,0);
+ }
+ public ClassOrInterfaceTypeContext classOrInterfaceType() {
+ return getRuleContext(ClassOrInterfaceTypeContext.class,0);
+ }
+ public ArrayInitializerContext arrayInitializer() {
+ return getRuleContext(ArrayInitializerContext.class,0);
+ }
+ public ArrayCreationExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_arrayCreationExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterArrayCreationExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitArrayCreationExpression(this);
+ }
+ }
+
+ public final ArrayCreationExpressionContext arrayCreationExpression() throws RecognitionException {
+ ArrayCreationExpressionContext _localctx = new ArrayCreationExpressionContext(_ctx, getState());
+ enterRule(_localctx, 406, RULE_arrayCreationExpression);
+ try {
+ setState(2563);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,290,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2541);
+ match(NEW);
+ setState(2542);
+ primitiveType();
+ setState(2543);
+ dimExprs();
+ setState(2545);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,288,_ctx) ) {
+ case 1:
+ {
+ setState(2544);
+ dims();
+ }
+ break;
+ }
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2547);
+ match(NEW);
+ setState(2548);
+ classOrInterfaceType();
+ setState(2549);
+ dimExprs();
+ setState(2551);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,289,_ctx) ) {
+ case 1:
+ {
+ setState(2550);
+ dims();
+ }
+ break;
+ }
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2553);
+ match(NEW);
+ setState(2554);
+ primitiveType();
+ setState(2555);
+ dims();
+ setState(2556);
+ arrayInitializer();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2558);
+ match(NEW);
+ setState(2559);
+ classOrInterfaceType();
+ setState(2560);
+ dims();
+ setState(2561);
+ arrayInitializer();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DimExprsContext extends ParserRuleContext {
+ public List dimExpr() {
+ return getRuleContexts(DimExprContext.class);
+ }
+ public DimExprContext dimExpr(int i) {
+ return getRuleContext(DimExprContext.class,i);
+ }
+ public DimExprsContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dimExprs; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExprs(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExprs(this);
+ }
+ }
+
+ public final DimExprsContext dimExprs() throws RecognitionException {
+ DimExprsContext _localctx = new DimExprsContext(_ctx, getState());
+ enterRule(_localctx, 408, RULE_dimExprs);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2565);
+ dimExpr();
+ setState(2569);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,291,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ {
+ setState(2566);
+ dimExpr();
+ }
+ }
+ }
+ setState(2571);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,291,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class DimExprContext extends ParserRuleContext {
+ public TerminalNode LBRACK() { return getToken(Java8Parser.LBRACK, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode RBRACK() { return getToken(Java8Parser.RBRACK, 0); }
+ public List annotation() {
+ return getRuleContexts(AnnotationContext.class);
+ }
+ public AnnotationContext annotation(int i) {
+ return getRuleContext(AnnotationContext.class,i);
+ }
+ public DimExprContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_dimExpr; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterDimExpr(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitDimExpr(this);
+ }
+ }
+
+ public final DimExprContext dimExpr() throws RecognitionException {
+ DimExprContext _localctx = new DimExprContext(_ctx, getState());
+ enterRule(_localctx, 410, RULE_dimExpr);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2575);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==AT) {
+ {
+ {
+ setState(2572);
+ annotation();
+ }
+ }
+ setState(2577);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2578);
+ match(LBRACK);
+ setState(2579);
+ expression();
+ setState(2580);
+ match(RBRACK);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConstantExpressionContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public ConstantExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_constantExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConstantExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConstantExpression(this);
+ }
+ }
+
+ public final ConstantExpressionContext constantExpression() throws RecognitionException {
+ ConstantExpressionContext _localctx = new ConstantExpressionContext(_ctx, getState());
+ enterRule(_localctx, 412, RULE_constantExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2582);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExpressionContext extends ParserRuleContext {
+ public LambdaExpressionContext lambdaExpression() {
+ return getRuleContext(LambdaExpressionContext.class,0);
+ }
+ public AssignmentExpressionContext assignmentExpression() {
+ return getRuleContext(AssignmentExpressionContext.class,0);
+ }
+ public ExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_expression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExpression(this);
+ }
+ }
+
+ public final ExpressionContext expression() throws RecognitionException {
+ ExpressionContext _localctx = new ExpressionContext(_ctx, getState());
+ enterRule(_localctx, 414, RULE_expression);
+ try {
+ setState(2586);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,293,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2584);
+ lambdaExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2585);
+ assignmentExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LambdaExpressionContext extends ParserRuleContext {
+ public LambdaParametersContext lambdaParameters() {
+ return getRuleContext(LambdaParametersContext.class,0);
+ }
+ public TerminalNode ARROW() { return getToken(Java8Parser.ARROW, 0); }
+ public LambdaBodyContext lambdaBody() {
+ return getRuleContext(LambdaBodyContext.class,0);
+ }
+ public LambdaExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaExpression(this);
+ }
+ }
+
+ public final LambdaExpressionContext lambdaExpression() throws RecognitionException {
+ LambdaExpressionContext _localctx = new LambdaExpressionContext(_ctx, getState());
+ enterRule(_localctx, 416, RULE_lambdaExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2588);
+ lambdaParameters();
+ setState(2589);
+ match(ARROW);
+ setState(2590);
+ lambdaBody();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LambdaParametersContext extends ParserRuleContext {
+ public TerminalNode Identifier() { return getToken(Java8Parser.Identifier, 0); }
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public FormalParameterListContext formalParameterList() {
+ return getRuleContext(FormalParameterListContext.class,0);
+ }
+ public InferredFormalParameterListContext inferredFormalParameterList() {
+ return getRuleContext(InferredFormalParameterListContext.class,0);
+ }
+ public LambdaParametersContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaParameters; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaParameters(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaParameters(this);
+ }
+ }
+
+ public final LambdaParametersContext lambdaParameters() throws RecognitionException {
+ LambdaParametersContext _localctx = new LambdaParametersContext(_ctx, getState());
+ enterRule(_localctx, 418, RULE_lambdaParameters);
+ int _la;
+ try {
+ setState(2602);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,295,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2592);
+ match(Identifier);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2593);
+ match(LPAREN);
+ setState(2595);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ if ((((_la) & ~0x3f) == 0 && ((1L << _la) & 138111369512L) != 0) || _la==Identifier || _la==AT) {
+ {
+ setState(2594);
+ formalParameterList();
+ }
+ }
+
+ setState(2597);
+ match(RPAREN);
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2598);
+ match(LPAREN);
+ setState(2599);
+ inferredFormalParameterList();
+ setState(2600);
+ match(RPAREN);
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InferredFormalParameterListContext extends ParserRuleContext {
+ public List Identifier() { return getTokens(Java8Parser.Identifier); }
+ public TerminalNode Identifier(int i) {
+ return getToken(Java8Parser.Identifier, i);
+ }
+ public List COMMA() { return getTokens(Java8Parser.COMMA); }
+ public TerminalNode COMMA(int i) {
+ return getToken(Java8Parser.COMMA, i);
+ }
+ public InferredFormalParameterListContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inferredFormalParameterList; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInferredFormalParameterList(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInferredFormalParameterList(this);
+ }
+ }
+
+ public final InferredFormalParameterListContext inferredFormalParameterList() throws RecognitionException {
+ InferredFormalParameterListContext _localctx = new InferredFormalParameterListContext(_ctx, getState());
+ enterRule(_localctx, 420, RULE_inferredFormalParameterList);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2604);
+ match(Identifier);
+ setState(2609);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==COMMA) {
+ {
+ {
+ setState(2605);
+ match(COMMA);
+ setState(2606);
+ match(Identifier);
+ }
+ }
+ setState(2611);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LambdaBodyContext extends ParserRuleContext {
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public BlockContext block() {
+ return getRuleContext(BlockContext.class,0);
+ }
+ public LambdaBodyContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_lambdaBody; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLambdaBody(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLambdaBody(this);
+ }
+ }
+
+ public final LambdaBodyContext lambdaBody() throws RecognitionException {
+ LambdaBodyContext _localctx = new LambdaBodyContext(_ctx, getState());
+ enterRule(_localctx, 422, RULE_lambdaBody);
+ try {
+ setState(2614);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case IntegerLiteral:
+ case FloatingPointLiteral:
+ case BooleanLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case NullLiteral:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case INC:
+ case DEC:
+ case ADD:
+ case SUB:
+ case Identifier:
+ case AT:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2612);
+ expression();
+ }
+ break;
+ case LBRACE:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2613);
+ block();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssignmentExpressionContext extends ParserRuleContext {
+ public ConditionalExpressionContext conditionalExpression() {
+ return getRuleContext(ConditionalExpressionContext.class,0);
+ }
+ public AssignmentContext assignment() {
+ return getRuleContext(AssignmentContext.class,0);
+ }
+ public AssignmentExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assignmentExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentExpression(this);
+ }
+ }
+
+ public final AssignmentExpressionContext assignmentExpression() throws RecognitionException {
+ AssignmentExpressionContext _localctx = new AssignmentExpressionContext(_ctx, getState());
+ enterRule(_localctx, 424, RULE_assignmentExpression);
+ try {
+ setState(2618);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,298,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2616);
+ conditionalExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2617);
+ assignment();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssignmentContext extends ParserRuleContext {
+ public LeftHandSideContext leftHandSide() {
+ return getRuleContext(LeftHandSideContext.class,0);
+ }
+ public AssignmentOperatorContext assignmentOperator() {
+ return getRuleContext(AssignmentOperatorContext.class,0);
+ }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public AssignmentContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assignment; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignment(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignment(this);
+ }
+ }
+
+ public final AssignmentContext assignment() throws RecognitionException {
+ AssignmentContext _localctx = new AssignmentContext(_ctx, getState());
+ enterRule(_localctx, 426, RULE_assignment);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2620);
+ leftHandSide();
+ setState(2621);
+ assignmentOperator();
+ setState(2622);
+ expression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class LeftHandSideContext extends ParserRuleContext {
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public FieldAccessContext fieldAccess() {
+ return getRuleContext(FieldAccessContext.class,0);
+ }
+ public ArrayAccessContext arrayAccess() {
+ return getRuleContext(ArrayAccessContext.class,0);
+ }
+ public LeftHandSideContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_leftHandSide; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterLeftHandSide(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitLeftHandSide(this);
+ }
+ }
+
+ public final LeftHandSideContext leftHandSide() throws RecognitionException {
+ LeftHandSideContext _localctx = new LeftHandSideContext(_ctx, getState());
+ enterRule(_localctx, 428, RULE_leftHandSide);
+ try {
+ setState(2627);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,299,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2624);
+ expressionName();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2625);
+ fieldAccess();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2626);
+ arrayAccess();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AssignmentOperatorContext extends ParserRuleContext {
+ public TerminalNode ASSIGN() { return getToken(Java8Parser.ASSIGN, 0); }
+ public TerminalNode MUL_ASSIGN() { return getToken(Java8Parser.MUL_ASSIGN, 0); }
+ public TerminalNode DIV_ASSIGN() { return getToken(Java8Parser.DIV_ASSIGN, 0); }
+ public TerminalNode MOD_ASSIGN() { return getToken(Java8Parser.MOD_ASSIGN, 0); }
+ public TerminalNode ADD_ASSIGN() { return getToken(Java8Parser.ADD_ASSIGN, 0); }
+ public TerminalNode SUB_ASSIGN() { return getToken(Java8Parser.SUB_ASSIGN, 0); }
+ public TerminalNode LSHIFT_ASSIGN() { return getToken(Java8Parser.LSHIFT_ASSIGN, 0); }
+ public TerminalNode RSHIFT_ASSIGN() { return getToken(Java8Parser.RSHIFT_ASSIGN, 0); }
+ public TerminalNode URSHIFT_ASSIGN() { return getToken(Java8Parser.URSHIFT_ASSIGN, 0); }
+ public TerminalNode AND_ASSIGN() { return getToken(Java8Parser.AND_ASSIGN, 0); }
+ public TerminalNode XOR_ASSIGN() { return getToken(Java8Parser.XOR_ASSIGN, 0); }
+ public TerminalNode OR_ASSIGN() { return getToken(Java8Parser.OR_ASSIGN, 0); }
+ public AssignmentOperatorContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_assignmentOperator; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAssignmentOperator(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAssignmentOperator(this);
+ }
+ }
+
+ public final AssignmentOperatorContext assignmentOperator() throws RecognitionException {
+ AssignmentOperatorContext _localctx = new AssignmentOperatorContext(_ctx, getState());
+ enterRule(_localctx, 430, RULE_assignmentOperator);
+ int _la;
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2629);
+ _la = _input.LA(1);
+ if ( !(((((_la - 66)) & ~0x3f) == 0 && ((1L << (_la - 66)) & 68685922305L) != 0)) ) {
+ _errHandler.recoverInline(this);
+ }
+ else {
+ if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+ _errHandler.reportMatch(this);
+ consume();
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConditionalExpressionContext extends ParserRuleContext {
+ public ConditionalOrExpressionContext conditionalOrExpression() {
+ return getRuleContext(ConditionalOrExpressionContext.class,0);
+ }
+ public TerminalNode QUESTION() { return getToken(Java8Parser.QUESTION, 0); }
+ public ExpressionContext expression() {
+ return getRuleContext(ExpressionContext.class,0);
+ }
+ public TerminalNode COLON() { return getToken(Java8Parser.COLON, 0); }
+ public ConditionalExpressionContext conditionalExpression() {
+ return getRuleContext(ConditionalExpressionContext.class,0);
+ }
+ public ConditionalExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_conditionalExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalExpression(this);
+ }
+ }
+
+ public final ConditionalExpressionContext conditionalExpression() throws RecognitionException {
+ ConditionalExpressionContext _localctx = new ConditionalExpressionContext(_ctx, getState());
+ enterRule(_localctx, 432, RULE_conditionalExpression);
+ try {
+ setState(2638);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,300,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2631);
+ conditionalOrExpression(0);
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2632);
+ conditionalOrExpression(0);
+ setState(2633);
+ match(QUESTION);
+ setState(2634);
+ expression();
+ setState(2635);
+ match(COLON);
+ setState(2636);
+ conditionalExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConditionalOrExpressionContext extends ParserRuleContext {
+ public ConditionalAndExpressionContext conditionalAndExpression() {
+ return getRuleContext(ConditionalAndExpressionContext.class,0);
+ }
+ public ConditionalOrExpressionContext conditionalOrExpression() {
+ return getRuleContext(ConditionalOrExpressionContext.class,0);
+ }
+ public TerminalNode OR() { return getToken(Java8Parser.OR, 0); }
+ public ConditionalOrExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_conditionalOrExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalOrExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalOrExpression(this);
+ }
+ }
+
+ public final ConditionalOrExpressionContext conditionalOrExpression() throws RecognitionException {
+ return conditionalOrExpression(0);
+ }
+
+ private ConditionalOrExpressionContext conditionalOrExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ConditionalOrExpressionContext _localctx = new ConditionalOrExpressionContext(_ctx, _parentState);
+ ConditionalOrExpressionContext _prevctx = _localctx;
+ int _startState = 434;
+ enterRecursionRule(_localctx, 434, RULE_conditionalOrExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2641);
+ conditionalAndExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2648);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,301,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new ConditionalOrExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_conditionalOrExpression);
+ setState(2643);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2644);
+ match(OR);
+ setState(2645);
+ conditionalAndExpression(0);
+ }
+ }
+ }
+ setState(2650);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,301,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ConditionalAndExpressionContext extends ParserRuleContext {
+ public InclusiveOrExpressionContext inclusiveOrExpression() {
+ return getRuleContext(InclusiveOrExpressionContext.class,0);
+ }
+ public ConditionalAndExpressionContext conditionalAndExpression() {
+ return getRuleContext(ConditionalAndExpressionContext.class,0);
+ }
+ public TerminalNode AND() { return getToken(Java8Parser.AND, 0); }
+ public ConditionalAndExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_conditionalAndExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterConditionalAndExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitConditionalAndExpression(this);
+ }
+ }
+
+ public final ConditionalAndExpressionContext conditionalAndExpression() throws RecognitionException {
+ return conditionalAndExpression(0);
+ }
+
+ private ConditionalAndExpressionContext conditionalAndExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ConditionalAndExpressionContext _localctx = new ConditionalAndExpressionContext(_ctx, _parentState);
+ ConditionalAndExpressionContext _prevctx = _localctx;
+ int _startState = 436;
+ enterRecursionRule(_localctx, 436, RULE_conditionalAndExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2652);
+ inclusiveOrExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2659);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,302,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new ConditionalAndExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_conditionalAndExpression);
+ setState(2654);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2655);
+ match(AND);
+ setState(2656);
+ inclusiveOrExpression(0);
+ }
+ }
+ }
+ setState(2661);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,302,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class InclusiveOrExpressionContext extends ParserRuleContext {
+ public ExclusiveOrExpressionContext exclusiveOrExpression() {
+ return getRuleContext(ExclusiveOrExpressionContext.class,0);
+ }
+ public InclusiveOrExpressionContext inclusiveOrExpression() {
+ return getRuleContext(InclusiveOrExpressionContext.class,0);
+ }
+ public TerminalNode BITOR() { return getToken(Java8Parser.BITOR, 0); }
+ public InclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_inclusiveOrExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterInclusiveOrExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitInclusiveOrExpression(this);
+ }
+ }
+
+ public final InclusiveOrExpressionContext inclusiveOrExpression() throws RecognitionException {
+ return inclusiveOrExpression(0);
+ }
+
+ private InclusiveOrExpressionContext inclusiveOrExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ InclusiveOrExpressionContext _localctx = new InclusiveOrExpressionContext(_ctx, _parentState);
+ InclusiveOrExpressionContext _prevctx = _localctx;
+ int _startState = 438;
+ enterRecursionRule(_localctx, 438, RULE_inclusiveOrExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2663);
+ exclusiveOrExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2670);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,303,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new InclusiveOrExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_inclusiveOrExpression);
+ setState(2665);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2666);
+ match(BITOR);
+ setState(2667);
+ exclusiveOrExpression(0);
+ }
+ }
+ }
+ setState(2672);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,303,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ExclusiveOrExpressionContext extends ParserRuleContext {
+ public AndExpressionContext andExpression() {
+ return getRuleContext(AndExpressionContext.class,0);
+ }
+ public ExclusiveOrExpressionContext exclusiveOrExpression() {
+ return getRuleContext(ExclusiveOrExpressionContext.class,0);
+ }
+ public TerminalNode CARET() { return getToken(Java8Parser.CARET, 0); }
+ public ExclusiveOrExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_exclusiveOrExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterExclusiveOrExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitExclusiveOrExpression(this);
+ }
+ }
+
+ public final ExclusiveOrExpressionContext exclusiveOrExpression() throws RecognitionException {
+ return exclusiveOrExpression(0);
+ }
+
+ private ExclusiveOrExpressionContext exclusiveOrExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ExclusiveOrExpressionContext _localctx = new ExclusiveOrExpressionContext(_ctx, _parentState);
+ ExclusiveOrExpressionContext _prevctx = _localctx;
+ int _startState = 440;
+ enterRecursionRule(_localctx, 440, RULE_exclusiveOrExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2674);
+ andExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2681);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,304,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new ExclusiveOrExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_exclusiveOrExpression);
+ setState(2676);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2677);
+ match(CARET);
+ setState(2678);
+ andExpression(0);
+ }
+ }
+ }
+ setState(2683);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,304,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AndExpressionContext extends ParserRuleContext {
+ public EqualityExpressionContext equalityExpression() {
+ return getRuleContext(EqualityExpressionContext.class,0);
+ }
+ public AndExpressionContext andExpression() {
+ return getRuleContext(AndExpressionContext.class,0);
+ }
+ public TerminalNode BITAND() { return getToken(Java8Parser.BITAND, 0); }
+ public AndExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_andExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAndExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAndExpression(this);
+ }
+ }
+
+ public final AndExpressionContext andExpression() throws RecognitionException {
+ return andExpression(0);
+ }
+
+ private AndExpressionContext andExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ AndExpressionContext _localctx = new AndExpressionContext(_ctx, _parentState);
+ AndExpressionContext _prevctx = _localctx;
+ int _startState = 442;
+ enterRecursionRule(_localctx, 442, RULE_andExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2685);
+ equalityExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2692);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,305,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ {
+ _localctx = new AndExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_andExpression);
+ setState(2687);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2688);
+ match(BITAND);
+ setState(2689);
+ equalityExpression(0);
+ }
+ }
+ }
+ setState(2694);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,305,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class EqualityExpressionContext extends ParserRuleContext {
+ public RelationalExpressionContext relationalExpression() {
+ return getRuleContext(RelationalExpressionContext.class,0);
+ }
+ public EqualityExpressionContext equalityExpression() {
+ return getRuleContext(EqualityExpressionContext.class,0);
+ }
+ public TerminalNode EQUAL() { return getToken(Java8Parser.EQUAL, 0); }
+ public TerminalNode NOTEQUAL() { return getToken(Java8Parser.NOTEQUAL, 0); }
+ public EqualityExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_equalityExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterEqualityExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitEqualityExpression(this);
+ }
+ }
+
+ public final EqualityExpressionContext equalityExpression() throws RecognitionException {
+ return equalityExpression(0);
+ }
+
+ private EqualityExpressionContext equalityExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ EqualityExpressionContext _localctx = new EqualityExpressionContext(_ctx, _parentState);
+ EqualityExpressionContext _prevctx = _localctx;
+ int _startState = 444;
+ enterRecursionRule(_localctx, 444, RULE_equalityExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2696);
+ relationalExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2706);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,307,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(2704);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,306,_ctx) ) {
+ case 1:
+ {
+ _localctx = new EqualityExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression);
+ setState(2698);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(2699);
+ match(EQUAL);
+ setState(2700);
+ relationalExpression(0);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new EqualityExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_equalityExpression);
+ setState(2701);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2702);
+ match(NOTEQUAL);
+ setState(2703);
+ relationalExpression(0);
+ }
+ break;
+ }
+ }
+ }
+ setState(2708);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,307,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class RelationalExpressionContext extends ParserRuleContext {
+ public ShiftExpressionContext shiftExpression() {
+ return getRuleContext(ShiftExpressionContext.class,0);
+ }
+ public RelationalExpressionContext relationalExpression() {
+ return getRuleContext(RelationalExpressionContext.class,0);
+ }
+ public TerminalNode LT() { return getToken(Java8Parser.LT, 0); }
+ public TerminalNode GT() { return getToken(Java8Parser.GT, 0); }
+ public TerminalNode LE() { return getToken(Java8Parser.LE, 0); }
+ public TerminalNode GE() { return getToken(Java8Parser.GE, 0); }
+ public TerminalNode INSTANCEOF() { return getToken(Java8Parser.INSTANCEOF, 0); }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public RelationalExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_relationalExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterRelationalExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitRelationalExpression(this);
+ }
+ }
+
+ public final RelationalExpressionContext relationalExpression() throws RecognitionException {
+ return relationalExpression(0);
+ }
+
+ private RelationalExpressionContext relationalExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ RelationalExpressionContext _localctx = new RelationalExpressionContext(_ctx, _parentState);
+ RelationalExpressionContext _prevctx = _localctx;
+ int _startState = 446;
+ enterRecursionRule(_localctx, 446, RULE_relationalExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2710);
+ shiftExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2729);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,309,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(2727);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,308,_ctx) ) {
+ case 1:
+ {
+ _localctx = new RelationalExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression);
+ setState(2712);
+ if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)");
+ setState(2713);
+ match(LT);
+ setState(2714);
+ shiftExpression(0);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new RelationalExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression);
+ setState(2715);
+ if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)");
+ setState(2716);
+ match(GT);
+ setState(2717);
+ shiftExpression(0);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new RelationalExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression);
+ setState(2718);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(2719);
+ match(LE);
+ setState(2720);
+ shiftExpression(0);
+ }
+ break;
+ case 4:
+ {
+ _localctx = new RelationalExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression);
+ setState(2721);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(2722);
+ match(GE);
+ setState(2723);
+ shiftExpression(0);
+ }
+ break;
+ case 5:
+ {
+ _localctx = new RelationalExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_relationalExpression);
+ setState(2724);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2725);
+ match(INSTANCEOF);
+ setState(2726);
+ referenceType();
+ }
+ break;
+ }
+ }
+ }
+ setState(2731);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,309,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class ShiftExpressionContext extends ParserRuleContext {
+ public AdditiveExpressionContext additiveExpression() {
+ return getRuleContext(AdditiveExpressionContext.class,0);
+ }
+ public ShiftExpressionContext shiftExpression() {
+ return getRuleContext(ShiftExpressionContext.class,0);
+ }
+ public List LT() { return getTokens(Java8Parser.LT); }
+ public TerminalNode LT(int i) {
+ return getToken(Java8Parser.LT, i);
+ }
+ public List GT() { return getTokens(Java8Parser.GT); }
+ public TerminalNode GT(int i) {
+ return getToken(Java8Parser.GT, i);
+ }
+ public ShiftExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_shiftExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterShiftExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitShiftExpression(this);
+ }
+ }
+
+ public final ShiftExpressionContext shiftExpression() throws RecognitionException {
+ return shiftExpression(0);
+ }
+
+ private ShiftExpressionContext shiftExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ ShiftExpressionContext _localctx = new ShiftExpressionContext(_ctx, _parentState);
+ ShiftExpressionContext _prevctx = _localctx;
+ int _startState = 448;
+ enterRecursionRule(_localctx, 448, RULE_shiftExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2733);
+ additiveExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2750);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,311,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(2748);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,310,_ctx) ) {
+ case 1:
+ {
+ _localctx = new ShiftExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression);
+ setState(2735);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(2736);
+ match(LT);
+ setState(2737);
+ match(LT);
+ setState(2738);
+ additiveExpression(0);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new ShiftExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression);
+ setState(2739);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(2740);
+ match(GT);
+ setState(2741);
+ match(GT);
+ setState(2742);
+ additiveExpression(0);
+ }
+ break;
+ case 3:
+ {
+ _localctx = new ShiftExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_shiftExpression);
+ setState(2743);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2744);
+ match(GT);
+ setState(2745);
+ match(GT);
+ setState(2746);
+ match(GT);
+ setState(2747);
+ additiveExpression(0);
+ }
+ break;
+ }
+ }
+ }
+ setState(2752);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,311,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class AdditiveExpressionContext extends ParserRuleContext {
+ public MultiplicativeExpressionContext multiplicativeExpression() {
+ return getRuleContext(MultiplicativeExpressionContext.class,0);
+ }
+ public AdditiveExpressionContext additiveExpression() {
+ return getRuleContext(AdditiveExpressionContext.class,0);
+ }
+ public TerminalNode ADD() { return getToken(Java8Parser.ADD, 0); }
+ public TerminalNode SUB() { return getToken(Java8Parser.SUB, 0); }
+ public AdditiveExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_additiveExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterAdditiveExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitAdditiveExpression(this);
+ }
+ }
+
+ public final AdditiveExpressionContext additiveExpression() throws RecognitionException {
+ return additiveExpression(0);
+ }
+
+ private AdditiveExpressionContext additiveExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ AdditiveExpressionContext _localctx = new AdditiveExpressionContext(_ctx, _parentState);
+ AdditiveExpressionContext _prevctx = _localctx;
+ int _startState = 450;
+ enterRecursionRule(_localctx, 450, RULE_additiveExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2754);
+ multiplicativeExpression(0);
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2764);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,313,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(2762);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,312,_ctx) ) {
+ case 1:
+ {
+ _localctx = new AdditiveExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression);
+ setState(2756);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(2757);
+ match(ADD);
+ setState(2758);
+ multiplicativeExpression(0);
+ }
+ break;
+ case 2:
+ {
+ _localctx = new AdditiveExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_additiveExpression);
+ setState(2759);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2760);
+ match(SUB);
+ setState(2761);
+ multiplicativeExpression(0);
+ }
+ break;
+ }
+ }
+ }
+ setState(2766);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,313,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class MultiplicativeExpressionContext extends ParserRuleContext {
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public MultiplicativeExpressionContext multiplicativeExpression() {
+ return getRuleContext(MultiplicativeExpressionContext.class,0);
+ }
+ public TerminalNode MUL() { return getToken(Java8Parser.MUL, 0); }
+ public TerminalNode DIV() { return getToken(Java8Parser.DIV, 0); }
+ public TerminalNode MOD() { return getToken(Java8Parser.MOD, 0); }
+ public MultiplicativeExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_multiplicativeExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterMultiplicativeExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitMultiplicativeExpression(this);
+ }
+ }
+
+ public final MultiplicativeExpressionContext multiplicativeExpression() throws RecognitionException {
+ return multiplicativeExpression(0);
+ }
+
+ private MultiplicativeExpressionContext multiplicativeExpression(int _p) throws RecognitionException {
+ ParserRuleContext _parentctx = _ctx;
+ int _parentState = getState();
+ MultiplicativeExpressionContext _localctx = new MultiplicativeExpressionContext(_ctx, _parentState);
+ MultiplicativeExpressionContext _prevctx = _localctx;
+ int _startState = 452;
+ enterRecursionRule(_localctx, 452, RULE_multiplicativeExpression, _p);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ {
+ setState(2768);
+ unaryExpression();
+ }
+ _ctx.stop = _input.LT(-1);
+ setState(2781);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,315,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ if ( _parseListeners!=null ) triggerExitRuleEvent();
+ _prevctx = _localctx;
+ {
+ setState(2779);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,314,_ctx) ) {
+ case 1:
+ {
+ _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression);
+ setState(2770);
+ if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)");
+ setState(2771);
+ match(MUL);
+ setState(2772);
+ unaryExpression();
+ }
+ break;
+ case 2:
+ {
+ _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression);
+ setState(2773);
+ if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
+ setState(2774);
+ match(DIV);
+ setState(2775);
+ unaryExpression();
+ }
+ break;
+ case 3:
+ {
+ _localctx = new MultiplicativeExpressionContext(_parentctx, _parentState);
+ pushNewRecursionContext(_localctx, _startState, RULE_multiplicativeExpression);
+ setState(2776);
+ if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
+ setState(2777);
+ match(MOD);
+ setState(2778);
+ unaryExpression();
+ }
+ break;
+ }
+ }
+ }
+ setState(2783);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,315,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ unrollRecursionContexts(_parentctx);
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnaryExpressionContext extends ParserRuleContext {
+ public PreIncrementExpressionContext preIncrementExpression() {
+ return getRuleContext(PreIncrementExpressionContext.class,0);
+ }
+ public PreDecrementExpressionContext preDecrementExpression() {
+ return getRuleContext(PreDecrementExpressionContext.class,0);
+ }
+ public TerminalNode ADD() { return getToken(Java8Parser.ADD, 0); }
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public TerminalNode SUB() { return getToken(Java8Parser.SUB, 0); }
+ public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() {
+ return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0);
+ }
+ public UnaryExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unaryExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpression(this);
+ }
+ }
+
+ public final UnaryExpressionContext unaryExpression() throws RecognitionException {
+ UnaryExpressionContext _localctx = new UnaryExpressionContext(_ctx, getState());
+ enterRule(_localctx, 454, RULE_unaryExpression);
+ try {
+ setState(2791);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case INC:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2784);
+ preIncrementExpression();
+ }
+ break;
+ case DEC:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2785);
+ preDecrementExpression();
+ }
+ break;
+ case ADD:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2786);
+ match(ADD);
+ setState(2787);
+ unaryExpression();
+ }
+ break;
+ case SUB:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2788);
+ match(SUB);
+ setState(2789);
+ unaryExpression();
+ }
+ break;
+ case BOOLEAN:
+ case BYTE:
+ case CHAR:
+ case DOUBLE:
+ case FLOAT:
+ case INT:
+ case LONG:
+ case NEW:
+ case SHORT:
+ case SUPER:
+ case THIS:
+ case VOID:
+ case IntegerLiteral:
+ case FloatingPointLiteral:
+ case BooleanLiteral:
+ case CharacterLiteral:
+ case StringLiteral:
+ case NullLiteral:
+ case LPAREN:
+ case BANG:
+ case TILDE:
+ case Identifier:
+ case AT:
+ enterOuterAlt(_localctx, 5);
+ {
+ setState(2790);
+ unaryExpressionNotPlusMinus();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PreIncrementExpressionContext extends ParserRuleContext {
+ public TerminalNode INC() { return getToken(Java8Parser.INC, 0); }
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public PreIncrementExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_preIncrementExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreIncrementExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreIncrementExpression(this);
+ }
+ }
+
+ public final PreIncrementExpressionContext preIncrementExpression() throws RecognitionException {
+ PreIncrementExpressionContext _localctx = new PreIncrementExpressionContext(_ctx, getState());
+ enterRule(_localctx, 456, RULE_preIncrementExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2793);
+ match(INC);
+ setState(2794);
+ unaryExpression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PreDecrementExpressionContext extends ParserRuleContext {
+ public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); }
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public PreDecrementExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_preDecrementExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPreDecrementExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPreDecrementExpression(this);
+ }
+ }
+
+ public final PreDecrementExpressionContext preDecrementExpression() throws RecognitionException {
+ PreDecrementExpressionContext _localctx = new PreDecrementExpressionContext(_ctx, getState());
+ enterRule(_localctx, 458, RULE_preDecrementExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2796);
+ match(DEC);
+ setState(2797);
+ unaryExpression();
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class UnaryExpressionNotPlusMinusContext extends ParserRuleContext {
+ public PostfixExpressionContext postfixExpression() {
+ return getRuleContext(PostfixExpressionContext.class,0);
+ }
+ public TerminalNode TILDE() { return getToken(Java8Parser.TILDE, 0); }
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public TerminalNode BANG() { return getToken(Java8Parser.BANG, 0); }
+ public CastExpressionContext castExpression() {
+ return getRuleContext(CastExpressionContext.class,0);
+ }
+ public UnaryExpressionNotPlusMinusContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_unaryExpressionNotPlusMinus; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterUnaryExpressionNotPlusMinus(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitUnaryExpressionNotPlusMinus(this);
+ }
+ }
+
+ public final UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() throws RecognitionException {
+ UnaryExpressionNotPlusMinusContext _localctx = new UnaryExpressionNotPlusMinusContext(_ctx, getState());
+ enterRule(_localctx, 460, RULE_unaryExpressionNotPlusMinus);
+ try {
+ setState(2805);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,317,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2799);
+ postfixExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2800);
+ match(TILDE);
+ setState(2801);
+ unaryExpression();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2802);
+ match(BANG);
+ setState(2803);
+ unaryExpression();
+ }
+ break;
+ case 4:
+ enterOuterAlt(_localctx, 4);
+ {
+ setState(2804);
+ castExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PostfixExpressionContext extends ParserRuleContext {
+ public PrimaryContext primary() {
+ return getRuleContext(PrimaryContext.class,0);
+ }
+ public ExpressionNameContext expressionName() {
+ return getRuleContext(ExpressionNameContext.class,0);
+ }
+ public List postIncrementExpression_lf_postfixExpression() {
+ return getRuleContexts(PostIncrementExpression_lf_postfixExpressionContext.class);
+ }
+ public PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression(int i) {
+ return getRuleContext(PostIncrementExpression_lf_postfixExpressionContext.class,i);
+ }
+ public List postDecrementExpression_lf_postfixExpression() {
+ return getRuleContexts(PostDecrementExpression_lf_postfixExpressionContext.class);
+ }
+ public PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression(int i) {
+ return getRuleContext(PostDecrementExpression_lf_postfixExpressionContext.class,i);
+ }
+ public PostfixExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_postfixExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostfixExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostfixExpression(this);
+ }
+ }
+
+ public final PostfixExpressionContext postfixExpression() throws RecognitionException {
+ PostfixExpressionContext _localctx = new PostfixExpressionContext(_ctx, getState());
+ enterRule(_localctx, 462, RULE_postfixExpression);
+ try {
+ int _alt;
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2809);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,318,_ctx) ) {
+ case 1:
+ {
+ setState(2807);
+ primary();
+ }
+ break;
+ case 2:
+ {
+ setState(2808);
+ expressionName();
+ }
+ break;
+ }
+ setState(2815);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,320,_ctx);
+ while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
+ if ( _alt==1 ) {
+ {
+ setState(2813);
+ _errHandler.sync(this);
+ switch (_input.LA(1)) {
+ case INC:
+ {
+ setState(2811);
+ postIncrementExpression_lf_postfixExpression();
+ }
+ break;
+ case DEC:
+ {
+ setState(2812);
+ postDecrementExpression_lf_postfixExpression();
+ }
+ break;
+ default:
+ throw new NoViableAltException(this);
+ }
+ }
+ }
+ setState(2817);
+ _errHandler.sync(this);
+ _alt = getInterpreter().adaptivePredict(_input,320,_ctx);
+ }
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PostIncrementExpressionContext extends ParserRuleContext {
+ public PostfixExpressionContext postfixExpression() {
+ return getRuleContext(PostfixExpressionContext.class,0);
+ }
+ public TerminalNode INC() { return getToken(Java8Parser.INC, 0); }
+ public PostIncrementExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_postIncrementExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression(this);
+ }
+ }
+
+ public final PostIncrementExpressionContext postIncrementExpression() throws RecognitionException {
+ PostIncrementExpressionContext _localctx = new PostIncrementExpressionContext(_ctx, getState());
+ enterRule(_localctx, 464, RULE_postIncrementExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2818);
+ postfixExpression();
+ setState(2819);
+ match(INC);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PostIncrementExpression_lf_postfixExpressionContext extends ParserRuleContext {
+ public TerminalNode INC() { return getToken(Java8Parser.INC, 0); }
+ public PostIncrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_postIncrementExpression_lf_postfixExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostIncrementExpression_lf_postfixExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostIncrementExpression_lf_postfixExpression(this);
+ }
+ }
+
+ public final PostIncrementExpression_lf_postfixExpressionContext postIncrementExpression_lf_postfixExpression() throws RecognitionException {
+ PostIncrementExpression_lf_postfixExpressionContext _localctx = new PostIncrementExpression_lf_postfixExpressionContext(_ctx, getState());
+ enterRule(_localctx, 466, RULE_postIncrementExpression_lf_postfixExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2821);
+ match(INC);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PostDecrementExpressionContext extends ParserRuleContext {
+ public PostfixExpressionContext postfixExpression() {
+ return getRuleContext(PostfixExpressionContext.class,0);
+ }
+ public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); }
+ public PostDecrementExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_postDecrementExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression(this);
+ }
+ }
+
+ public final PostDecrementExpressionContext postDecrementExpression() throws RecognitionException {
+ PostDecrementExpressionContext _localctx = new PostDecrementExpressionContext(_ctx, getState());
+ enterRule(_localctx, 468, RULE_postDecrementExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2823);
+ postfixExpression();
+ setState(2824);
+ match(DEC);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class PostDecrementExpression_lf_postfixExpressionContext extends ParserRuleContext {
+ public TerminalNode DEC() { return getToken(Java8Parser.DEC, 0); }
+ public PostDecrementExpression_lf_postfixExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_postDecrementExpression_lf_postfixExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterPostDecrementExpression_lf_postfixExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitPostDecrementExpression_lf_postfixExpression(this);
+ }
+ }
+
+ public final PostDecrementExpression_lf_postfixExpressionContext postDecrementExpression_lf_postfixExpression() throws RecognitionException {
+ PostDecrementExpression_lf_postfixExpressionContext _localctx = new PostDecrementExpression_lf_postfixExpressionContext(_ctx, getState());
+ enterRule(_localctx, 470, RULE_postDecrementExpression_lf_postfixExpression);
+ try {
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2826);
+ match(DEC);
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ @SuppressWarnings("CheckReturnValue")
+ public static class CastExpressionContext extends ParserRuleContext {
+ public TerminalNode LPAREN() { return getToken(Java8Parser.LPAREN, 0); }
+ public PrimitiveTypeContext primitiveType() {
+ return getRuleContext(PrimitiveTypeContext.class,0);
+ }
+ public TerminalNode RPAREN() { return getToken(Java8Parser.RPAREN, 0); }
+ public UnaryExpressionContext unaryExpression() {
+ return getRuleContext(UnaryExpressionContext.class,0);
+ }
+ public ReferenceTypeContext referenceType() {
+ return getRuleContext(ReferenceTypeContext.class,0);
+ }
+ public UnaryExpressionNotPlusMinusContext unaryExpressionNotPlusMinus() {
+ return getRuleContext(UnaryExpressionNotPlusMinusContext.class,0);
+ }
+ public List additionalBound() {
+ return getRuleContexts(AdditionalBoundContext.class);
+ }
+ public AdditionalBoundContext additionalBound(int i) {
+ return getRuleContext(AdditionalBoundContext.class,i);
+ }
+ public LambdaExpressionContext lambdaExpression() {
+ return getRuleContext(LambdaExpressionContext.class,0);
+ }
+ public CastExpressionContext(ParserRuleContext parent, int invokingState) {
+ super(parent, invokingState);
+ }
+ @Override public int getRuleIndex() { return RULE_castExpression; }
+ @Override
+ public void enterRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).enterCastExpression(this);
+ }
+ @Override
+ public void exitRule(ParseTreeListener listener) {
+ if ( listener instanceof Java8Listener ) ((Java8Listener)listener).exitCastExpression(this);
+ }
+ }
+
+ public final CastExpressionContext castExpression() throws RecognitionException {
+ CastExpressionContext _localctx = new CastExpressionContext(_ctx, getState());
+ enterRule(_localctx, 472, RULE_castExpression);
+ int _la;
+ try {
+ setState(2855);
+ _errHandler.sync(this);
+ switch ( getInterpreter().adaptivePredict(_input,323,_ctx) ) {
+ case 1:
+ enterOuterAlt(_localctx, 1);
+ {
+ setState(2828);
+ match(LPAREN);
+ setState(2829);
+ primitiveType();
+ setState(2830);
+ match(RPAREN);
+ setState(2831);
+ unaryExpression();
+ }
+ break;
+ case 2:
+ enterOuterAlt(_localctx, 2);
+ {
+ setState(2833);
+ match(LPAREN);
+ setState(2834);
+ referenceType();
+ setState(2838);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITAND) {
+ {
+ {
+ setState(2835);
+ additionalBound();
+ }
+ }
+ setState(2840);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2841);
+ match(RPAREN);
+ setState(2842);
+ unaryExpressionNotPlusMinus();
+ }
+ break;
+ case 3:
+ enterOuterAlt(_localctx, 3);
+ {
+ setState(2844);
+ match(LPAREN);
+ setState(2845);
+ referenceType();
+ setState(2849);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ while (_la==BITAND) {
+ {
+ {
+ setState(2846);
+ additionalBound();
+ }
+ }
+ setState(2851);
+ _errHandler.sync(this);
+ _la = _input.LA(1);
+ }
+ setState(2852);
+ match(RPAREN);
+ setState(2853);
+ lambdaExpression();
+ }
+ break;
+ }
+ }
+ catch (RecognitionException re) {
+ _localctx.exception = re;
+ _errHandler.reportError(this, re);
+ _errHandler.recover(this, re);
+ }
+ finally {
+ exitRule();
+ }
+ return _localctx;
+ }
+
+ public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
+ switch (ruleIndex) {
+ case 26:
+ return packageName_sempred((PackageNameContext)_localctx, predIndex);
+ case 28:
+ return packageOrTypeName_sempred((PackageOrTypeNameContext)_localctx, predIndex);
+ case 31:
+ return ambiguousName_sempred((AmbiguousNameContext)_localctx, predIndex);
+ case 217:
+ return conditionalOrExpression_sempred((ConditionalOrExpressionContext)_localctx, predIndex);
+ case 218:
+ return conditionalAndExpression_sempred((ConditionalAndExpressionContext)_localctx, predIndex);
+ case 219:
+ return inclusiveOrExpression_sempred((InclusiveOrExpressionContext)_localctx, predIndex);
+ case 220:
+ return exclusiveOrExpression_sempred((ExclusiveOrExpressionContext)_localctx, predIndex);
+ case 221:
+ return andExpression_sempred((AndExpressionContext)_localctx, predIndex);
+ case 222:
+ return equalityExpression_sempred((EqualityExpressionContext)_localctx, predIndex);
+ case 223:
+ return relationalExpression_sempred((RelationalExpressionContext)_localctx, predIndex);
+ case 224:
+ return shiftExpression_sempred((ShiftExpressionContext)_localctx, predIndex);
+ case 225:
+ return additiveExpression_sempred((AdditiveExpressionContext)_localctx, predIndex);
+ case 226:
+ return multiplicativeExpression_sempred((MultiplicativeExpressionContext)_localctx, predIndex);
+ }
+ return true;
+ }
+ private boolean packageName_sempred(PackageNameContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 0:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean packageOrTypeName_sempred(PackageOrTypeNameContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 1:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean ambiguousName_sempred(AmbiguousNameContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 2:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean conditionalOrExpression_sempred(ConditionalOrExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 3:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean conditionalAndExpression_sempred(ConditionalAndExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 4:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean inclusiveOrExpression_sempred(InclusiveOrExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 5:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean exclusiveOrExpression_sempred(ExclusiveOrExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 6:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean andExpression_sempred(AndExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 7:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean equalityExpression_sempred(EqualityExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 8:
+ return precpred(_ctx, 2);
+ case 9:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean relationalExpression_sempred(RelationalExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 10:
+ return precpred(_ctx, 5);
+ case 11:
+ return precpred(_ctx, 4);
+ case 12:
+ return precpred(_ctx, 3);
+ case 13:
+ return precpred(_ctx, 2);
+ case 14:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean shiftExpression_sempred(ShiftExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 15:
+ return precpred(_ctx, 3);
+ case 16:
+ return precpred(_ctx, 2);
+ case 17:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean additiveExpression_sempred(AdditiveExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 18:
+ return precpred(_ctx, 2);
+ case 19:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+ private boolean multiplicativeExpression_sempred(MultiplicativeExpressionContext _localctx, int predIndex) {
+ switch (predIndex) {
+ case 20:
+ return precpred(_ctx, 3);
+ case 21:
+ return precpred(_ctx, 2);
+ case 22:
+ return precpred(_ctx, 1);
+ }
+ return true;
+ }
+
+ private static final String _serializedATNSegment0 =
+ "\u0004\u0001k\u0b2a\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+
+ "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+
+ "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+
+ "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+
+ "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+
+ "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+
+ "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+
+ "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+
+ "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+
+ "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+
+ "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+
+ "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+
+ "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+
+ "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u00021\u00071\u0002"+
+ "2\u00072\u00023\u00073\u00024\u00074\u00025\u00075\u00026\u00076\u0002"+
+ "7\u00077\u00028\u00078\u00029\u00079\u0002:\u0007:\u0002;\u0007;\u0002"+
+ "<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007?\u0002@\u0007@\u0002"+
+ "A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007D\u0002E\u0007E\u0002"+
+ "F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007I\u0002J\u0007J\u0002"+
+ "K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007N\u0002O\u0007O\u0002"+
+ "P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007S\u0002T\u0007T\u0002"+
+ "U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007X\u0002Y\u0007Y\u0002"+
+ "Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007]\u0002^\u0007^\u0002"+
+ "_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007b\u0002c\u0007c\u0002"+
+ "d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007g\u0002h\u0007h\u0002"+
+ "i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007l\u0002m\u0007m\u0002"+
+ "n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007q\u0002r\u0007r\u0002"+
+ "s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007v\u0002w\u0007w\u0002"+
+ "x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007{\u0002|\u0007|\u0002"+
+ "}\u0007}\u0002~\u0007~\u0002\u007f\u0007\u007f\u0002\u0080\u0007\u0080"+
+ "\u0002\u0081\u0007\u0081\u0002\u0082\u0007\u0082\u0002\u0083\u0007\u0083"+
+ "\u0002\u0084\u0007\u0084\u0002\u0085\u0007\u0085\u0002\u0086\u0007\u0086"+
+ "\u0002\u0087\u0007\u0087\u0002\u0088\u0007\u0088\u0002\u0089\u0007\u0089"+
+ "\u0002\u008a\u0007\u008a\u0002\u008b\u0007\u008b\u0002\u008c\u0007\u008c"+
+ "\u0002\u008d\u0007\u008d\u0002\u008e\u0007\u008e\u0002\u008f\u0007\u008f"+
+ "\u0002\u0090\u0007\u0090\u0002\u0091\u0007\u0091\u0002\u0092\u0007\u0092"+
+ "\u0002\u0093\u0007\u0093\u0002\u0094\u0007\u0094\u0002\u0095\u0007\u0095"+
+ "\u0002\u0096\u0007\u0096\u0002\u0097\u0007\u0097\u0002\u0098\u0007\u0098"+
+ "\u0002\u0099\u0007\u0099\u0002\u009a\u0007\u009a\u0002\u009b\u0007\u009b"+
+ "\u0002\u009c\u0007\u009c\u0002\u009d\u0007\u009d\u0002\u009e\u0007\u009e"+
+ "\u0002\u009f\u0007\u009f\u0002\u00a0\u0007\u00a0\u0002\u00a1\u0007\u00a1"+
+ "\u0002\u00a2\u0007\u00a2\u0002\u00a3\u0007\u00a3\u0002\u00a4\u0007\u00a4"+
+ "\u0002\u00a5\u0007\u00a5\u0002\u00a6\u0007\u00a6\u0002\u00a7\u0007\u00a7"+
+ "\u0002\u00a8\u0007\u00a8\u0002\u00a9\u0007\u00a9\u0002\u00aa\u0007\u00aa"+
+ "\u0002\u00ab\u0007\u00ab\u0002\u00ac\u0007\u00ac\u0002\u00ad\u0007\u00ad"+
+ "\u0002\u00ae\u0007\u00ae\u0002\u00af\u0007\u00af\u0002\u00b0\u0007\u00b0"+
+ "\u0002\u00b1\u0007\u00b1\u0002\u00b2\u0007\u00b2\u0002\u00b3\u0007\u00b3"+
+ "\u0002\u00b4\u0007\u00b4\u0002\u00b5\u0007\u00b5\u0002\u00b6\u0007\u00b6"+
+ "\u0002\u00b7\u0007\u00b7\u0002\u00b8\u0007\u00b8\u0002\u00b9\u0007\u00b9"+
+ "\u0002\u00ba\u0007\u00ba\u0002\u00bb\u0007\u00bb\u0002\u00bc\u0007\u00bc"+
+ "\u0002\u00bd\u0007\u00bd\u0002\u00be\u0007\u00be\u0002\u00bf\u0007\u00bf"+
+ "\u0002\u00c0\u0007\u00c0\u0002\u00c1\u0007\u00c1\u0002\u00c2\u0007\u00c2"+
+ "\u0002\u00c3\u0007\u00c3\u0002\u00c4\u0007\u00c4\u0002\u00c5\u0007\u00c5"+
+ "\u0002\u00c6\u0007\u00c6\u0002\u00c7\u0007\u00c7\u0002\u00c8\u0007\u00c8"+
+ "\u0002\u00c9\u0007\u00c9\u0002\u00ca\u0007\u00ca\u0002\u00cb\u0007\u00cb"+
+ "\u0002\u00cc\u0007\u00cc\u0002\u00cd\u0007\u00cd\u0002\u00ce\u0007\u00ce"+
+ "\u0002\u00cf\u0007\u00cf\u0002\u00d0\u0007\u00d0\u0002\u00d1\u0007\u00d1"+
+ "\u0002\u00d2\u0007\u00d2\u0002\u00d3\u0007\u00d3\u0002\u00d4\u0007\u00d4"+
+ "\u0002\u00d5\u0007\u00d5\u0002\u00d6\u0007\u00d6\u0002\u00d7\u0007\u00d7"+
+ "\u0002\u00d8\u0007\u00d8\u0002\u00d9\u0007\u00d9\u0002\u00da\u0007\u00da"+
+ "\u0002\u00db\u0007\u00db\u0002\u00dc\u0007\u00dc\u0002\u00dd\u0007\u00dd"+
+ "\u0002\u00de\u0007\u00de\u0002\u00df\u0007\u00df\u0002\u00e0\u0007\u00e0"+
+ "\u0002\u00e1\u0007\u00e1\u0002\u00e2\u0007\u00e2\u0002\u00e3\u0007\u00e3"+
+ "\u0002\u00e4\u0007\u00e4\u0002\u00e5\u0007\u00e5\u0002\u00e6\u0007\u00e6"+
+ "\u0002\u00e7\u0007\u00e7\u0002\u00e8\u0007\u00e8\u0002\u00e9\u0007\u00e9"+
+ "\u0002\u00ea\u0007\u00ea\u0002\u00eb\u0007\u00eb\u0002\u00ec\u0007\u00ec"+
+ "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0003\u0001\u01df\b\u0001"+
+ "\u0001\u0002\u0005\u0002\u01e2\b\u0002\n\u0002\f\u0002\u01e5\t\u0002\u0001"+
+ "\u0002\u0001\u0002\u0005\u0002\u01e9\b\u0002\n\u0002\f\u0002\u01ec\t\u0002"+
+ "\u0001\u0002\u0003\u0002\u01ef\b\u0002\u0001\u0003\u0001\u0003\u0003\u0003"+
+ "\u01f3\b\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0006"+
+ "\u0001\u0006\u0001\u0006\u0003\u0006\u01fc\b\u0006\u0001\u0007\u0001\u0007"+
+ "\u0003\u0007\u0200\b\u0007\u0001\u0007\u0001\u0007\u0005\u0007\u0204\b"+
+ "\u0007\n\u0007\f\u0007\u0207\t\u0007\u0001\b\u0005\b\u020a\b\b\n\b\f\b"+
+ "\u020d\t\b\u0001\b\u0001\b\u0003\b\u0211\b\b\u0001\b\u0001\b\u0001\b\u0005"+
+ "\b\u0216\b\b\n\b\f\b\u0219\t\b\u0001\b\u0001\b\u0003\b\u021d\b\b\u0003"+
+ "\b\u021f\b\b\u0001\t\u0001\t\u0005\t\u0223\b\t\n\t\f\t\u0226\t\t\u0001"+
+ "\t\u0001\t\u0003\t\u022a\b\t\u0001\n\u0005\n\u022d\b\n\n\n\f\n\u0230\t"+
+ "\n\u0001\n\u0001\n\u0003\n\u0234\b\n\u0001\u000b\u0001\u000b\u0001\f\u0001"+
+ "\f\u0001\r\u0001\r\u0001\u000e\u0005\u000e\u023d\b\u000e\n\u000e\f\u000e"+
+ "\u0240\t\u000e\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+
+ "\u0003\u000f\u024d\b\u000f\u0001\u0010\u0005\u0010\u0250\b\u0010\n\u0010"+
+ "\f\u0010\u0253\t\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0005\u0010"+
+ "\u0258\b\u0010\n\u0010\f\u0010\u025b\t\u0010\u0001\u0010\u0001\u0010\u0005"+
+ "\u0010\u025f\b\u0010\n\u0010\f\u0010\u0262\t\u0010\u0001\u0011\u0005\u0011"+
+ "\u0265\b\u0011\n\u0011\f\u0011\u0268\t\u0011\u0001\u0011\u0001\u0011\u0003"+
+ "\u0011\u026c\b\u0011\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001"+
+ "\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u0275\b\u0013\n\u0013\f\u0013"+
+ "\u0278\t\u0013\u0003\u0013\u027a\b\u0013\u0001\u0014\u0001\u0014\u0001"+
+ "\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001"+
+ "\u0016\u0001\u0016\u0005\u0016\u0286\b\u0016\n\u0016\f\u0016\u0289\t\u0016"+
+ "\u0001\u0017\u0001\u0017\u0003\u0017\u028d\b\u0017\u0001\u0018\u0005\u0018"+
+ "\u0290\b\u0018\n\u0018\f\u0018\u0293\t\u0018\u0001\u0018\u0001\u0018\u0003"+
+ "\u0018\u0297\b\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003"+
+ "\u0019\u029d\b\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a\u0001"+
+ "\u001a\u0001\u001a\u0005\u001a\u02a5\b\u001a\n\u001a\f\u001a\u02a8\t\u001a"+
+ "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0003\u001b"+
+ "\u02af\b\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+
+ "\u0001\u001c\u0005\u001c\u02b7\b\u001c\n\u001c\f\u001c\u02ba\t\u001c\u0001"+
+ "\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0003\u001d\u02c1"+
+ "\b\u001d\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f\u0001"+
+ "\u001f\u0001\u001f\u0001\u001f\u0005\u001f\u02cb\b\u001f\n\u001f\f\u001f"+
+ "\u02ce\t\u001f\u0001 \u0003 \u02d1\b \u0001 \u0005 \u02d4\b \n \f \u02d7"+
+ "\t \u0001 \u0005 \u02da\b \n \f \u02dd\t \u0001 \u0001 \u0001!\u0005!"+
+ "\u02e2\b!\n!\f!\u02e5\t!\u0001!\u0001!\u0001!\u0001!\u0005!\u02eb\b!\n"+
+ "!\f!\u02ee\t!\u0001!\u0001!\u0001\"\u0001\"\u0001#\u0001#\u0001#\u0001"+
+ "#\u0003#\u02f8\b#\u0001$\u0001$\u0001$\u0001$\u0001%\u0001%\u0001%\u0001"+
+ "%\u0001%\u0001%\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001&\u0001"+
+ "\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001\'\u0001(\u0001(\u0001"+
+ "(\u0003(\u0315\b(\u0001)\u0001)\u0003)\u0319\b)\u0001*\u0005*\u031c\b"+
+ "*\n*\f*\u031f\t*\u0001*\u0001*\u0001*\u0003*\u0324\b*\u0001*\u0003*\u0327"+
+ "\b*\u0001*\u0003*\u032a\b*\u0001*\u0001*\u0001+\u0001+\u0001+\u0001+\u0001"+
+ "+\u0001+\u0001+\u0001+\u0003+\u0336\b+\u0001,\u0001,\u0001,\u0001,\u0001"+
+ "-\u0001-\u0001-\u0005-\u033f\b-\n-\f-\u0342\t-\u0001.\u0001.\u0001.\u0001"+
+ "/\u0001/\u0001/\u00010\u00010\u00010\u00050\u034d\b0\n0\f0\u0350\t0\u0001"+
+ "1\u00011\u00051\u0354\b1\n1\f1\u0357\t1\u00011\u00011\u00012\u00012\u0001"+
+ "2\u00012\u00032\u035f\b2\u00013\u00013\u00013\u00013\u00013\u00033\u0366"+
+ "\b3\u00014\u00054\u0369\b4\n4\f4\u036c\t4\u00014\u00014\u00014\u00014"+
+ "\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00015\u00035\u037a"+
+ "\b5\u00016\u00016\u00016\u00056\u037f\b6\n6\f6\u0382\t6\u00017\u00017"+
+ "\u00017\u00037\u0387\b7\u00018\u00018\u00038\u038b\b8\u00019\u00019\u0003"+
+ "9\u038f\b9\u0001:\u0001:\u0003:\u0393\b:\u0001;\u0001;\u0003;\u0397\b"+
+ ";\u0001<\u0001<\u0001<\u0003<\u039c\b<\u0001=\u0001=\u0003=\u03a0\b=\u0001"+
+ "=\u0001=\u0005=\u03a4\b=\n=\f=\u03a7\t=\u0001>\u0001>\u0003>\u03ab\b>"+
+ "\u0001>\u0001>\u0001>\u0005>\u03b0\b>\n>\f>\u03b3\t>\u0001>\u0001>\u0003"+
+ ">\u03b7\b>\u0003>\u03b9\b>\u0001?\u0001?\u0005?\u03bd\b?\n?\f?\u03c0\t"+
+ "?\u0001?\u0001?\u0003?\u03c4\b?\u0001@\u0001@\u0003@\u03c8\b@\u0001A\u0001"+
+ "A\u0001B\u0001B\u0001C\u0001C\u0001D\u0001D\u0001E\u0001E\u0001E\u0001"+
+ "E\u0001E\u0001E\u0001E\u0001E\u0001E\u0003E\u03db\bE\u0001F\u0005F\u03de"+
+ "\bF\nF\fF\u03e1\tF\u0001F\u0001F\u0001F\u0001G\u0001G\u0001G\u0001G\u0001"+
+ "G\u0001G\u0001G\u0001G\u0001G\u0001G\u0003G\u03f0\bG\u0001H\u0001H\u0001"+
+ "H\u0003H\u03f5\bH\u0001H\u0001H\u0005H\u03f9\bH\nH\fH\u03fc\tH\u0001H"+
+ "\u0001H\u0001H\u0003H\u0401\bH\u0003H\u0403\bH\u0001I\u0001I\u0003I\u0407"+
+ "\bI\u0001J\u0001J\u0001J\u0003J\u040c\bJ\u0001J\u0001J\u0003J\u0410\b"+
+ "J\u0001K\u0001K\u0001K\u0001K\u0001K\u0003K\u0417\bK\u0001L\u0001L\u0001"+
+ "L\u0005L\u041c\bL\nL\fL\u041f\tL\u0001L\u0001L\u0001L\u0005L\u0424\bL"+
+ "\nL\fL\u0427\tL\u0003L\u0429\bL\u0001M\u0005M\u042c\bM\nM\fM\u042f\tM"+
+ "\u0001M\u0001M\u0001M\u0001N\u0001N\u0003N\u0436\bN\u0001O\u0005O\u0439"+
+ "\bO\nO\fO\u043c\tO\u0001O\u0001O\u0005O\u0440\bO\nO\fO\u0443\tO\u0001"+
+ "O\u0001O\u0001O\u0001O\u0003O\u0449\bO\u0001P\u0005P\u044c\bP\nP\fP\u044f"+
+ "\tP\u0001P\u0001P\u0001P\u0003P\u0454\bP\u0001P\u0001P\u0001Q\u0001Q\u0001"+
+ "Q\u0001R\u0001R\u0001R\u0005R\u045e\bR\nR\fR\u0461\tR\u0001S\u0001S\u0003"+
+ "S\u0465\bS\u0001T\u0001T\u0003T\u0469\bT\u0001U\u0001U\u0001V\u0001V\u0001"+
+ "V\u0001W\u0005W\u0471\bW\nW\fW\u0474\tW\u0001W\u0001W\u0003W\u0478\bW"+
+ "\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0003X\u0480\bX\u0001Y\u0003"+
+ "Y\u0483\bY\u0001Y\u0001Y\u0001Y\u0003Y\u0488\bY\u0001Y\u0001Y\u0001Z\u0001"+
+ "Z\u0001[\u0001[\u0003[\u0490\b[\u0001[\u0003[\u0493\b[\u0001[\u0001[\u0001"+
+ "\\\u0003\\\u0498\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u049d\b\\\u0001\\"+
+ "\u0001\\\u0001\\\u0003\\\u04a2\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u04a7"+
+ "\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001\\\u0003\\\u04ae\b\\\u0001\\"+
+ "\u0001\\\u0001\\\u0003\\\u04b3\b\\\u0001\\\u0001\\\u0001\\\u0001\\\u0001"+
+ "\\\u0001\\\u0003\\\u04bb\b\\\u0001\\\u0001\\\u0001\\\u0003\\\u04c0\b\\"+
+ "\u0001\\\u0001\\\u0001\\\u0003\\\u04c5\b\\\u0001]\u0005]\u04c8\b]\n]\f"+
+ "]\u04cb\t]\u0001]\u0001]\u0001]\u0003]\u04d0\b]\u0001]\u0001]\u0001^\u0001"+
+ "^\u0003^\u04d6\b^\u0001^\u0003^\u04d9\b^\u0001^\u0003^\u04dc\b^\u0001"+
+ "^\u0001^\u0001_\u0001_\u0001_\u0005_\u04e3\b_\n_\f_\u04e6\t_\u0001`\u0005"+
+ "`\u04e9\b`\n`\f`\u04ec\t`\u0001`\u0001`\u0001`\u0003`\u04f1\b`\u0001`"+
+ "\u0003`\u04f4\b`\u0001`\u0003`\u04f7\b`\u0001a\u0001a\u0001b\u0001b\u0005"+
+ "b\u04fd\bb\nb\fb\u0500\tb\u0001c\u0001c\u0003c\u0504\bc\u0001d\u0005d"+
+ "\u0507\bd\nd\fd\u050a\td\u0001d\u0001d\u0001d\u0003d\u050f\bd\u0001d\u0003"+
+ "d\u0512\bd\u0001d\u0001d\u0001e\u0001e\u0001e\u0001e\u0001e\u0001e\u0001"+
+ "e\u0003e\u051d\be\u0001f\u0001f\u0001f\u0001g\u0001g\u0005g\u0524\bg\n"+
+ "g\fg\u0527\tg\u0001g\u0001g\u0001h\u0001h\u0001h\u0001h\u0001h\u0003h"+
+ "\u0530\bh\u0001i\u0005i\u0533\bi\ni\fi\u0536\ti\u0001i\u0001i\u0001i\u0001"+
+ "i\u0001j\u0001j\u0001j\u0001j\u0003j\u0540\bj\u0001k\u0005k\u0543\bk\n"+
+ "k\fk\u0546\tk\u0001k\u0001k\u0001k\u0001l\u0001l\u0001l\u0001l\u0001l"+
+ "\u0001l\u0003l\u0551\bl\u0001m\u0005m\u0554\bm\nm\fm\u0557\tm\u0001m\u0001"+
+ "m\u0001m\u0001m\u0001m\u0001n\u0001n\u0005n\u0560\bn\nn\fn\u0563\tn\u0001"+
+ "n\u0001n\u0001o\u0001o\u0001o\u0001o\u0001o\u0003o\u056c\bo\u0001p\u0005"+
+ "p\u056f\bp\np\fp\u0572\tp\u0001p\u0001p\u0001p\u0001p\u0001p\u0003p\u0579"+
+ "\bp\u0001p\u0003p\u057c\bp\u0001p\u0001p\u0001q\u0001q\u0001q\u0003q\u0583"+
+ "\bq\u0001r\u0001r\u0001r\u0001s\u0001s\u0001s\u0003s\u058b\bs\u0001t\u0001"+
+ "t\u0001t\u0001t\u0003t\u0591\bt\u0001t\u0001t\u0001u\u0001u\u0001u\u0005"+
+ "u\u0598\bu\nu\fu\u059b\tu\u0001v\u0001v\u0001v\u0001v\u0001w\u0001w\u0001"+
+ "w\u0003w\u05a4\bw\u0001x\u0001x\u0003x\u05a8\bx\u0001x\u0003x\u05ab\b"+
+ "x\u0001x\u0001x\u0001y\u0001y\u0001y\u0005y\u05b2\by\ny\fy\u05b5\ty\u0001"+
+ "z\u0001z\u0001z\u0001{\u0001{\u0001{\u0001{\u0001{\u0001{\u0001|\u0001"+
+ "|\u0003|\u05c2\b|\u0001|\u0003|\u05c5\b|\u0001|\u0001|\u0001}\u0001}\u0001"+
+ "}\u0005}\u05cc\b}\n}\f}\u05cf\t}\u0001~\u0001~\u0003~\u05d3\b~\u0001~"+
+ "\u0001~\u0001\u007f\u0001\u007f\u0005\u007f\u05d9\b\u007f\n\u007f\f\u007f"+
+ "\u05dc\t\u007f\u0001\u0080\u0001\u0080\u0001\u0080\u0003\u0080\u05e1\b"+
+ "\u0080\u0001\u0081\u0001\u0081\u0001\u0081\u0001\u0082\u0005\u0082\u05e7"+
+ "\b\u0082\n\u0082\f\u0082\u05ea\t\u0082\u0001\u0082\u0001\u0082\u0001\u0082"+
+ "\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083\u0001\u0083"+
+ "\u0003\u0083\u05f5\b\u0083\u0001\u0084\u0001\u0084\u0001\u0084\u0001\u0084"+
+ "\u0001\u0084\u0003\u0084\u05fc\b\u0084\u0001\u0085\u0001\u0085\u0001\u0085"+
+ "\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085\u0001\u0085"+
+ "\u0001\u0085\u0001\u0085\u0001\u0085\u0003\u0085\u060a\b\u0085\u0001\u0086"+
+ "\u0001\u0086\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0087\u0001\u0088"+
+ "\u0001\u0088\u0001\u0088\u0001\u0088\u0001\u0089\u0001\u0089\u0001\u0089"+
+ "\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a\u0001\u008a"+
+ "\u0001\u008a\u0003\u008a\u0620\b\u008a\u0001\u008b\u0001\u008b\u0001\u008b"+
+ "\u0001\u008b\u0001\u008b\u0001\u008b\u0001\u008c\u0001\u008c\u0001\u008c"+
+ "\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008c\u0001\u008d"+
+ "\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d\u0001\u008d"+
+ "\u0001\u008d\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e"+
+ "\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0001\u008e\u0003\u008e"+
+ "\u0642\b\u008e\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f\u0001\u008f"+
+ "\u0001\u008f\u0001\u0090\u0001\u0090\u0005\u0090\u064c\b\u0090\n\u0090"+
+ "\f\u0090\u064f\t\u0090\u0001\u0090\u0005\u0090\u0652\b\u0090\n\u0090\f"+
+ "\u0090\u0655\t\u0090\u0001\u0090\u0001\u0090\u0001\u0091\u0001\u0091\u0001"+
+ "\u0091\u0001\u0092\u0001\u0092\u0005\u0092\u065e\b\u0092\n\u0092\f\u0092"+
+ "\u0661\t\u0092\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093"+
+ "\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0001\u0093\u0003\u0093"+
+ "\u066d\b\u0093\u0001\u0094\u0001\u0094\u0001\u0095\u0001\u0095\u0001\u0095"+
+ "\u0001\u0095\u0001\u0095\u0001\u0095\u0001\u0096\u0001\u0096\u0001\u0096"+
+ "\u0001\u0096\u0001\u0096\u0001\u0096\u0001\u0097\u0001\u0097\u0001\u0097"+
+ "\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0097\u0001\u0098"+
+ "\u0001\u0098\u0003\u0098\u0687\b\u0098\u0001\u0099\u0001\u0099\u0003\u0099"+
+ "\u068b\b\u0099\u0001\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u0690\b"+
+ "\u009a\u0001\u009a\u0001\u009a\u0003\u009a\u0694\b\u009a\u0001\u009a\u0001"+
+ "\u009a\u0003\u009a\u0698\b\u009a\u0001\u009a\u0001\u009a\u0001\u009a\u0001"+
+ "\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u06a0\b\u009b\u0001\u009b\u0001"+
+ "\u009b\u0003\u009b\u06a4\b\u009b\u0001\u009b\u0001\u009b\u0003\u009b\u06a8"+
+ "\b\u009b\u0001\u009b\u0001\u009b\u0001\u009b\u0001\u009c\u0001\u009c\u0003"+
+ "\u009c\u06af\b\u009c\u0001\u009d\u0001\u009d\u0001\u009e\u0001\u009e\u0001"+
+ "\u009e\u0005\u009e\u06b6\b\u009e\n\u009e\f\u009e\u06b9\t\u009e\u0001\u009f"+
+ "\u0001\u009f\u0001\u009f\u0005\u009f\u06be\b\u009f\n\u009f\f\u009f\u06c1"+
+ "\t\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001\u009f\u0001"+
+ "\u009f\u0001\u009f\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0005\u00a0\u06cd"+
+ "\b\u00a0\n\u00a0\f\u00a0\u06d0\t\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0"+
+ "\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a0\u0001\u00a1\u0001\u00a1"+
+ "\u0003\u00a1\u06db\b\u00a1\u0001\u00a1\u0001\u00a1\u0001\u00a2\u0001\u00a2"+
+ "\u0003\u00a2\u06e1\b\u00a2\u0001\u00a2\u0001\u00a2\u0001\u00a3\u0001\u00a3"+
+ "\u0003\u00a3\u06e7\b\u00a3\u0001\u00a3\u0001\u00a3\u0001\u00a4\u0001\u00a4"+
+ "\u0001\u00a4\u0001\u00a4\u0001\u00a5\u0001\u00a5\u0001\u00a5\u0001\u00a5"+
+ "\u0001\u00a5\u0001\u00a5\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0001\u00a6"+
+ "\u0001\u00a6\u0001\u00a6\u0001\u00a6\u0003\u00a6\u06fc\b\u00a6\u0001\u00a6"+
+ "\u0001\u00a6\u0001\u00a6\u0003\u00a6\u0701\b\u00a6\u0001\u00a7\u0001\u00a7"+
+ "\u0005\u00a7\u0705\b\u00a7\n\u00a7\f\u00a7\u0708\t\u00a7\u0001\u00a8\u0001"+
+ "\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a8\u0001\u00a9\u0005"+
+ "\u00a9\u0711\b\u00a9\n\u00a9\f\u00a9\u0714\t\u00a9\u0001\u00a9\u0001\u00a9"+
+ "\u0001\u00a9\u0001\u00aa\u0001\u00aa\u0001\u00aa\u0005\u00aa\u071c\b\u00aa"+
+ "\n\u00aa\f\u00aa\u071f\t\u00aa\u0001\u00ab\u0001\u00ab\u0001\u00ab\u0001"+
+ "\u00ac\u0001\u00ac\u0001\u00ac\u0001\u00ac\u0003\u00ac\u0728\b\u00ac\u0001"+
+ "\u00ac\u0003\u00ac\u072b\b\u00ac\u0001\u00ad\u0001\u00ad\u0001\u00ad\u0003"+
+ "\u00ad\u0730\b\u00ad\u0001\u00ad\u0001\u00ad\u0001\u00ae\u0001\u00ae\u0001"+
+ "\u00ae\u0005\u00ae\u0737\b\u00ae\n\u00ae\f\u00ae\u073a\t\u00ae\u0001\u00af"+
+ "\u0005\u00af\u073d\b\u00af\n\u00af\f\u00af\u0740\t\u00af\u0001\u00af\u0001"+
+ "\u00af\u0001\u00af\u0001\u00af\u0001\u00af\u0001\u00b0\u0001\u00b0\u0003"+
+ "\u00b0\u0749\b\u00b0\u0001\u00b0\u0005\u00b0\u074c\b\u00b0\n\u00b0\f\u00b0"+
+ "\u074f\t\u00b0\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0005\u00b1"+
+ "\u0755\b\u00b1\n\u00b1\f\u00b1\u0758\t\u00b1\u0001\u00b1\u0001\u00b1\u0001"+
+ "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+
+ "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001"+
+ "\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0001\u00b1\u0003"+
+ "\u00b1\u076e\b\u00b1\u0001\u00b2\u0001\u00b2\u0001\u00b3\u0001\u00b3\u0001"+
+ "\u00b3\u0001\u00b3\u0005\u00b3\u0776\b\u00b3\n\u00b3\f\u00b3\u0779\t\u00b3"+
+ "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
+ "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
+ "\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3\u0001\u00b3"+
+ "\u0001\u00b3\u0003\u00b3\u078e\b\u00b3\u0001\u00b4\u0001\u00b4\u0001\u00b4"+
+ "\u0001\u00b4\u0001\u00b4\u0003\u00b4\u0795\b\u00b4\u0001\u00b5\u0001\u00b5"+
+ "\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0001\u00b6\u0003\u00b6\u079d\b\u00b6"+
+ "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0005\u00b7\u07a3\b\u00b7"+
+ "\n\u00b7\f\u00b7\u07a6\t\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001"+
+ "\u00b7\u0001\u00b7\u0001\u00b7\u0005\u00b7\u07ae\b\u00b7\n\u00b7\f\u00b7"+
+ "\u07b1\t\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
+ "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
+ "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0001\u00b7"+
+ "\u0001\u00b7\u0001\u00b7\u0001\u00b7\u0003\u00b7\u07c7\b\u00b7\u0001\u00b8"+
+ "\u0001\u00b8\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0005\u00b9"+
+ "\u07cf\b\u00b9\n\u00b9\f\u00b9\u07d2\t\u00b9\u0001\u00b9\u0001\u00b9\u0001"+
+ "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0005\u00b9\u07da\b\u00b9\n"+
+ "\u00b9\f\u00b9\u07dd\t\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+
+ "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+
+ "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0001"+
+ "\u00b9\u0001\u00b9\u0001\u00b9\u0001\u00b9\u0003\u00b9\u07f2\b\u00b9\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u07f6\b\u00ba\u0001\u00ba\u0005\u00ba\u07f9"+
+ "\b\u00ba\n\u00ba\f\u00ba\u07fc\t\u00ba\u0001\u00ba\u0001\u00ba\u0001\u00ba"+
+ "\u0005\u00ba\u0801\b\u00ba\n\u00ba\f\u00ba\u0804\t\u00ba\u0001\u00ba\u0005"+
+ "\u00ba\u0807\b\u00ba\n\u00ba\f\u00ba\u080a\t\u00ba\u0001\u00ba\u0003\u00ba"+
+ "\u080d\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0811\b\u00ba\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u0815\b\u00ba\u0001\u00ba\u0001\u00ba\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u081b\b\u00ba\u0001\u00ba\u0005\u00ba\u081e"+
+ "\b\u00ba\n\u00ba\f\u00ba\u0821\t\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba"+
+ "\u0825\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0829\b\u00ba\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u082d\b\u00ba\u0001\u00ba\u0001\u00ba\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u0833\b\u00ba\u0001\u00ba\u0005\u00ba\u0836"+
+ "\b\u00ba\n\u00ba\f\u00ba\u0839\t\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba"+
+ "\u083d\b\u00ba\u0001\u00ba\u0001\u00ba\u0003\u00ba\u0841\b\u00ba\u0001"+
+ "\u00ba\u0001\u00ba\u0003\u00ba\u0845\b\u00ba\u0003\u00ba\u0847\b\u00ba"+
+ "\u0001\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u084c\b\u00bb\u0001\u00bb"+
+ "\u0005\u00bb\u084f\b\u00bb\n\u00bb\f\u00bb\u0852\t\u00bb\u0001\u00bb\u0001"+
+ "\u00bb\u0003\u00bb\u0856\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u085a"+
+ "\b\u00bb\u0001\u00bb\u0001\u00bb\u0003\u00bb\u085e\b\u00bb\u0001\u00bc"+
+ "\u0001\u00bc\u0003\u00bc\u0862\b\u00bc\u0001\u00bc\u0005\u00bc\u0865\b"+
+ "\u00bc\n\u00bc\f\u00bc\u0868\t\u00bc\u0001\u00bc\u0001\u00bc\u0001\u00bc"+
+ "\u0005\u00bc\u086d\b\u00bc\n\u00bc\f\u00bc\u0870\t\u00bc\u0001\u00bc\u0005"+
+ "\u00bc\u0873\b\u00bc\n\u00bc\f\u00bc\u0876\t\u00bc\u0001\u00bc\u0003\u00bc"+
+ "\u0879\b\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u087d\b\u00bc\u0001"+
+ "\u00bc\u0001\u00bc\u0003\u00bc\u0881\b\u00bc\u0001\u00bc\u0001\u00bc\u0001"+
+ "\u00bc\u0001\u00bc\u0003\u00bc\u0887\b\u00bc\u0001\u00bc\u0005\u00bc\u088a"+
+ "\b\u00bc\n\u00bc\f\u00bc\u088d\t\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc"+
+ "\u0891\b\u00bc\u0001\u00bc\u0001\u00bc\u0003\u00bc\u0895\b\u00bc\u0001"+
+ "\u00bc\u0001\u00bc\u0003\u00bc\u0899\b\u00bc\u0003\u00bc\u089b\b\u00bc"+
+ "\u0001\u00bd\u0001\u00bd\u0001\u00bd\u0003\u00bd\u08a0\b\u00bd\u0001\u00be"+
+ "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+
+ "\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be\u0001\u00be"+
+ "\u0003\u00be\u08af\b\u00be\u0001\u00bf\u0001\u00bf\u0001\u00bf\u0001\u00c0"+
+ "\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0\u0001\u00c0"+
+ "\u0001\u00c0\u0001\u00c0\u0003\u00c0\u08bd\b\u00c0\u0001\u00c1\u0001\u00c1"+
+ "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0001\u00c1"+
+ "\u0001\u00c1\u0001\u00c1\u0003\u00c1\u08c9\b\u00c1\u0001\u00c1\u0001\u00c1"+
+ "\u0001\u00c1\u0001\u00c1\u0001\u00c1\u0005\u00c1\u08d0\b\u00c1\n\u00c1"+
+ "\f\u00c1\u08d3\t\u00c1\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
+ "\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2\u0001\u00c2"+
+ "\u0005\u00c2\u08df\b\u00c2\n\u00c2\f\u00c2\u08e2\t\u00c2\u0001\u00c3\u0001"+
+ "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0001"+
+ "\u00c3\u0001\u00c3\u0001\u00c3\u0003\u00c3\u08ee\b\u00c3\u0001\u00c3\u0001"+
+ "\u00c3\u0001\u00c3\u0001\u00c3\u0001\u00c3\u0005\u00c3\u08f5\b\u00c3\n"+
+ "\u00c3\f\u00c3\u08f8\t\u00c3\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
+ "\u00c4\u08fd\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0003\u00c4\u0904\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
+ "\u00c4\u0909\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0003\u00c4\u0910\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
+ "\u00c4\u0915\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0003\u00c4\u091c\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
+ "\u00c4\u0921\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0003\u00c4\u0928\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0003"+
+ "\u00c4\u092d\b\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0001\u00c4\u0003\u00c4\u0935\b\u00c4\u0001\u00c4\u0001\u00c4\u0001"+
+ "\u00c4\u0003\u00c4\u093a\b\u00c4\u0001\u00c4\u0001\u00c4\u0003\u00c4\u093e"+
+ "\b\u00c4\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0942\b\u00c5\u0001\u00c5"+
+ "\u0001\u00c5\u0001\u00c5\u0003\u00c5\u0947\b\u00c5\u0001\u00c5\u0001\u00c5"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u094e\b\u00c6\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0955\b\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u095a\b\u00c6\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0961\b\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0966\b\u00c6\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u096d\b\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0972\b\u00c6\u0001\u00c6"+
+ "\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6"+
+ "\u097a\b\u00c6\u0001\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u097f\b"+
+ "\u00c6\u0001\u00c6\u0001\u00c6\u0003\u00c6\u0983\b\u00c6\u0001\u00c7\u0001"+
+ "\u00c7\u0001\u00c7\u0005\u00c7\u0988\b\u00c7\n\u00c7\f\u00c7\u098b\t\u00c7"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0990\b\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u0997\b\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8"+
+ "\u099e\b\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0003\u00c8\u09a5\b\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0003\u00c8\u09ad\b\u00c8\u0001\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8\u09b4\b\u00c8\u0001\u00c8"+
+ "\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0001\u00c8\u0003\u00c8"+
+ "\u09bc\b\u00c8\u0001\u00c9\u0001\u00c9\u0003\u00c9\u09c0\b\u00c9\u0001"+
+ "\u00c9\u0001\u00c9\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09c7"+
+ "\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003"+
+ "\u00ca\u09ce\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+
+ "\u00ca\u0003\u00ca\u09d5\b\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001"+
+ "\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09dd\b\u00ca\u0001\u00ca\u0001"+
+ "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003\u00ca\u09e4\b\u00ca\u0001"+
+ "\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0001\u00ca\u0003"+
+ "\u00ca\u09ec\b\u00ca\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+
+ "\u00cb\u09f2\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+
+ "\u00cb\u09f8\b\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001"+
+ "\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0001\u00cb\u0003"+
+ "\u00cb\u0a04\b\u00cb\u0001\u00cc\u0001\u00cc\u0005\u00cc\u0a08\b\u00cc"+
+ "\n\u00cc\f\u00cc\u0a0b\t\u00cc\u0001\u00cd\u0005\u00cd\u0a0e\b\u00cd\n"+
+ "\u00cd\f\u00cd\u0a11\t\u00cd\u0001\u00cd\u0001\u00cd\u0001\u00cd\u0001"+
+ "\u00cd\u0001\u00ce\u0001\u00ce\u0001\u00cf\u0001\u00cf\u0003\u00cf\u0a1b"+
+ "\b\u00cf\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d0\u0001\u00d1\u0001"+
+ "\u00d1\u0001\u00d1\u0003\u00d1\u0a24\b\u00d1\u0001\u00d1\u0001\u00d1\u0001"+
+ "\u00d1\u0001\u00d1\u0001\u00d1\u0003\u00d1\u0a2b\b\u00d1\u0001\u00d2\u0001"+
+ "\u00d2\u0001\u00d2\u0005\u00d2\u0a30\b\u00d2\n\u00d2\f\u00d2\u0a33\t\u00d2"+
+ "\u0001\u00d3\u0001\u00d3\u0003\u00d3\u0a37\b\u00d3\u0001\u00d4\u0001\u00d4"+
+ "\u0003\u00d4\u0a3b\b\u00d4\u0001\u00d5\u0001\u00d5\u0001\u00d5\u0001\u00d5"+
+ "\u0001\u00d6\u0001\u00d6\u0001\u00d6\u0003\u00d6\u0a44\b\u00d6\u0001\u00d7"+
+ "\u0001\u00d7\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8\u0001\u00d8"+
+ "\u0001\u00d8\u0001\u00d8\u0003\u00d8\u0a4f\b\u00d8\u0001\u00d9\u0001\u00d9"+
+ "\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0001\u00d9\u0005\u00d9\u0a57\b\u00d9"+
+ "\n\u00d9\f\u00d9\u0a5a\t\u00d9\u0001\u00da\u0001\u00da\u0001\u00da\u0001"+
+ "\u00da\u0001\u00da\u0001\u00da\u0005\u00da\u0a62\b\u00da\n\u00da\f\u00da"+
+ "\u0a65\t\u00da\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db\u0001\u00db"+
+ "\u0001\u00db\u0005\u00db\u0a6d\b\u00db\n\u00db\f\u00db\u0a70\t\u00db\u0001"+
+ "\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0001\u00dc\u0005"+
+ "\u00dc\u0a78\b\u00dc\n\u00dc\f\u00dc\u0a7b\t\u00dc\u0001\u00dd\u0001\u00dd"+
+ "\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0001\u00dd\u0005\u00dd\u0a83\b\u00dd"+
+ "\n\u00dd\f\u00dd\u0a86\t\u00dd\u0001\u00de\u0001\u00de\u0001\u00de\u0001"+
+ "\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0001\u00de\u0005"+
+ "\u00de\u0a91\b\u00de\n\u00de\f\u00de\u0a94\t\u00de\u0001\u00df\u0001\u00df"+
+ "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+
+ "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df"+
+ "\u0001\u00df\u0001\u00df\u0001\u00df\u0001\u00df\u0005\u00df\u0aa8\b\u00df"+
+ "\n\u00df\f\u00df\u0aab\t\u00df\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
+ "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
+ "\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001\u00e0\u0001"+
+ "\u00e0\u0005\u00e0\u0abd\b\u00e0\n\u00e0\f\u00e0\u0ac0\t\u00e0\u0001\u00e1"+
+ "\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1\u0001\u00e1"+
+ "\u0001\u00e1\u0001\u00e1\u0005\u00e1\u0acb\b\u00e1\n\u00e1\f\u00e1\u0ace"+
+ "\t\u00e1\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+
+ "\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001\u00e2\u0001"+
+ "\u00e2\u0005\u00e2\u0adc\b\u00e2\n\u00e2\f\u00e2\u0adf\t\u00e2\u0001\u00e3"+
+ "\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3\u0001\u00e3"+
+ "\u0003\u00e3\u0ae8\b\u00e3\u0001\u00e4\u0001\u00e4\u0001\u00e4\u0001\u00e5"+
+ "\u0001\u00e5\u0001\u00e5\u0001\u00e6\u0001\u00e6\u0001\u00e6\u0001\u00e6"+
+ "\u0001\u00e6\u0001\u00e6\u0003\u00e6\u0af6\b\u00e6\u0001\u00e7\u0001\u00e7"+
+ "\u0003\u00e7\u0afa\b\u00e7\u0001\u00e7\u0001\u00e7\u0005\u00e7\u0afe\b"+
+ "\u00e7\n\u00e7\f\u00e7\u0b01\t\u00e7\u0001\u00e8\u0001\u00e8\u0001\u00e8"+
+ "\u0001\u00e9\u0001\u00e9\u0001\u00ea\u0001\u00ea\u0001\u00ea\u0001\u00eb"+
+ "\u0001\u00eb\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+
+ "\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0005\u00ec\u0b15\b\u00ec\n\u00ec"+
+ "\f\u00ec\u0b18\t\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec"+
+ "\u0001\u00ec\u0001\u00ec\u0005\u00ec\u0b20\b\u00ec\n\u00ec\f\u00ec\u0b23"+
+ "\t\u00ec\u0001\u00ec\u0001\u00ec\u0001\u00ec\u0003\u00ec\u0b28\b\u00ec"+
+ "\u0001\u00ec\u0000\r48>\u01b2\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0"+
+ "\u01c2\u01c4\u00ed\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014"+
+ "\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPRTVXZ\\^`bdfh"+
+ "jlnprtvxz|~\u0080\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092"+
+ "\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa"+
+ "\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be\u00c0\u00c2"+
+ "\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da"+
+ "\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2"+
+ "\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106\u0108\u010a"+
+ "\u010c\u010e\u0110\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122"+
+ "\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a"+
+ "\u013c\u013e\u0140\u0142\u0144\u0146\u0148\u014a\u014c\u014e\u0150\u0152"+
+ "\u0154\u0156\u0158\u015a\u015c\u015e\u0160\u0162\u0164\u0166\u0168\u016a"+
+ "\u016c\u016e\u0170\u0172\u0174\u0176\u0178\u017a\u017c\u017e\u0180\u0182"+
+ "\u0184\u0186\u0188\u018a\u018c\u018e\u0190\u0192\u0194\u0196\u0198\u019a"+
+ "\u019c\u019e\u01a0\u01a2\u01a4\u01a6\u01a8\u01aa\u01ac\u01ae\u01b0\u01b2"+
+ "\u01b4\u01b6\u01b8\u01ba\u01bc\u01be\u01c0\u01c2\u01c4\u01c6\u01c8\u01ca"+
+ "\u01cc\u01ce\u01d0\u01d2\u01d4\u01d6\u01d8\u0000\u0004\u0001\u000038\u0005"+
+ "\u0000\u0005\u0005\b\b\u001b\u001b\u001d\u001d%%\u0002\u0000\u000e\u000e"+
+ "\u0014\u0014\u0002\u0000BB[e\u0c1b\u0000\u01da\u0001\u0000\u0000\u0000"+
+ "\u0002\u01de\u0001\u0000\u0000\u0000\u0004\u01ee\u0001\u0000\u0000\u0000"+
+ "\u0006\u01f2\u0001\u0000\u0000\u0000\b\u01f4\u0001\u0000\u0000\u0000\n"+
+ "\u01f6\u0001\u0000\u0000\u0000\f\u01fb\u0001\u0000\u0000\u0000\u000e\u01ff"+
+ "\u0001\u0000\u0000\u0000\u0010\u021e\u0001\u0000\u0000\u0000\u0012\u0220"+
+ "\u0001\u0000\u0000\u0000\u0014\u022e\u0001\u0000\u0000\u0000\u0016\u0235"+
+ "\u0001\u0000\u0000\u0000\u0018\u0237\u0001\u0000\u0000\u0000\u001a\u0239"+
+ "\u0001\u0000\u0000\u0000\u001c\u023e\u0001\u0000\u0000\u0000\u001e\u024c"+
+ "\u0001\u0000\u0000\u0000 \u0251\u0001\u0000\u0000\u0000\"\u0266\u0001"+
+ "\u0000\u0000\u0000$\u026d\u0001\u0000\u0000\u0000&\u0279\u0001\u0000\u0000"+
+ "\u0000(\u027b\u0001\u0000\u0000\u0000*\u027e\u0001\u0000\u0000\u0000,"+
+ "\u0282\u0001\u0000\u0000\u0000.\u028c\u0001\u0000\u0000\u00000\u0291\u0001"+
+ "\u0000\u0000\u00002\u029c\u0001\u0000\u0000\u00004\u029e\u0001\u0000\u0000"+
+ "\u00006\u02ae\u0001\u0000\u0000\u00008\u02b0\u0001\u0000\u0000\u0000:"+
+ "\u02c0\u0001\u0000\u0000\u0000<\u02c2\u0001\u0000\u0000\u0000>\u02c4\u0001"+
+ "\u0000\u0000\u0000@\u02d0\u0001\u0000\u0000\u0000B\u02e3\u0001\u0000\u0000"+
+ "\u0000D\u02f1\u0001\u0000\u0000\u0000F\u02f7\u0001\u0000\u0000\u0000H"+
+ "\u02f9\u0001\u0000\u0000\u0000J\u02fd\u0001\u0000\u0000\u0000L\u0303\u0001"+
+ "\u0000\u0000\u0000N\u030a\u0001\u0000\u0000\u0000P\u0314\u0001\u0000\u0000"+
+ "\u0000R\u0318\u0001\u0000\u0000\u0000T\u031d\u0001\u0000\u0000\u0000V"+
+ "\u0335\u0001\u0000\u0000\u0000X\u0337\u0001\u0000\u0000\u0000Z\u033b\u0001"+
+ "\u0000\u0000\u0000\\\u0343\u0001\u0000\u0000\u0000^\u0346\u0001\u0000"+
+ "\u0000\u0000`\u0349\u0001\u0000\u0000\u0000b\u0351\u0001\u0000\u0000\u0000"+
+ "d\u035e\u0001\u0000\u0000\u0000f\u0365\u0001\u0000\u0000\u0000h\u036a"+
+ "\u0001\u0000\u0000\u0000j\u0379\u0001\u0000\u0000\u0000l\u037b\u0001\u0000"+
+ "\u0000\u0000n\u0383\u0001\u0000\u0000\u0000p\u0388\u0001\u0000\u0000\u0000"+
+ "r\u038e\u0001\u0000\u0000\u0000t\u0392\u0001\u0000\u0000\u0000v\u0396"+
+ "\u0001\u0000\u0000\u0000x\u039b\u0001\u0000\u0000\u0000z\u039f\u0001\u0000"+
+ "\u0000\u0000|\u03b8\u0001\u0000\u0000\u0000~\u03ba\u0001\u0000\u0000\u0000"+
+ "\u0080\u03c5\u0001\u0000\u0000\u0000\u0082\u03c9\u0001\u0000\u0000\u0000"+
+ "\u0084\u03cb\u0001\u0000\u0000\u0000\u0086\u03cd\u0001\u0000\u0000\u0000"+
+ "\u0088\u03cf\u0001\u0000\u0000\u0000\u008a\u03da\u0001\u0000\u0000\u0000"+
+ "\u008c\u03df\u0001\u0000\u0000\u0000\u008e\u03ef\u0001\u0000\u0000\u0000"+
+ "\u0090\u0402\u0001\u0000\u0000\u0000\u0092\u0406\u0001\u0000\u0000\u0000"+
+ "\u0094\u0408\u0001\u0000\u0000\u0000\u0096\u0416\u0001\u0000\u0000\u0000"+
+ "\u0098\u0428\u0001\u0000\u0000\u0000\u009a\u042d\u0001\u0000\u0000\u0000"+
+ "\u009c\u0435\u0001\u0000\u0000\u0000\u009e\u0448\u0001\u0000\u0000\u0000"+
+ "\u00a0\u044d\u0001\u0000\u0000\u0000\u00a2\u0457\u0001\u0000\u0000\u0000"+
+ "\u00a4\u045a\u0001\u0000\u0000\u0000\u00a6\u0464\u0001\u0000\u0000\u0000"+
+ "\u00a8\u0468\u0001\u0000\u0000\u0000\u00aa\u046a\u0001\u0000\u0000\u0000"+
+ "\u00ac\u046c\u0001\u0000\u0000\u0000\u00ae\u0472\u0001\u0000\u0000\u0000"+
+ "\u00b0\u047f\u0001\u0000\u0000\u0000\u00b2\u0482\u0001\u0000\u0000\u0000"+
+ "\u00b4\u048b\u0001\u0000\u0000\u0000\u00b6\u048d\u0001\u0000\u0000\u0000"+
+ "\u00b8\u04c4\u0001\u0000\u0000\u0000\u00ba\u04c9\u0001\u0000\u0000\u0000"+
+ "\u00bc\u04d3\u0001\u0000\u0000\u0000\u00be\u04df\u0001\u0000\u0000\u0000"+
+ "\u00c0\u04ea\u0001\u0000\u0000\u0000\u00c2\u04f8\u0001\u0000\u0000\u0000"+
+ "\u00c4\u04fa\u0001\u0000\u0000\u0000\u00c6\u0503\u0001\u0000\u0000\u0000"+
+ "\u00c8\u0508\u0001\u0000\u0000\u0000\u00ca\u051c\u0001\u0000\u0000\u0000"+
+ "\u00cc\u051e\u0001\u0000\u0000\u0000\u00ce\u0521\u0001\u0000\u0000\u0000"+
+ "\u00d0\u052f\u0001\u0000\u0000\u0000\u00d2\u0534\u0001\u0000\u0000\u0000"+
+ "\u00d4\u053f\u0001\u0000\u0000\u0000\u00d6\u0544\u0001\u0000\u0000\u0000"+
+ "\u00d8\u0550\u0001\u0000\u0000\u0000\u00da\u0555\u0001\u0000\u0000\u0000"+
+ "\u00dc\u055d\u0001\u0000\u0000\u0000\u00de\u056b\u0001\u0000\u0000\u0000"+
+ "\u00e0\u0570\u0001\u0000\u0000\u0000\u00e2\u0582\u0001\u0000\u0000\u0000"+
+ "\u00e4\u0584\u0001\u0000\u0000\u0000\u00e6\u058a\u0001\u0000\u0000\u0000"+
+ "\u00e8\u058c\u0001\u0000\u0000\u0000\u00ea\u0594\u0001\u0000\u0000\u0000"+
+ "\u00ec\u059c\u0001\u0000\u0000\u0000\u00ee\u05a3\u0001\u0000\u0000\u0000"+
+ "\u00f0\u05a5\u0001\u0000\u0000\u0000\u00f2\u05ae\u0001\u0000\u0000\u0000"+
+ "\u00f4\u05b6\u0001\u0000\u0000\u0000\u00f6\u05b9\u0001\u0000\u0000\u0000"+
+ "\u00f8\u05bf\u0001\u0000\u0000\u0000\u00fa\u05c8\u0001\u0000\u0000\u0000"+
+ "\u00fc\u05d0\u0001\u0000\u0000\u0000\u00fe\u05d6\u0001\u0000\u0000\u0000"+
+ "\u0100\u05e0\u0001\u0000\u0000\u0000\u0102\u05e2\u0001\u0000\u0000\u0000"+
+ "\u0104\u05e8\u0001\u0000\u0000\u0000\u0106\u05f4\u0001\u0000\u0000\u0000"+
+ "\u0108\u05fb\u0001\u0000\u0000\u0000\u010a\u0609\u0001\u0000\u0000\u0000"+
+ "\u010c\u060b\u0001\u0000\u0000\u0000\u010e\u060d\u0001\u0000\u0000\u0000"+
+ "\u0110\u0611\u0001\u0000\u0000\u0000\u0112\u0615\u0001\u0000\u0000\u0000"+
+ "\u0114\u061f\u0001\u0000\u0000\u0000\u0116\u0621\u0001\u0000\u0000\u0000"+
+ "\u0118\u0627\u0001\u0000\u0000\u0000\u011a\u062f\u0001\u0000\u0000\u0000"+
+ "\u011c\u0641\u0001\u0000\u0000\u0000\u011e\u0643\u0001\u0000\u0000\u0000"+
+ "\u0120\u0649\u0001\u0000\u0000\u0000\u0122\u0658\u0001\u0000\u0000\u0000"+
+ "\u0124\u065b\u0001\u0000\u0000\u0000\u0126\u066c\u0001\u0000\u0000\u0000"+
+ "\u0128\u066e\u0001\u0000\u0000\u0000\u012a\u0670\u0001\u0000\u0000\u0000"+
+ "\u012c\u0676\u0001\u0000\u0000\u0000\u012e\u067c\u0001\u0000\u0000\u0000"+
+ "\u0130\u0686\u0001\u0000\u0000\u0000\u0132\u068a\u0001\u0000\u0000\u0000"+
+ "\u0134\u068c\u0001\u0000\u0000\u0000\u0136\u069c\u0001\u0000\u0000\u0000"+
+ "\u0138\u06ae\u0001\u0000\u0000\u0000\u013a\u06b0\u0001\u0000\u0000\u0000"+
+ "\u013c\u06b2\u0001\u0000\u0000\u0000\u013e\u06ba\u0001\u0000\u0000\u0000"+
+ "\u0140\u06c9\u0001\u0000\u0000\u0000\u0142\u06d8\u0001\u0000\u0000\u0000"+
+ "\u0144\u06de\u0001\u0000\u0000\u0000\u0146\u06e4\u0001\u0000\u0000\u0000"+
+ "\u0148\u06ea\u0001\u0000\u0000\u0000\u014a\u06ee\u0001\u0000\u0000\u0000"+
+ "\u014c\u0700\u0001\u0000\u0000\u0000\u014e\u0702\u0001\u0000\u0000\u0000"+
+ "\u0150\u0709\u0001\u0000\u0000\u0000\u0152\u0712\u0001\u0000\u0000\u0000"+
+ "\u0154\u0718\u0001\u0000\u0000\u0000\u0156\u0720\u0001\u0000\u0000\u0000"+
+ "\u0158\u0723\u0001\u0000\u0000\u0000\u015a\u072c\u0001\u0000\u0000\u0000"+
+ "\u015c\u0733\u0001\u0000\u0000\u0000\u015e\u073e\u0001\u0000\u0000\u0000"+
+ "\u0160\u0748\u0001\u0000\u0000\u0000\u0162\u076d\u0001\u0000\u0000\u0000"+
+ "\u0164\u076f\u0001\u0000\u0000\u0000\u0166\u078d\u0001\u0000\u0000\u0000"+
+ "\u0168\u0794\u0001\u0000\u0000\u0000\u016a\u0796\u0001\u0000\u0000\u0000"+
+ "\u016c\u079c\u0001\u0000\u0000\u0000\u016e\u07c6\u0001\u0000\u0000\u0000"+
+ "\u0170\u07c8\u0001\u0000\u0000\u0000\u0172\u07f1\u0001\u0000\u0000\u0000"+
+ "\u0174\u0846\u0001\u0000\u0000\u0000\u0176\u0848\u0001\u0000\u0000\u0000"+
+ "\u0178\u089a\u0001\u0000\u0000\u0000\u017a\u089f\u0001\u0000\u0000\u0000"+
+ "\u017c\u08ae\u0001\u0000\u0000\u0000\u017e\u08b0\u0001\u0000\u0000\u0000"+
+ "\u0180\u08bc\u0001\u0000\u0000\u0000\u0182\u08c8\u0001\u0000\u0000\u0000"+
+ "\u0184\u08d4\u0001\u0000\u0000\u0000\u0186\u08ed\u0001\u0000\u0000\u0000"+
+ "\u0188\u093d\u0001\u0000\u0000\u0000\u018a\u093f\u0001\u0000\u0000\u0000"+
+ "\u018c\u0982\u0001\u0000\u0000\u0000\u018e\u0984\u0001\u0000\u0000\u0000"+
+ "\u0190\u09bb\u0001\u0000\u0000\u0000\u0192\u09bd\u0001\u0000\u0000\u0000"+
+ "\u0194\u09eb\u0001\u0000\u0000\u0000\u0196\u0a03\u0001\u0000\u0000\u0000"+
+ "\u0198\u0a05\u0001\u0000\u0000\u0000\u019a\u0a0f\u0001\u0000\u0000\u0000"+
+ "\u019c\u0a16\u0001\u0000\u0000\u0000\u019e\u0a1a\u0001\u0000\u0000\u0000"+
+ "\u01a0\u0a1c\u0001\u0000\u0000\u0000\u01a2\u0a2a\u0001\u0000\u0000\u0000"+
+ "\u01a4\u0a2c\u0001\u0000\u0000\u0000\u01a6\u0a36\u0001\u0000\u0000\u0000"+
+ "\u01a8\u0a3a\u0001\u0000\u0000\u0000\u01aa\u0a3c\u0001\u0000\u0000\u0000"+
+ "\u01ac\u0a43\u0001\u0000\u0000\u0000\u01ae\u0a45\u0001\u0000\u0000\u0000"+
+ "\u01b0\u0a4e\u0001\u0000\u0000\u0000\u01b2\u0a50\u0001\u0000\u0000\u0000"+
+ "\u01b4\u0a5b\u0001\u0000\u0000\u0000\u01b6\u0a66\u0001\u0000\u0000\u0000"+
+ "\u01b8\u0a71\u0001\u0000\u0000\u0000\u01ba\u0a7c\u0001\u0000\u0000\u0000"+
+ "\u01bc\u0a87\u0001\u0000\u0000\u0000\u01be\u0a95\u0001\u0000\u0000\u0000"+
+ "\u01c0\u0aac\u0001\u0000\u0000\u0000\u01c2\u0ac1\u0001\u0000\u0000\u0000"+
+ "\u01c4\u0acf\u0001\u0000\u0000\u0000\u01c6\u0ae7\u0001\u0000\u0000\u0000"+
+ "\u01c8\u0ae9\u0001\u0000\u0000\u0000\u01ca\u0aec\u0001\u0000\u0000\u0000"+
+ "\u01cc\u0af5\u0001\u0000\u0000\u0000\u01ce\u0af9\u0001\u0000\u0000\u0000"+
+ "\u01d0\u0b02\u0001\u0000\u0000\u0000\u01d2\u0b05\u0001\u0000\u0000\u0000"+
+ "\u01d4\u0b07\u0001\u0000\u0000\u0000\u01d6\u0b0a\u0001\u0000\u0000\u0000"+
+ "\u01d8\u0b27\u0001\u0000\u0000\u0000\u01da\u01db\u0007\u0000\u0000\u0000"+
+ "\u01db\u0001\u0001\u0000\u0000\u0000\u01dc\u01df\u0003\u0004\u0002\u0000"+
+ "\u01dd\u01df\u0003\f\u0006\u0000\u01de\u01dc\u0001\u0000\u0000\u0000\u01de"+
+ "\u01dd\u0001\u0000\u0000\u0000\u01df\u0003\u0001\u0000\u0000\u0000\u01e0"+
+ "\u01e2\u0003\u00e6s\u0000\u01e1\u01e0\u0001\u0000\u0000\u0000\u01e2\u01e5"+
+ "\u0001\u0000\u0000\u0000\u01e3\u01e1\u0001\u0000\u0000\u0000\u01e3\u01e4"+
+ "\u0001\u0000\u0000\u0000\u01e4\u01e6\u0001\u0000\u0000\u0000\u01e5\u01e3"+
+ "\u0001\u0000\u0000\u0000\u01e6\u01ef\u0003\u0006\u0003\u0000\u01e7\u01e9"+
+ "\u0003\u00e6s\u0000\u01e8\u01e7\u0001\u0000\u0000\u0000\u01e9\u01ec\u0001"+
+ "\u0000\u0000\u0000\u01ea\u01e8\u0001\u0000\u0000\u0000\u01ea\u01eb\u0001"+
+ "\u0000\u0000\u0000\u01eb\u01ed\u0001\u0000\u0000\u0000\u01ec\u01ea\u0001"+
+ "\u0000\u0000\u0000\u01ed\u01ef\u0005\u0003\u0000\u0000\u01ee\u01e3\u0001"+
+ "\u0000\u0000\u0000\u01ee\u01ea\u0001\u0000\u0000\u0000\u01ef\u0005\u0001"+
+ "\u0000\u0000\u0000\u01f0\u01f3\u0003\b\u0004\u0000\u01f1\u01f3\u0003\n"+
+ "\u0005\u0000\u01f2\u01f0\u0001\u0000\u0000\u0000\u01f2\u01f1\u0001\u0000"+
+ "\u0000\u0000\u01f3\u0007\u0001\u0000\u0000\u0000\u01f4\u01f5\u0007\u0001"+
+ "\u0000\u0000\u01f5\t\u0001\u0000\u0000\u0000\u01f6\u01f7\u0007\u0002\u0000"+
+ "\u0000\u01f7\u000b\u0001\u0000\u0000\u0000\u01f8\u01fc\u0003\u000e\u0007"+
+ "\u0000\u01f9\u01fc\u0003\u001c\u000e\u0000\u01fa\u01fc\u0003\u001e\u000f"+
+ "\u0000\u01fb\u01f8\u0001\u0000\u0000\u0000\u01fb\u01f9\u0001\u0000\u0000"+
+ "\u0000\u01fb\u01fa\u0001\u0000\u0000\u0000\u01fc\r\u0001\u0000\u0000\u0000"+
+ "\u01fd\u0200\u0003\u0014\n\u0000\u01fe\u0200\u0003\u001a\r\u0000\u01ff"+
+ "\u01fd\u0001\u0000\u0000\u0000\u01ff\u01fe\u0001\u0000\u0000\u0000\u0200"+
+ "\u0205\u0001\u0000\u0000\u0000\u0201\u0204\u0003\u0012\t\u0000\u0202\u0204"+
+ "\u0003\u0018\f\u0000\u0203\u0201\u0001\u0000\u0000\u0000\u0203\u0202\u0001"+
+ "\u0000\u0000\u0000\u0204\u0207\u0001\u0000\u0000\u0000\u0205\u0203\u0001"+
+ "\u0000\u0000\u0000\u0205\u0206\u0001\u0000\u0000\u0000\u0206\u000f\u0001"+
+ "\u0000\u0000\u0000\u0207\u0205\u0001\u0000\u0000\u0000\u0208\u020a\u0003"+
+ "\u00e6s\u0000\u0209\u0208\u0001\u0000\u0000\u0000\u020a\u020d\u0001\u0000"+
+ "\u0000\u0000\u020b\u0209\u0001\u0000\u0000\u0000\u020b\u020c\u0001\u0000"+
+ "\u0000\u0000\u020c\u020e\u0001\u0000\u0000\u0000\u020d\u020b\u0001\u0000"+
+ "\u0000\u0000\u020e\u0210\u0005f\u0000\u0000\u020f\u0211\u0003*\u0015\u0000"+
+ "\u0210\u020f\u0001\u0000\u0000\u0000\u0210\u0211\u0001\u0000\u0000\u0000"+
+ "\u0211\u021f\u0001\u0000\u0000\u0000\u0212\u0213\u0003\u000e\u0007\u0000"+
+ "\u0213\u0217\u0005A\u0000\u0000\u0214\u0216\u0003\u00e6s\u0000\u0215\u0214"+
+ "\u0001\u0000\u0000\u0000\u0216\u0219\u0001\u0000\u0000\u0000\u0217\u0215"+
+ "\u0001\u0000\u0000\u0000\u0217\u0218\u0001\u0000\u0000\u0000\u0218\u021a"+
+ "\u0001\u0000\u0000\u0000\u0219\u0217\u0001\u0000\u0000\u0000\u021a\u021c"+
+ "\u0005f\u0000\u0000\u021b\u021d\u0003*\u0015\u0000\u021c\u021b\u0001\u0000"+
+ "\u0000\u0000\u021c\u021d\u0001\u0000\u0000\u0000\u021d\u021f\u0001\u0000"+
+ "\u0000\u0000\u021e\u020b\u0001\u0000\u0000\u0000\u021e\u0212\u0001\u0000"+
+ "\u0000\u0000\u021f\u0011\u0001\u0000\u0000\u0000\u0220\u0224\u0005A\u0000"+
+ "\u0000\u0221\u0223\u0003\u00e6s\u0000\u0222\u0221\u0001\u0000\u0000\u0000"+
+ "\u0223\u0226\u0001\u0000\u0000\u0000\u0224\u0222\u0001\u0000\u0000\u0000"+
+ "\u0224\u0225\u0001\u0000\u0000\u0000\u0225\u0227\u0001\u0000\u0000\u0000"+
+ "\u0226\u0224\u0001\u0000\u0000\u0000\u0227\u0229\u0005f\u0000\u0000\u0228"+
+ "\u022a\u0003*\u0015\u0000\u0229\u0228\u0001\u0000\u0000\u0000\u0229\u022a"+
+ "\u0001\u0000\u0000\u0000\u022a\u0013\u0001\u0000\u0000\u0000\u022b\u022d"+
+ "\u0003\u00e6s\u0000\u022c\u022b\u0001\u0000\u0000\u0000\u022d\u0230\u0001"+
+ "\u0000\u0000\u0000\u022e\u022c\u0001\u0000\u0000\u0000\u022e\u022f\u0001"+
+ "\u0000\u0000\u0000\u022f\u0231\u0001\u0000\u0000\u0000\u0230\u022e\u0001"+
+ "\u0000\u0000\u0000\u0231\u0233\u0005f\u0000\u0000\u0232\u0234\u0003*\u0015"+
+ "\u0000\u0233\u0232\u0001\u0000\u0000\u0000\u0233\u0234\u0001\u0000\u0000"+
+ "\u0000\u0234\u0015\u0001\u0000\u0000\u0000\u0235\u0236\u0003\u0010\b\u0000"+
+ "\u0236\u0017\u0001\u0000\u0000\u0000\u0237\u0238\u0003\u0012\t\u0000\u0238"+
+ "\u0019\u0001\u0000\u0000\u0000\u0239\u023a\u0003\u0014\n\u0000\u023a\u001b"+
+ "\u0001\u0000\u0000\u0000\u023b\u023d\u0003\u00e6s\u0000\u023c\u023b\u0001"+
+ "\u0000\u0000\u0000\u023d\u0240\u0001\u0000\u0000\u0000\u023e\u023c\u0001"+
+ "\u0000\u0000\u0000\u023e\u023f\u0001\u0000\u0000\u0000\u023f\u0241\u0001"+
+ "\u0000\u0000\u0000\u0240\u023e\u0001\u0000\u0000\u0000\u0241\u0242\u0005"+
+ "f\u0000\u0000\u0242\u001d\u0001\u0000\u0000\u0000\u0243\u0244\u0003\u0004"+
+ "\u0002\u0000\u0244\u0245\u0003 \u0010\u0000\u0245\u024d\u0001\u0000\u0000"+
+ "\u0000\u0246\u0247\u0003\u000e\u0007\u0000\u0247\u0248\u0003 \u0010\u0000"+
+ "\u0248\u024d\u0001\u0000\u0000\u0000\u0249\u024a\u0003\u001c\u000e\u0000"+
+ "\u024a\u024b\u0003 \u0010\u0000\u024b\u024d\u0001\u0000\u0000\u0000\u024c"+
+ "\u0243\u0001\u0000\u0000\u0000\u024c\u0246\u0001\u0000\u0000\u0000\u024c"+
+ "\u0249\u0001\u0000\u0000\u0000\u024d\u001f\u0001\u0000\u0000\u0000\u024e"+
+ "\u0250\u0003\u00e6s\u0000\u024f\u024e\u0001\u0000\u0000\u0000\u0250\u0253"+
+ "\u0001\u0000\u0000\u0000\u0251\u024f\u0001\u0000\u0000\u0000\u0251\u0252"+
+ "\u0001\u0000\u0000\u0000\u0252\u0254\u0001\u0000\u0000\u0000\u0253\u0251"+
+ "\u0001\u0000\u0000\u0000\u0254\u0255\u0005=\u0000\u0000\u0255\u0260\u0005"+
+ ">\u0000\u0000\u0256\u0258\u0003\u00e6s\u0000\u0257\u0256\u0001\u0000\u0000"+
+ "\u0000\u0258\u025b\u0001\u0000\u0000\u0000\u0259\u0257\u0001\u0000\u0000"+
+ "\u0000\u0259\u025a\u0001\u0000\u0000\u0000\u025a\u025c\u0001\u0000\u0000"+
+ "\u0000\u025b\u0259\u0001\u0000\u0000\u0000\u025c\u025d\u0005=\u0000\u0000"+
+ "\u025d\u025f\u0005>\u0000\u0000\u025e\u0259\u0001\u0000\u0000\u0000\u025f"+
+ "\u0262\u0001\u0000\u0000\u0000\u0260\u025e\u0001\u0000\u0000\u0000\u0260"+
+ "\u0261\u0001\u0000\u0000\u0000\u0261!\u0001\u0000\u0000\u0000\u0262\u0260"+
+ "\u0001\u0000\u0000\u0000\u0263\u0265\u0003$\u0012\u0000\u0264\u0263\u0001"+
+ "\u0000\u0000\u0000\u0265\u0268\u0001\u0000\u0000\u0000\u0266\u0264\u0001"+
+ "\u0000\u0000\u0000\u0266\u0267\u0001\u0000\u0000\u0000\u0267\u0269\u0001"+
+ "\u0000\u0000\u0000\u0268\u0266\u0001\u0000\u0000\u0000\u0269\u026b\u0005"+
+ "f\u0000\u0000\u026a\u026c\u0003&\u0013\u0000\u026b\u026a\u0001\u0000\u0000"+
+ "\u0000\u026b\u026c\u0001\u0000\u0000\u0000\u026c#\u0001\u0000\u0000\u0000"+
+ "\u026d\u026e\u0003\u00e6s\u0000\u026e%\u0001\u0000\u0000\u0000\u026f\u0270"+
+ "\u0005\u0011\u0000\u0000\u0270\u027a\u0003\u001c\u000e\u0000\u0271\u0272"+
+ "\u0005\u0011\u0000\u0000\u0272\u0276\u0003\u000e\u0007\u0000\u0273\u0275"+
+ "\u0003(\u0014\u0000\u0274\u0273\u0001\u0000\u0000\u0000\u0275\u0278\u0001"+
+ "\u0000\u0000\u0000\u0276\u0274\u0001\u0000\u0000\u0000\u0276\u0277\u0001"+
+ "\u0000\u0000\u0000\u0277\u027a\u0001\u0000\u0000\u0000\u0278\u0276\u0001"+
+ "\u0000\u0000\u0000\u0279\u026f\u0001\u0000\u0000\u0000\u0279\u0271\u0001"+
+ "\u0000\u0000\u0000\u027a\'\u0001\u0000\u0000\u0000\u027b\u027c\u0005U"+
+ "\u0000\u0000\u027c\u027d\u0003\u0016\u000b\u0000\u027d)\u0001\u0000\u0000"+
+ "\u0000\u027e\u027f\u0005D\u0000\u0000\u027f\u0280\u0003,\u0016\u0000\u0280"+
+ "\u0281\u0005C\u0000\u0000\u0281+\u0001\u0000\u0000\u0000\u0282\u0287\u0003"+
+ ".\u0017\u0000\u0283\u0284\u0005@\u0000\u0000\u0284\u0286\u0003.\u0017"+
+ "\u0000\u0285\u0283\u0001\u0000\u0000\u0000\u0286\u0289\u0001\u0000\u0000"+
+ "\u0000\u0287\u0285\u0001\u0000\u0000\u0000\u0287\u0288\u0001\u0000\u0000"+
+ "\u0000\u0288-\u0001\u0000\u0000\u0000\u0289\u0287\u0001\u0000\u0000\u0000"+
+ "\u028a\u028d\u0003\f\u0006\u0000\u028b\u028d\u00030\u0018\u0000\u028c"+
+ "\u028a\u0001\u0000\u0000\u0000\u028c\u028b\u0001\u0000\u0000\u0000\u028d"+
+ "/\u0001\u0000\u0000\u0000\u028e\u0290\u0003\u00e6s\u0000\u028f\u028e\u0001"+
+ "\u0000\u0000\u0000\u0290\u0293\u0001\u0000\u0000\u0000\u0291\u028f\u0001"+
+ "\u0000\u0000\u0000\u0291\u0292\u0001\u0000\u0000\u0000\u0292\u0294\u0001"+
+ "\u0000\u0000\u0000\u0293\u0291\u0001\u0000\u0000\u0000\u0294\u0296\u0005"+
+ "G\u0000\u0000\u0295\u0297\u00032\u0019\u0000\u0296\u0295\u0001\u0000\u0000"+
+ "\u0000\u0296\u0297\u0001\u0000\u0000\u0000\u02971\u0001\u0000\u0000\u0000"+
+ "\u0298\u0299\u0005\u0011\u0000\u0000\u0299\u029d\u0003\f\u0006\u0000\u029a"+
+ "\u029b\u0005(\u0000\u0000\u029b\u029d\u0003\f\u0006\u0000\u029c\u0298"+
+ "\u0001\u0000\u0000\u0000\u029c\u029a\u0001\u0000\u0000\u0000\u029d3\u0001"+
+ "\u0000\u0000\u0000\u029e\u029f\u0006\u001a\uffff\uffff\u0000\u029f\u02a0"+
+ "\u0005f\u0000\u0000\u02a0\u02a6\u0001\u0000\u0000\u0000\u02a1\u02a2\n"+
+ "\u0001\u0000\u0000\u02a2\u02a3\u0005A\u0000\u0000\u02a3\u02a5\u0005f\u0000"+
+ "\u0000\u02a4\u02a1\u0001\u0000\u0000\u0000\u02a5\u02a8\u0001\u0000\u0000"+
+ "\u0000\u02a6\u02a4\u0001\u0000\u0000\u0000\u02a6\u02a7\u0001\u0000\u0000"+
+ "\u0000\u02a75\u0001\u0000\u0000\u0000\u02a8\u02a6\u0001\u0000\u0000\u0000"+
+ "\u02a9\u02af\u0005f\u0000\u0000\u02aa\u02ab\u00038\u001c\u0000\u02ab\u02ac"+
+ "\u0005A\u0000\u0000\u02ac\u02ad\u0005f\u0000\u0000\u02ad\u02af\u0001\u0000"+
+ "\u0000\u0000\u02ae\u02a9\u0001\u0000\u0000\u0000\u02ae\u02aa\u0001\u0000"+
+ "\u0000\u0000\u02af7\u0001\u0000\u0000\u0000\u02b0\u02b1\u0006\u001c\uffff"+
+ "\uffff\u0000\u02b1\u02b2\u0005f\u0000\u0000\u02b2\u02b8\u0001\u0000\u0000"+
+ "\u0000\u02b3\u02b4\n\u0001\u0000\u0000\u02b4\u02b5\u0005A\u0000\u0000"+
+ "\u02b5\u02b7\u0005f\u0000\u0000\u02b6\u02b3\u0001\u0000\u0000\u0000\u02b7"+
+ "\u02ba\u0001\u0000\u0000\u0000\u02b8\u02b6\u0001\u0000\u0000\u0000\u02b8"+
+ "\u02b9\u0001\u0000\u0000\u0000\u02b99\u0001\u0000\u0000\u0000\u02ba\u02b8"+
+ "\u0001\u0000\u0000\u0000\u02bb\u02c1\u0005f\u0000\u0000\u02bc\u02bd\u0003"+
+ ">\u001f\u0000\u02bd\u02be\u0005A\u0000\u0000\u02be\u02bf\u0005f\u0000"+
+ "\u0000\u02bf\u02c1\u0001\u0000\u0000\u0000\u02c0\u02bb\u0001\u0000\u0000"+
+ "\u0000\u02c0\u02bc\u0001\u0000\u0000\u0000\u02c1;\u0001\u0000\u0000\u0000"+
+ "\u02c2\u02c3\u0005f\u0000\u0000\u02c3=\u0001\u0000\u0000\u0000\u02c4\u02c5"+
+ "\u0006\u001f\uffff\uffff\u0000\u02c5\u02c6\u0005f\u0000\u0000\u02c6\u02cc"+
+ "\u0001\u0000\u0000\u0000\u02c7\u02c8\n\u0001\u0000\u0000\u02c8\u02c9\u0005"+
+ "A\u0000\u0000\u02c9\u02cb\u0005f\u0000\u0000\u02ca\u02c7\u0001\u0000\u0000"+
+ "\u0000\u02cb\u02ce\u0001\u0000\u0000\u0000\u02cc\u02ca\u0001\u0000\u0000"+
+ "\u0000\u02cc\u02cd\u0001\u0000\u0000\u0000\u02cd?\u0001\u0000\u0000\u0000"+
+ "\u02ce\u02cc\u0001\u0000\u0000\u0000\u02cf\u02d1\u0003B!\u0000\u02d0\u02cf"+
+ "\u0001\u0000\u0000\u0000\u02d0\u02d1\u0001\u0000\u0000\u0000\u02d1\u02d5"+
+ "\u0001\u0000\u0000\u0000\u02d2\u02d4\u0003F#\u0000\u02d3\u02d2\u0001\u0000"+
+ "\u0000\u0000\u02d4\u02d7\u0001\u0000\u0000\u0000\u02d5\u02d3\u0001\u0000"+
+ "\u0000\u0000\u02d5\u02d6\u0001\u0000\u0000\u0000\u02d6\u02db\u0001\u0000"+
+ "\u0000\u0000\u02d7\u02d5\u0001\u0000\u0000\u0000\u02d8\u02da\u0003P(\u0000"+
+ "\u02d9\u02d8\u0001\u0000\u0000\u0000\u02da\u02dd\u0001\u0000\u0000\u0000"+
+ "\u02db\u02d9\u0001\u0000\u0000\u0000\u02db\u02dc\u0001\u0000\u0000\u0000"+
+ "\u02dc\u02de\u0001\u0000\u0000\u0000\u02dd\u02db\u0001\u0000\u0000\u0000"+
+ "\u02de\u02df\u0005\u0000\u0000\u0001\u02dfA\u0001\u0000\u0000\u0000\u02e0"+
+ "\u02e2\u0003D\"\u0000\u02e1\u02e0\u0001\u0000\u0000\u0000\u02e2\u02e5"+
+ "\u0001\u0000\u0000\u0000\u02e3\u02e1\u0001\u0000\u0000\u0000\u02e3\u02e4"+
+ "\u0001\u0000\u0000\u0000\u02e4\u02e6\u0001\u0000\u0000\u0000\u02e5\u02e3"+
+ "\u0001\u0000\u0000\u0000\u02e6\u02e7\u0005 \u0000\u0000\u02e7\u02ec\u0005"+
+ "f\u0000\u0000\u02e8\u02e9\u0005A\u0000\u0000\u02e9\u02eb\u0005f\u0000"+
+ "\u0000\u02ea\u02e8\u0001\u0000\u0000\u0000\u02eb\u02ee\u0001\u0000\u0000"+
+ "\u0000\u02ec\u02ea\u0001\u0000\u0000\u0000\u02ec\u02ed\u0001\u0000\u0000"+
+ "\u0000\u02ed\u02ef\u0001\u0000\u0000\u0000\u02ee\u02ec\u0001\u0000\u0000"+
+ "\u0000\u02ef\u02f0\u0005?\u0000\u0000\u02f0C\u0001\u0000\u0000\u0000\u02f1"+
+ "\u02f2\u0003\u00e6s\u0000\u02f2E\u0001\u0000\u0000\u0000\u02f3\u02f8\u0003"+
+ "H$\u0000\u02f4\u02f8\u0003J%\u0000\u02f5\u02f8\u0003L&\u0000\u02f6\u02f8"+
+ "\u0003N\'\u0000\u02f7\u02f3\u0001\u0000\u0000\u0000\u02f7\u02f4\u0001"+
+ "\u0000\u0000\u0000\u02f7\u02f5\u0001\u0000\u0000\u0000\u02f7\u02f6\u0001"+
+ "\u0000\u0000\u0000\u02f8G\u0001\u0000\u0000\u0000\u02f9\u02fa\u0005\u0019"+
+ "\u0000\u0000\u02fa\u02fb\u00036\u001b\u0000\u02fb\u02fc\u0005?\u0000\u0000"+
+ "\u02fcI\u0001\u0000\u0000\u0000\u02fd\u02fe\u0005\u0019\u0000\u0000\u02fe"+
+ "\u02ff\u00038\u001c\u0000\u02ff\u0300\u0005A\u0000\u0000\u0300\u0301\u0005"+
+ "S\u0000\u0000\u0301\u0302\u0005?\u0000\u0000\u0302K\u0001\u0000\u0000"+
+ "\u0000\u0303\u0304\u0005\u0019\u0000\u0000\u0304\u0305\u0005&\u0000\u0000"+
+ "\u0305\u0306\u00036\u001b\u0000\u0306\u0307\u0005A\u0000\u0000\u0307\u0308"+
+ "\u0005f\u0000\u0000\u0308\u0309\u0005?\u0000\u0000\u0309M\u0001\u0000"+
+ "\u0000\u0000\u030a\u030b\u0005\u0019\u0000\u0000\u030b\u030c\u0005&\u0000"+
+ "\u0000\u030c\u030d\u00036\u001b\u0000\u030d\u030e\u0005A\u0000\u0000\u030e"+
+ "\u030f\u0005S\u0000\u0000\u030f\u0310\u0005?\u0000\u0000\u0310O\u0001"+
+ "\u0000\u0000\u0000\u0311\u0315\u0003R)\u0000\u0312\u0315\u0003\u00c6c"+
+ "\u0000\u0313\u0315\u0005?\u0000\u0000\u0314\u0311\u0001\u0000\u0000\u0000"+
+ "\u0314\u0312\u0001\u0000\u0000\u0000\u0314\u0313\u0001\u0000\u0000\u0000"+
+ "\u0315Q\u0001\u0000\u0000\u0000\u0316\u0319\u0003T*\u0000\u0317\u0319"+
+ "\u0003\u00ba]\u0000\u0318\u0316\u0001\u0000\u0000\u0000\u0318\u0317\u0001"+
+ "\u0000\u0000\u0000\u0319S\u0001\u0000\u0000\u0000\u031a\u031c\u0003V+"+
+ "\u0000\u031b\u031a\u0001\u0000\u0000\u0000\u031c\u031f\u0001\u0000\u0000"+
+ "\u0000\u031d\u031b\u0001\u0000\u0000\u0000\u031d\u031e\u0001\u0000\u0000"+
+ "\u0000\u031e\u0320\u0001\u0000\u0000\u0000\u031f\u031d\u0001\u0000\u0000"+
+ "\u0000\u0320\u0321\u0005\t\u0000\u0000\u0321\u0323\u0005f\u0000\u0000"+
+ "\u0322\u0324\u0003X,\u0000\u0323\u0322\u0001\u0000\u0000\u0000\u0323\u0324"+
+ "\u0001\u0000\u0000\u0000\u0324\u0326\u0001\u0000\u0000\u0000\u0325\u0327"+
+ "\u0003\\.\u0000\u0326\u0325\u0001\u0000\u0000\u0000\u0326\u0327\u0001"+
+ "\u0000\u0000\u0000\u0327\u0329\u0001\u0000\u0000\u0000\u0328\u032a\u0003"+
+ "^/\u0000\u0329\u0328\u0001\u0000\u0000\u0000\u0329\u032a\u0001\u0000\u0000"+
+ "\u0000\u032a\u032b\u0001\u0000\u0000\u0000\u032b\u032c\u0003b1\u0000\u032c"+
+ "U\u0001\u0000\u0000\u0000\u032d\u0336\u0003\u00e6s\u0000\u032e\u0336\u0005"+
+ "#\u0000\u0000\u032f\u0336\u0005\"\u0000\u0000\u0330\u0336\u0005!\u0000"+
+ "\u0000\u0331\u0336\u0005\u0001\u0000\u0000\u0332\u0336\u0005&\u0000\u0000"+
+ "\u0333\u0336\u0005\u0012\u0000\u0000\u0334\u0336\u0005\'\u0000\u0000\u0335"+
+ "\u032d\u0001\u0000\u0000\u0000\u0335\u032e\u0001\u0000\u0000\u0000\u0335"+
+ "\u032f\u0001\u0000\u0000\u0000\u0335\u0330\u0001\u0000\u0000\u0000\u0335"+
+ "\u0331\u0001\u0000\u0000\u0000\u0335\u0332\u0001\u0000\u0000\u0000\u0335"+
+ "\u0333\u0001\u0000\u0000\u0000\u0335\u0334\u0001\u0000\u0000\u0000\u0336"+
+ "W\u0001\u0000\u0000\u0000\u0337\u0338\u0005D\u0000\u0000\u0338\u0339\u0003"+
+ "Z-\u0000\u0339\u033a\u0005C\u0000\u0000\u033aY\u0001\u0000\u0000\u0000"+
+ "\u033b\u0340\u0003\"\u0011\u0000\u033c\u033d\u0005@\u0000\u0000\u033d"+
+ "\u033f\u0003\"\u0011\u0000\u033e\u033c\u0001\u0000\u0000\u0000\u033f\u0342"+
+ "\u0001\u0000\u0000\u0000\u0340\u033e\u0001\u0000\u0000\u0000\u0340\u0341"+
+ "\u0001\u0000\u0000\u0000\u0341[\u0001\u0000\u0000\u0000\u0342\u0340\u0001"+
+ "\u0000\u0000\u0000\u0343\u0344\u0005\u0011\u0000\u0000\u0344\u0345\u0003"+
+ "\u0010\b\u0000\u0345]\u0001\u0000\u0000\u0000\u0346\u0347\u0005\u0018"+
+ "\u0000\u0000\u0347\u0348\u0003`0\u0000\u0348_\u0001\u0000\u0000\u0000"+
+ "\u0349\u034e\u0003\u0016\u000b\u0000\u034a\u034b\u0005@\u0000\u0000\u034b"+
+ "\u034d\u0003\u0016\u000b\u0000\u034c\u034a\u0001\u0000\u0000\u0000\u034d"+
+ "\u0350\u0001\u0000\u0000\u0000\u034e\u034c\u0001\u0000\u0000\u0000\u034e"+
+ "\u034f\u0001\u0000\u0000\u0000\u034fa\u0001\u0000\u0000\u0000\u0350\u034e"+
+ "\u0001\u0000\u0000\u0000\u0351\u0355\u0005;\u0000\u0000\u0352\u0354\u0003"+
+ "d2\u0000\u0353\u0352\u0001\u0000\u0000\u0000\u0354\u0357\u0001\u0000\u0000"+
+ "\u0000\u0355\u0353\u0001\u0000\u0000\u0000\u0355\u0356\u0001\u0000\u0000"+
+ "\u0000\u0356\u0358\u0001\u0000\u0000\u0000\u0357\u0355\u0001\u0000\u0000"+
+ "\u0000\u0358\u0359\u0005<\u0000\u0000\u0359c\u0001\u0000\u0000\u0000\u035a"+
+ "\u035f\u0003f3\u0000\u035b\u035f\u0003\u00aaU\u0000\u035c\u035f\u0003"+
+ "\u00acV\u0000\u035d\u035f\u0003\u00aeW\u0000\u035e\u035a\u0001\u0000\u0000"+
+ "\u0000\u035e\u035b\u0001\u0000\u0000\u0000\u035e\u035c\u0001\u0000\u0000"+
+ "\u0000\u035e\u035d\u0001\u0000\u0000\u0000\u035fe\u0001\u0000\u0000\u0000"+
+ "\u0360\u0366\u0003h4\u0000\u0361\u0366\u0003\u008cF\u0000\u0362\u0366"+
+ "\u0003R)\u0000\u0363\u0366\u0003\u00c6c\u0000\u0364\u0366\u0005?\u0000"+
+ "\u0000\u0365\u0360\u0001\u0000\u0000\u0000\u0365\u0361\u0001\u0000\u0000"+
+ "\u0000\u0365\u0362\u0001\u0000\u0000\u0000\u0365\u0363\u0001\u0000\u0000"+
+ "\u0000\u0365\u0364\u0001\u0000\u0000\u0000\u0366g\u0001\u0000\u0000\u0000"+
+ "\u0367\u0369\u0003j5\u0000\u0368\u0367\u0001\u0000\u0000\u0000\u0369\u036c"+
+ "\u0001\u0000\u0000\u0000\u036a\u0368\u0001\u0000\u0000\u0000\u036a\u036b"+
+ "\u0001\u0000\u0000\u0000\u036b\u036d\u0001\u0000\u0000\u0000\u036c\u036a"+
+ "\u0001\u0000\u0000\u0000\u036d\u036e\u0003t:\u0000\u036e\u036f\u0003l"+
+ "6\u0000\u036f\u0370\u0005?\u0000\u0000\u0370i\u0001\u0000\u0000\u0000"+
+ "\u0371\u037a\u0003\u00e6s\u0000\u0372\u037a\u0005#\u0000\u0000\u0373\u037a"+
+ "\u0005\"\u0000\u0000\u0374\u037a\u0005!\u0000\u0000\u0375\u037a\u0005"+
+ "&\u0000\u0000\u0376\u037a\u0005\u0012\u0000\u0000\u0377\u037a\u0005.\u0000"+
+ "\u0000\u0378\u037a\u00051\u0000\u0000\u0379\u0371\u0001\u0000\u0000\u0000"+
+ "\u0379\u0372\u0001\u0000\u0000\u0000\u0379\u0373\u0001\u0000\u0000\u0000"+
+ "\u0379\u0374\u0001\u0000\u0000\u0000\u0379\u0375\u0001\u0000\u0000\u0000"+
+ "\u0379\u0376\u0001\u0000\u0000\u0000\u0379\u0377\u0001\u0000\u0000\u0000"+
+ "\u0379\u0378\u0001\u0000\u0000\u0000\u037ak\u0001\u0000\u0000\u0000\u037b"+
+ "\u0380\u0003n7\u0000\u037c\u037d\u0005@\u0000\u0000\u037d\u037f\u0003"+
+ "n7\u0000\u037e\u037c\u0001\u0000\u0000\u0000\u037f\u0382\u0001\u0000\u0000"+
+ "\u0000\u0380\u037e\u0001\u0000\u0000\u0000\u0380\u0381\u0001\u0000\u0000"+
+ "\u0000\u0381m\u0001\u0000\u0000\u0000\u0382\u0380\u0001\u0000\u0000\u0000"+
+ "\u0383\u0386\u0003p8\u0000\u0384\u0385\u0005B\u0000\u0000\u0385\u0387"+
+ "\u0003r9\u0000\u0386\u0384\u0001\u0000\u0000\u0000\u0386\u0387\u0001\u0000"+
+ "\u0000\u0000\u0387o\u0001\u0000\u0000\u0000\u0388\u038a\u0005f\u0000\u0000"+
+ "\u0389\u038b\u0003 \u0010\u0000\u038a\u0389\u0001\u0000\u0000\u0000\u038a"+
+ "\u038b\u0001\u0000\u0000\u0000\u038bq\u0001\u0000\u0000\u0000\u038c\u038f"+
+ "\u0003\u019e\u00cf\u0000\u038d\u038f\u0003\u00f8|\u0000\u038e\u038c\u0001"+
+ "\u0000\u0000\u0000\u038e\u038d\u0001\u0000\u0000\u0000\u038fs\u0001\u0000"+
+ "\u0000\u0000\u0390\u0393\u0003v;\u0000\u0391\u0393\u0003x<\u0000\u0392"+
+ "\u0390\u0001\u0000\u0000\u0000\u0392\u0391\u0001\u0000\u0000\u0000\u0393"+
+ "u\u0001\u0000\u0000\u0000\u0394\u0397\u0003\u0006\u0003\u0000\u0395\u0397"+
+ "\u0005\u0003\u0000\u0000\u0396\u0394\u0001\u0000\u0000\u0000\u0396\u0395"+
+ "\u0001\u0000\u0000\u0000\u0397w\u0001\u0000\u0000\u0000\u0398\u039c\u0003"+
+ "z=\u0000\u0399\u039c\u0003\u0088D\u0000\u039a\u039c\u0003\u008aE\u0000"+
+ "\u039b\u0398\u0001\u0000\u0000\u0000\u039b\u0399\u0001\u0000\u0000\u0000"+
+ "\u039b\u039a\u0001\u0000\u0000\u0000\u039cy\u0001\u0000\u0000\u0000\u039d"+
+ "\u03a0\u0003\u0080@\u0000\u039e\u03a0\u0003\u0086C\u0000\u039f\u039d\u0001"+
+ "\u0000\u0000\u0000\u039f\u039e\u0001\u0000\u0000\u0000\u03a0\u03a5\u0001"+
+ "\u0000\u0000\u0000\u03a1\u03a4\u0003~?\u0000\u03a2\u03a4\u0003\u0084B"+
+ "\u0000\u03a3\u03a1\u0001\u0000\u0000\u0000\u03a3\u03a2\u0001\u0000\u0000"+
+ "\u0000\u03a4\u03a7\u0001\u0000\u0000\u0000\u03a5\u03a3\u0001\u0000\u0000"+
+ "\u0000\u03a5\u03a6\u0001\u0000\u0000\u0000\u03a6{\u0001\u0000\u0000\u0000"+
+ "\u03a7\u03a5\u0001\u0000\u0000\u0000\u03a8\u03aa\u0005f\u0000\u0000\u03a9"+
+ "\u03ab\u0003*\u0015\u0000\u03aa\u03a9\u0001\u0000\u0000\u0000\u03aa\u03ab"+
+ "\u0001\u0000\u0000\u0000\u03ab\u03b9\u0001\u0000\u0000\u0000\u03ac\u03ad"+
+ "\u0003z=\u0000\u03ad\u03b1\u0005A\u0000\u0000\u03ae\u03b0\u0003\u00e6"+
+ "s\u0000\u03af\u03ae\u0001\u0000\u0000\u0000\u03b0\u03b3\u0001\u0000\u0000"+
+ "\u0000\u03b1\u03af\u0001\u0000\u0000\u0000\u03b1\u03b2\u0001\u0000\u0000"+
+ "\u0000\u03b2\u03b4\u0001\u0000\u0000\u0000\u03b3\u03b1\u0001\u0000\u0000"+
+ "\u0000\u03b4\u03b6\u0005f\u0000\u0000\u03b5\u03b7\u0003*\u0015\u0000\u03b6"+
+ "\u03b5\u0001\u0000\u0000\u0000\u03b6\u03b7\u0001\u0000\u0000\u0000\u03b7"+
+ "\u03b9\u0001\u0000\u0000\u0000\u03b8\u03a8\u0001\u0000\u0000\u0000\u03b8"+
+ "\u03ac\u0001\u0000\u0000\u0000\u03b9}\u0001\u0000\u0000\u0000\u03ba\u03be"+
+ "\u0005A\u0000\u0000\u03bb\u03bd\u0003\u00e6s\u0000\u03bc\u03bb\u0001\u0000"+
+ "\u0000\u0000\u03bd\u03c0\u0001\u0000\u0000\u0000\u03be\u03bc\u0001\u0000"+
+ "\u0000\u0000\u03be\u03bf\u0001\u0000\u0000\u0000\u03bf\u03c1\u0001\u0000"+
+ "\u0000\u0000\u03c0\u03be\u0001\u0000\u0000\u0000\u03c1\u03c3\u0005f\u0000"+
+ "\u0000\u03c2\u03c4\u0003*\u0015\u0000\u03c3\u03c2\u0001\u0000\u0000\u0000"+
+ "\u03c3\u03c4\u0001\u0000\u0000\u0000\u03c4\u007f\u0001\u0000\u0000\u0000"+
+ "\u03c5\u03c7\u0005f\u0000\u0000\u03c6\u03c8\u0003*\u0015\u0000\u03c7\u03c6"+
+ "\u0001\u0000\u0000\u0000\u03c7\u03c8\u0001\u0000\u0000\u0000\u03c8\u0081"+
+ "\u0001\u0000\u0000\u0000\u03c9\u03ca\u0003|>\u0000\u03ca\u0083\u0001\u0000"+
+ "\u0000\u0000\u03cb\u03cc\u0003~?\u0000\u03cc\u0085\u0001\u0000\u0000\u0000"+
+ "\u03cd\u03ce\u0003\u0080@\u0000\u03ce\u0087\u0001\u0000\u0000\u0000\u03cf"+
+ "\u03d0\u0005f\u0000\u0000\u03d0\u0089\u0001\u0000\u0000\u0000\u03d1\u03d2"+
+ "\u0003v;\u0000\u03d2\u03d3\u0003 \u0010\u0000\u03d3\u03db\u0001\u0000"+
+ "\u0000\u0000\u03d4\u03d5\u0003z=\u0000\u03d5\u03d6\u0003 \u0010\u0000"+
+ "\u03d6\u03db\u0001\u0000\u0000\u0000\u03d7\u03d8\u0003\u0088D\u0000\u03d8"+
+ "\u03d9\u0003 \u0010\u0000\u03d9\u03db\u0001\u0000\u0000\u0000\u03da\u03d1"+
+ "\u0001\u0000\u0000\u0000\u03da\u03d4\u0001\u0000\u0000\u0000\u03da\u03d7"+
+ "\u0001\u0000\u0000\u0000\u03db\u008b\u0001\u0000\u0000\u0000\u03dc\u03de"+
+ "\u0003\u008eG\u0000\u03dd\u03dc\u0001\u0000\u0000\u0000\u03de\u03e1\u0001"+
+ "\u0000\u0000\u0000\u03df\u03dd\u0001\u0000\u0000\u0000\u03df\u03e0\u0001"+
+ "\u0000\u0000\u0000\u03e0\u03e2\u0001\u0000\u0000\u0000\u03e1\u03df\u0001"+
+ "\u0000\u0000\u0000\u03e2\u03e3\u0003\u0090H\u0000\u03e3\u03e4\u0003\u00a8"+
+ "T\u0000\u03e4\u008d\u0001\u0000\u0000\u0000\u03e5\u03f0\u0003\u00e6s\u0000"+
+ "\u03e6\u03f0\u0005#\u0000\u0000\u03e7\u03f0\u0005\"\u0000\u0000\u03e8"+
+ "\u03f0\u0005!\u0000\u0000\u03e9\u03f0\u0005\u0001\u0000\u0000\u03ea\u03f0"+
+ "\u0005&\u0000\u0000\u03eb\u03f0\u0005\u0012\u0000\u0000\u03ec\u03f0\u0005"+
+ "*\u0000\u0000\u03ed\u03f0\u0005\u001e\u0000\u0000\u03ee\u03f0\u0005\'"+
+ "\u0000\u0000\u03ef\u03e5\u0001\u0000\u0000\u0000\u03ef\u03e6\u0001\u0000"+
+ "\u0000\u0000\u03ef\u03e7\u0001\u0000\u0000\u0000\u03ef\u03e8\u0001\u0000"+
+ "\u0000\u0000\u03ef\u03e9\u0001\u0000\u0000\u0000\u03ef\u03ea\u0001\u0000"+
+ "\u0000\u0000\u03ef\u03eb\u0001\u0000\u0000\u0000\u03ef\u03ec\u0001\u0000"+
+ "\u0000\u0000\u03ef\u03ed\u0001\u0000\u0000\u0000\u03ef\u03ee\u0001\u0000"+
+ "\u0000\u0000\u03f0\u008f\u0001\u0000\u0000\u0000\u03f1\u03f2\u0003\u0092"+
+ "I\u0000\u03f2\u03f4\u0003\u0094J\u0000\u03f3\u03f5\u0003\u00a2Q\u0000"+
+ "\u03f4\u03f3\u0001\u0000\u0000\u0000\u03f4\u03f5\u0001\u0000\u0000\u0000"+
+ "\u03f5\u0403\u0001\u0000\u0000\u0000\u03f6\u03fa\u0003X,\u0000\u03f7\u03f9"+
+ "\u0003\u00e6s\u0000\u03f8\u03f7\u0001\u0000\u0000\u0000\u03f9\u03fc\u0001"+
+ "\u0000\u0000\u0000\u03fa\u03f8\u0001\u0000\u0000\u0000\u03fa\u03fb\u0001"+
+ "\u0000\u0000\u0000\u03fb\u03fd\u0001\u0000\u0000\u0000\u03fc\u03fa\u0001"+
+ "\u0000\u0000\u0000\u03fd\u03fe\u0003\u0092I\u0000\u03fe\u0400\u0003\u0094"+
+ "J\u0000\u03ff\u0401\u0003\u00a2Q\u0000\u0400\u03ff\u0001\u0000\u0000\u0000"+
+ "\u0400\u0401\u0001\u0000\u0000\u0000\u0401\u0403\u0001\u0000\u0000\u0000"+
+ "\u0402\u03f1\u0001\u0000\u0000\u0000\u0402\u03f6\u0001\u0000\u0000\u0000"+
+ "\u0403\u0091\u0001\u0000\u0000\u0000\u0404\u0407\u0003t:\u0000\u0405\u0407"+
+ "\u00050\u0000\u0000\u0406\u0404\u0001\u0000\u0000\u0000\u0406\u0405\u0001"+
+ "\u0000\u0000\u0000\u0407\u0093\u0001\u0000\u0000\u0000\u0408\u0409\u0005"+
+ "f\u0000\u0000\u0409\u040b\u00059\u0000\u0000\u040a\u040c\u0003\u0096K"+
+ "\u0000\u040b\u040a\u0001\u0000\u0000\u0000\u040b\u040c\u0001\u0000\u0000"+
+ "\u0000\u040c\u040d\u0001\u0000\u0000\u0000\u040d\u040f\u0005:\u0000\u0000"+
+ "\u040e\u0410\u0003 \u0010\u0000\u040f\u040e\u0001\u0000\u0000\u0000\u040f"+
+ "\u0410\u0001\u0000\u0000\u0000\u0410\u0095\u0001\u0000\u0000\u0000\u0411"+
+ "\u0412\u0003\u0098L\u0000\u0412\u0413\u0005@\u0000\u0000\u0413\u0414\u0003"+
+ "\u009eO\u0000\u0414\u0417\u0001\u0000\u0000\u0000\u0415\u0417\u0003\u009e"+
+ "O\u0000\u0416\u0411\u0001\u0000\u0000\u0000\u0416\u0415\u0001\u0000\u0000"+
+ "\u0000\u0417\u0097\u0001\u0000\u0000\u0000\u0418\u041d\u0003\u009aM\u0000"+
+ "\u0419\u041a\u0005@\u0000\u0000\u041a\u041c\u0003\u009aM\u0000\u041b\u0419"+
+ "\u0001\u0000\u0000\u0000\u041c\u041f\u0001\u0000\u0000\u0000\u041d\u041b"+
+ "\u0001\u0000\u0000\u0000\u041d\u041e\u0001\u0000\u0000\u0000\u041e\u0429"+
+ "\u0001\u0000\u0000\u0000\u041f\u041d\u0001\u0000\u0000\u0000\u0420\u0425"+
+ "\u0003\u00a0P\u0000\u0421\u0422\u0005@\u0000\u0000\u0422\u0424\u0003\u009a"+
+ "M\u0000\u0423\u0421\u0001\u0000\u0000\u0000\u0424\u0427\u0001\u0000\u0000"+
+ "\u0000\u0425\u0423\u0001\u0000\u0000\u0000\u0425\u0426\u0001\u0000\u0000"+
+ "\u0000\u0426\u0429\u0001\u0000\u0000\u0000\u0427\u0425\u0001\u0000\u0000"+
+ "\u0000\u0428\u0418\u0001\u0000\u0000\u0000\u0428\u0420\u0001\u0000\u0000"+
+ "\u0000\u0429\u0099\u0001\u0000\u0000\u0000\u042a\u042c\u0003\u009cN\u0000"+
+ "\u042b\u042a\u0001\u0000\u0000\u0000\u042c\u042f\u0001\u0000\u0000\u0000"+
+ "\u042d\u042b\u0001\u0000\u0000\u0000\u042d\u042e\u0001\u0000\u0000\u0000"+
+ "\u042e\u0430\u0001\u0000\u0000\u0000\u042f\u042d\u0001\u0000\u0000\u0000"+
+ "\u0430\u0431\u0003t:\u0000\u0431\u0432\u0003p8\u0000\u0432\u009b\u0001"+
+ "\u0000\u0000\u0000\u0433\u0436\u0003\u00e6s\u0000\u0434\u0436\u0005\u0012"+
+ "\u0000\u0000\u0435\u0433\u0001\u0000\u0000\u0000\u0435\u0434\u0001\u0000"+
+ "\u0000\u0000\u0436\u009d\u0001\u0000\u0000\u0000\u0437\u0439\u0003\u009c"+
+ "N\u0000\u0438\u0437\u0001\u0000\u0000\u0000\u0439\u043c\u0001\u0000\u0000"+
+ "\u0000\u043a\u0438\u0001\u0000\u0000\u0000\u043a\u043b\u0001\u0000\u0000"+
+ "\u0000\u043b\u043d\u0001\u0000\u0000\u0000\u043c\u043a\u0001\u0000\u0000"+
+ "\u0000\u043d\u0441\u0003t:\u0000\u043e\u0440\u0003\u00e6s\u0000\u043f"+
+ "\u043e\u0001\u0000\u0000\u0000\u0440\u0443\u0001\u0000\u0000\u0000\u0441"+
+ "\u043f\u0001\u0000\u0000\u0000\u0441\u0442\u0001\u0000\u0000\u0000\u0442"+
+ "\u0444\u0001\u0000\u0000\u0000\u0443\u0441\u0001\u0000\u0000\u0000\u0444"+
+ "\u0445\u0005h\u0000\u0000\u0445\u0446\u0003p8\u0000\u0446\u0449\u0001"+
+ "\u0000\u0000\u0000\u0447\u0449\u0003\u009aM\u0000\u0448\u043a\u0001\u0000"+
+ "\u0000\u0000\u0448\u0447\u0001\u0000\u0000\u0000\u0449\u009f\u0001\u0000"+
+ "\u0000\u0000\u044a\u044c\u0003\u00e6s\u0000\u044b\u044a\u0001\u0000\u0000"+
+ "\u0000\u044c\u044f\u0001\u0000\u0000\u0000\u044d\u044b\u0001\u0000\u0000"+
+ "\u0000\u044d\u044e\u0001\u0000\u0000\u0000\u044e\u0450\u0001\u0000\u0000"+
+ "\u0000\u044f\u044d\u0001\u0000\u0000\u0000\u0450\u0453\u0003t:\u0000\u0451"+
+ "\u0452\u0005f\u0000\u0000\u0452\u0454\u0005A\u0000\u0000\u0453\u0451\u0001"+
+ "\u0000\u0000\u0000\u0453\u0454\u0001\u0000\u0000\u0000\u0454\u0455\u0001"+
+ "\u0000\u0000\u0000\u0455\u0456\u0005+\u0000\u0000\u0456\u00a1\u0001\u0000"+
+ "\u0000\u0000\u0457\u0458\u0005-\u0000\u0000\u0458\u0459\u0003\u00a4R\u0000"+
+ "\u0459\u00a3\u0001\u0000\u0000\u0000\u045a\u045f\u0003\u00a6S\u0000\u045b"+
+ "\u045c\u0005@\u0000\u0000\u045c\u045e\u0003\u00a6S\u0000\u045d\u045b\u0001"+
+ "\u0000\u0000\u0000\u045e\u0461\u0001\u0000\u0000\u0000\u045f\u045d\u0001"+
+ "\u0000\u0000\u0000\u045f\u0460\u0001\u0000\u0000\u0000\u0460\u00a5\u0001"+
+ "\u0000\u0000\u0000\u0461\u045f\u0001\u0000\u0000\u0000\u0462\u0465\u0003"+
+ "\u0010\b\u0000\u0463\u0465\u0003\u001c\u000e\u0000\u0464\u0462\u0001\u0000"+
+ "\u0000\u0000\u0464\u0463\u0001\u0000\u0000\u0000\u0465\u00a7\u0001\u0000"+
+ "\u0000\u0000\u0466\u0469\u0003\u00fc~\u0000\u0467\u0469\u0005?\u0000\u0000"+
+ "\u0468\u0466\u0001\u0000\u0000\u0000\u0468\u0467\u0001\u0000\u0000\u0000"+
+ "\u0469\u00a9\u0001\u0000\u0000\u0000\u046a\u046b\u0003\u00fc~\u0000\u046b"+
+ "\u00ab\u0001\u0000\u0000\u0000\u046c\u046d\u0005&\u0000\u0000\u046d\u046e"+
+ "\u0003\u00fc~\u0000\u046e\u00ad\u0001\u0000\u0000\u0000\u046f\u0471\u0003"+
+ "\u00b0X\u0000\u0470\u046f\u0001\u0000\u0000\u0000\u0471\u0474\u0001\u0000"+
+ "\u0000\u0000\u0472\u0470\u0001\u0000\u0000\u0000\u0472\u0473\u0001\u0000"+
+ "\u0000\u0000\u0473\u0475\u0001\u0000\u0000\u0000\u0474\u0472\u0001\u0000"+
+ "\u0000\u0000\u0475\u0477\u0003\u00b2Y\u0000\u0476\u0478\u0003\u00a2Q\u0000"+
+ "\u0477\u0476\u0001\u0000\u0000\u0000\u0477\u0478\u0001\u0000\u0000\u0000"+
+ "\u0478\u0479\u0001\u0000\u0000\u0000\u0479\u047a\u0003\u00b6[\u0000\u047a"+
+ "\u00af\u0001\u0000\u0000\u0000\u047b\u0480\u0003\u00e6s\u0000\u047c\u0480"+
+ "\u0005#\u0000\u0000\u047d\u0480\u0005\"\u0000\u0000\u047e\u0480\u0005"+
+ "!\u0000\u0000\u047f\u047b\u0001\u0000\u0000\u0000\u047f\u047c\u0001\u0000"+
+ "\u0000\u0000\u047f\u047d\u0001\u0000\u0000\u0000\u047f\u047e\u0001\u0000"+
+ "\u0000\u0000\u0480\u00b1\u0001\u0000\u0000\u0000\u0481\u0483\u0003X,\u0000"+
+ "\u0482\u0481\u0001\u0000\u0000\u0000\u0482\u0483\u0001\u0000\u0000\u0000"+
+ "\u0483\u0484\u0001\u0000\u0000\u0000\u0484\u0485\u0003\u00b4Z\u0000\u0485"+
+ "\u0487\u00059\u0000\u0000\u0486\u0488\u0003\u0096K\u0000\u0487\u0486\u0001"+
+ "\u0000\u0000\u0000\u0487\u0488\u0001\u0000\u0000\u0000\u0488\u0489\u0001"+
+ "\u0000\u0000\u0000\u0489\u048a\u0005:\u0000\u0000\u048a\u00b3\u0001\u0000"+
+ "\u0000\u0000\u048b\u048c\u0005f\u0000\u0000\u048c\u00b5\u0001\u0000\u0000"+
+ "\u0000\u048d\u048f\u0005;\u0000\u0000\u048e\u0490\u0003\u00b8\\\u0000"+
+ "\u048f\u048e\u0001\u0000\u0000\u0000\u048f\u0490\u0001\u0000\u0000\u0000"+
+ "\u0490\u0492\u0001\u0000\u0000\u0000\u0491\u0493\u0003\u00fe\u007f\u0000"+
+ "\u0492\u0491\u0001\u0000\u0000\u0000\u0492\u0493\u0001\u0000\u0000\u0000"+
+ "\u0493\u0494\u0001\u0000\u0000\u0000\u0494\u0495\u0005<\u0000\u0000\u0495"+
+ "\u00b7\u0001\u0000\u0000\u0000\u0496\u0498\u0003*\u0015\u0000\u0497\u0496"+
+ "\u0001\u0000\u0000\u0000\u0497\u0498\u0001\u0000\u0000\u0000\u0498\u0499"+
+ "\u0001\u0000\u0000\u0000\u0499\u049a\u0005+\u0000\u0000\u049a\u049c\u0005"+
+ "9\u0000\u0000\u049b\u049d\u0003\u018e\u00c7\u0000\u049c\u049b\u0001\u0000"+
+ "\u0000\u0000\u049c\u049d\u0001\u0000\u0000\u0000\u049d\u049e\u0001\u0000"+
+ "\u0000\u0000\u049e\u049f\u0005:\u0000\u0000\u049f\u04c5\u0005?\u0000\u0000"+
+ "\u04a0\u04a2\u0003*\u0015\u0000\u04a1\u04a0\u0001\u0000\u0000\u0000\u04a1"+
+ "\u04a2\u0001\u0000\u0000\u0000\u04a2\u04a3\u0001\u0000\u0000\u0000\u04a3"+
+ "\u04a4\u0005(\u0000\u0000\u04a4\u04a6\u00059\u0000\u0000\u04a5\u04a7\u0003"+
+ "\u018e\u00c7\u0000\u04a6\u04a5\u0001\u0000\u0000\u0000\u04a6\u04a7\u0001"+
+ "\u0000\u0000\u0000\u04a7\u04a8\u0001\u0000\u0000\u0000\u04a8\u04a9\u0005"+
+ ":\u0000\u0000\u04a9\u04c5\u0005?\u0000\u0000\u04aa\u04ab\u0003:\u001d"+
+ "\u0000\u04ab\u04ad\u0005A\u0000\u0000\u04ac\u04ae\u0003*\u0015\u0000\u04ad"+
+ "\u04ac\u0001\u0000\u0000\u0000\u04ad\u04ae\u0001\u0000\u0000\u0000\u04ae"+
+ "\u04af\u0001\u0000\u0000\u0000\u04af\u04b0\u0005(\u0000\u0000\u04b0\u04b2"+
+ "\u00059\u0000\u0000\u04b1\u04b3\u0003\u018e\u00c7\u0000\u04b2\u04b1\u0001"+
+ "\u0000\u0000\u0000\u04b2\u04b3\u0001\u0000\u0000\u0000\u04b3\u04b4\u0001"+
+ "\u0000\u0000\u0000\u04b4\u04b5\u0005:\u0000\u0000\u04b5\u04b6\u0005?\u0000"+
+ "\u0000\u04b6\u04c5\u0001\u0000\u0000\u0000\u04b7\u04b8\u0003\u0160\u00b0"+
+ "\u0000\u04b8\u04ba\u0005A\u0000\u0000\u04b9\u04bb\u0003*\u0015\u0000\u04ba"+
+ "\u04b9\u0001\u0000\u0000\u0000\u04ba\u04bb\u0001\u0000\u0000\u0000\u04bb"+
+ "\u04bc\u0001\u0000\u0000\u0000\u04bc\u04bd\u0005(\u0000\u0000\u04bd\u04bf"+
+ "\u00059\u0000\u0000\u04be\u04c0\u0003\u018e\u00c7\u0000\u04bf\u04be\u0001"+
+ "\u0000\u0000\u0000\u04bf\u04c0\u0001\u0000\u0000\u0000\u04c0\u04c1\u0001"+
+ "\u0000\u0000\u0000\u04c1\u04c2\u0005:\u0000\u0000\u04c2\u04c3\u0005?\u0000"+
+ "\u0000\u04c3\u04c5\u0001\u0000\u0000\u0000\u04c4\u0497\u0001\u0000\u0000"+
+ "\u0000\u04c4\u04a1\u0001\u0000\u0000\u0000\u04c4\u04aa\u0001\u0000\u0000"+
+ "\u0000\u04c4\u04b7\u0001\u0000\u0000\u0000\u04c5\u00b9\u0001\u0000\u0000"+
+ "\u0000\u04c6\u04c8\u0003V+\u0000\u04c7\u04c6\u0001\u0000\u0000\u0000\u04c8"+
+ "\u04cb\u0001\u0000\u0000\u0000\u04c9\u04c7\u0001\u0000\u0000\u0000\u04c9"+
+ "\u04ca\u0001\u0000\u0000\u0000\u04ca\u04cc\u0001\u0000\u0000\u0000\u04cb"+
+ "\u04c9\u0001\u0000\u0000\u0000\u04cc\u04cd\u0005\u0010\u0000\u0000\u04cd"+
+ "\u04cf\u0005f\u0000\u0000\u04ce\u04d0\u0003^/\u0000\u04cf\u04ce\u0001"+
+ "\u0000\u0000\u0000\u04cf\u04d0\u0001\u0000\u0000\u0000\u04d0\u04d1\u0001"+
+ "\u0000\u0000\u0000\u04d1\u04d2\u0003\u00bc^\u0000\u04d2\u00bb\u0001\u0000"+
+ "\u0000\u0000\u04d3\u04d5\u0005;\u0000\u0000\u04d4\u04d6\u0003\u00be_\u0000"+
+ "\u04d5\u04d4\u0001\u0000\u0000\u0000\u04d5\u04d6\u0001\u0000\u0000\u0000"+
+ "\u04d6\u04d8\u0001\u0000\u0000\u0000\u04d7\u04d9\u0005@\u0000\u0000\u04d8"+
+ "\u04d7\u0001\u0000\u0000\u0000\u04d8\u04d9\u0001\u0000\u0000\u0000\u04d9"+
+ "\u04db\u0001\u0000\u0000\u0000\u04da\u04dc\u0003\u00c4b\u0000\u04db\u04da"+
+ "\u0001\u0000\u0000\u0000\u04db\u04dc\u0001\u0000\u0000\u0000\u04dc\u04dd"+
+ "\u0001\u0000\u0000\u0000\u04dd\u04de\u0005<\u0000\u0000\u04de\u00bd\u0001"+
+ "\u0000\u0000\u0000\u04df\u04e4\u0003\u00c0`\u0000\u04e0\u04e1\u0005@\u0000"+
+ "\u0000\u04e1\u04e3\u0003\u00c0`\u0000\u04e2\u04e0\u0001\u0000\u0000\u0000"+
+ "\u04e3\u04e6\u0001\u0000\u0000\u0000\u04e4\u04e2\u0001\u0000\u0000\u0000"+
+ "\u04e4\u04e5\u0001\u0000\u0000\u0000\u04e5\u00bf\u0001\u0000\u0000\u0000"+
+ "\u04e6\u04e4\u0001\u0000\u0000\u0000\u04e7\u04e9\u0003\u00c2a\u0000\u04e8"+
+ "\u04e7\u0001\u0000\u0000\u0000\u04e9\u04ec\u0001\u0000\u0000\u0000\u04ea"+
+ "\u04e8\u0001\u0000\u0000\u0000\u04ea\u04eb\u0001\u0000\u0000\u0000\u04eb"+
+ "\u04ed\u0001\u0000\u0000\u0000\u04ec\u04ea\u0001\u0000\u0000\u0000\u04ed"+
+ "\u04f3\u0005f\u0000\u0000\u04ee\u04f0\u00059\u0000\u0000\u04ef\u04f1\u0003"+
+ "\u018e\u00c7\u0000\u04f0\u04ef\u0001\u0000\u0000\u0000\u04f0\u04f1\u0001"+
+ "\u0000\u0000\u0000\u04f1\u04f2\u0001\u0000\u0000\u0000\u04f2\u04f4\u0005"+
+ ":\u0000\u0000\u04f3\u04ee\u0001\u0000\u0000\u0000\u04f3\u04f4\u0001\u0000"+
+ "\u0000\u0000\u04f4\u04f6\u0001\u0000\u0000\u0000\u04f5\u04f7\u0003b1\u0000"+
+ "\u04f6\u04f5\u0001\u0000\u0000\u0000\u04f6\u04f7\u0001\u0000\u0000\u0000"+
+ "\u04f7\u00c1\u0001\u0000\u0000\u0000\u04f8\u04f9\u0003\u00e6s\u0000\u04f9"+
+ "\u00c3\u0001\u0000\u0000\u0000\u04fa\u04fe\u0005?\u0000\u0000\u04fb\u04fd"+
+ "\u0003d2\u0000\u04fc\u04fb\u0001\u0000\u0000\u0000\u04fd\u0500\u0001\u0000"+
+ "\u0000\u0000\u04fe\u04fc\u0001\u0000\u0000\u0000\u04fe\u04ff\u0001\u0000"+
+ "\u0000\u0000\u04ff\u00c5\u0001\u0000\u0000\u0000\u0500\u04fe\u0001\u0000"+
+ "\u0000\u0000\u0501\u0504\u0003\u00c8d\u0000\u0502\u0504\u0003\u00dam\u0000"+
+ "\u0503\u0501\u0001\u0000\u0000\u0000\u0503\u0502\u0001\u0000\u0000\u0000"+
+ "\u0504\u00c7\u0001\u0000\u0000\u0000\u0505\u0507\u0003\u00cae\u0000\u0506"+
+ "\u0505\u0001\u0000\u0000\u0000\u0507\u050a\u0001\u0000\u0000\u0000\u0508"+
+ "\u0506\u0001\u0000\u0000\u0000\u0508\u0509\u0001\u0000\u0000\u0000\u0509"+
+ "\u050b\u0001\u0000\u0000\u0000\u050a\u0508\u0001\u0000\u0000\u0000\u050b"+
+ "\u050c\u0005\u001c\u0000\u0000\u050c\u050e\u0005f\u0000\u0000\u050d\u050f"+
+ "\u0003X,\u0000\u050e\u050d\u0001\u0000\u0000\u0000\u050e\u050f\u0001\u0000"+
+ "\u0000\u0000\u050f\u0511\u0001\u0000\u0000\u0000\u0510\u0512\u0003\u00cc"+
+ "f\u0000\u0511\u0510\u0001\u0000\u0000\u0000\u0511\u0512\u0001\u0000\u0000"+
+ "\u0000\u0512\u0513\u0001\u0000\u0000\u0000\u0513\u0514\u0003\u00ceg\u0000"+
+ "\u0514\u00c9\u0001\u0000\u0000\u0000\u0515\u051d\u0003\u00e6s\u0000\u0516"+
+ "\u051d\u0005#\u0000\u0000\u0517\u051d\u0005\"\u0000\u0000\u0518\u051d"+
+ "\u0005!\u0000\u0000\u0519\u051d\u0005\u0001\u0000\u0000\u051a\u051d\u0005"+
+ "&\u0000\u0000\u051b\u051d\u0005\'\u0000\u0000\u051c\u0515\u0001\u0000"+
+ "\u0000\u0000\u051c\u0516\u0001\u0000\u0000\u0000\u051c\u0517\u0001\u0000"+
+ "\u0000\u0000\u051c\u0518\u0001\u0000\u0000\u0000\u051c\u0519\u0001\u0000"+
+ "\u0000\u0000\u051c\u051a\u0001\u0000\u0000\u0000\u051c\u051b\u0001\u0000"+
+ "\u0000\u0000\u051d\u00cb\u0001\u0000\u0000\u0000\u051e\u051f\u0005\u0011"+
+ "\u0000\u0000\u051f\u0520\u0003`0\u0000\u0520\u00cd\u0001\u0000\u0000\u0000"+
+ "\u0521\u0525\u0005;\u0000\u0000\u0522\u0524\u0003\u00d0h\u0000\u0523\u0522"+
+ "\u0001\u0000\u0000\u0000\u0524\u0527\u0001\u0000\u0000\u0000\u0525\u0523"+
+ "\u0001\u0000\u0000\u0000\u0525\u0526\u0001\u0000\u0000\u0000\u0526\u0528"+
+ "\u0001\u0000\u0000\u0000\u0527\u0525\u0001\u0000\u0000\u0000\u0528\u0529"+
+ "\u0005<\u0000\u0000\u0529\u00cf\u0001\u0000\u0000\u0000\u052a\u0530\u0003"+
+ "\u00d2i\u0000\u052b\u0530\u0003\u00d6k\u0000\u052c\u0530\u0003R)\u0000"+
+ "\u052d\u0530\u0003\u00c6c\u0000\u052e\u0530\u0005?\u0000\u0000\u052f\u052a"+
+ "\u0001\u0000\u0000\u0000\u052f\u052b\u0001\u0000\u0000\u0000\u052f\u052c"+
+ "\u0001\u0000\u0000\u0000\u052f\u052d\u0001\u0000\u0000\u0000\u052f\u052e"+
+ "\u0001\u0000\u0000\u0000\u0530\u00d1\u0001\u0000\u0000\u0000\u0531\u0533"+
+ "\u0003\u00d4j\u0000\u0532\u0531\u0001\u0000\u0000\u0000\u0533\u0536\u0001"+
+ "\u0000\u0000\u0000\u0534\u0532\u0001\u0000\u0000\u0000\u0534\u0535\u0001"+
+ "\u0000\u0000\u0000\u0535\u0537\u0001\u0000\u0000\u0000\u0536\u0534\u0001"+
+ "\u0000\u0000\u0000\u0537\u0538\u0003t:\u0000\u0538\u0539\u0003l6\u0000"+
+ "\u0539\u053a\u0005?\u0000\u0000\u053a\u00d3\u0001\u0000\u0000\u0000\u053b"+
+ "\u0540\u0003\u00e6s\u0000\u053c\u0540\u0005#\u0000\u0000\u053d\u0540\u0005"+
+ "&\u0000\u0000\u053e\u0540\u0005\u0012\u0000\u0000\u053f\u053b\u0001\u0000"+
+ "\u0000\u0000\u053f\u053c\u0001\u0000\u0000\u0000\u053f\u053d\u0001\u0000"+
+ "\u0000\u0000\u053f\u053e\u0001\u0000\u0000\u0000\u0540\u00d5\u0001\u0000"+
+ "\u0000\u0000\u0541\u0543\u0003\u00d8l\u0000\u0542\u0541\u0001\u0000\u0000"+
+ "\u0000\u0543\u0546\u0001\u0000\u0000\u0000\u0544\u0542\u0001\u0000\u0000"+
+ "\u0000\u0544\u0545\u0001\u0000\u0000\u0000\u0545\u0547\u0001\u0000\u0000"+
+ "\u0000\u0546\u0544\u0001\u0000\u0000\u0000\u0547\u0548\u0003\u0090H\u0000"+
+ "\u0548\u0549\u0003\u00a8T\u0000\u0549\u00d7\u0001\u0000\u0000\u0000\u054a"+
+ "\u0551\u0003\u00e6s\u0000\u054b\u0551\u0005#\u0000\u0000\u054c\u0551\u0005"+
+ "\u0001\u0000\u0000\u054d\u0551\u0005\f\u0000\u0000\u054e\u0551\u0005&"+
+ "\u0000\u0000\u054f\u0551\u0005\'\u0000\u0000\u0550\u054a\u0001\u0000\u0000"+
+ "\u0000\u0550\u054b\u0001\u0000\u0000\u0000\u0550\u054c\u0001\u0000\u0000"+
+ "\u0000\u0550\u054d\u0001\u0000\u0000\u0000\u0550\u054e\u0001\u0000\u0000"+
+ "\u0000\u0550\u054f\u0001\u0000\u0000\u0000\u0551\u00d9\u0001\u0000\u0000"+
+ "\u0000\u0552\u0554\u0003\u00cae\u0000\u0553\u0552\u0001\u0000\u0000\u0000"+
+ "\u0554\u0557\u0001\u0000\u0000\u0000\u0555\u0553\u0001\u0000\u0000\u0000"+
+ "\u0555\u0556\u0001\u0000\u0000\u0000\u0556\u0558\u0001\u0000\u0000\u0000"+
+ "\u0557\u0555\u0001\u0000\u0000\u0000\u0558\u0559\u0005g\u0000\u0000\u0559"+
+ "\u055a\u0005\u001c\u0000\u0000\u055a\u055b\u0005f\u0000\u0000\u055b\u055c"+
+ "\u0003\u00dcn\u0000\u055c\u00db\u0001\u0000\u0000\u0000\u055d\u0561\u0005"+
+ ";\u0000\u0000\u055e\u0560\u0003\u00deo\u0000\u055f\u055e\u0001\u0000\u0000"+
+ "\u0000\u0560\u0563\u0001\u0000\u0000\u0000\u0561\u055f\u0001\u0000\u0000"+
+ "\u0000\u0561\u0562\u0001\u0000\u0000\u0000\u0562\u0564\u0001\u0000\u0000"+
+ "\u0000\u0563\u0561\u0001\u0000\u0000\u0000\u0564\u0565\u0005<\u0000\u0000"+
+ "\u0565\u00dd\u0001\u0000\u0000\u0000\u0566\u056c\u0003\u00e0p\u0000\u0567"+
+ "\u056c\u0003\u00d2i\u0000\u0568\u056c\u0003R)\u0000\u0569\u056c\u0003"+
+ "\u00c6c\u0000\u056a\u056c\u0005?\u0000\u0000\u056b\u0566\u0001\u0000\u0000"+
+ "\u0000\u056b\u0567\u0001\u0000\u0000\u0000\u056b\u0568\u0001\u0000\u0000"+
+ "\u0000\u056b\u0569\u0001\u0000\u0000\u0000\u056b\u056a\u0001\u0000\u0000"+
+ "\u0000\u056c\u00df\u0001\u0000\u0000\u0000\u056d\u056f\u0003\u00e2q\u0000"+
+ "\u056e\u056d\u0001\u0000\u0000\u0000\u056f\u0572\u0001\u0000\u0000\u0000"+
+ "\u0570\u056e\u0001\u0000\u0000\u0000\u0570\u0571\u0001\u0000\u0000\u0000"+
+ "\u0571\u0573\u0001\u0000\u0000\u0000\u0572\u0570\u0001\u0000\u0000\u0000"+
+ "\u0573\u0574\u0003t:\u0000\u0574\u0575\u0005f\u0000\u0000\u0575\u0576"+
+ "\u00059\u0000\u0000\u0576\u0578\u0005:\u0000\u0000\u0577\u0579\u0003 "+
+ "\u0010\u0000\u0578\u0577\u0001\u0000\u0000\u0000\u0578\u0579\u0001\u0000"+
+ "\u0000\u0000\u0579\u057b\u0001\u0000\u0000\u0000\u057a\u057c\u0003\u00e4"+
+ "r\u0000\u057b\u057a\u0001\u0000\u0000\u0000\u057b\u057c\u0001\u0000\u0000"+
+ "\u0000\u057c\u057d\u0001\u0000\u0000\u0000\u057d\u057e\u0005?\u0000\u0000"+
+ "\u057e\u00e1\u0001\u0000\u0000\u0000\u057f\u0583\u0003\u00e6s\u0000\u0580"+
+ "\u0583\u0005#\u0000\u0000\u0581\u0583\u0005\u0001\u0000\u0000\u0582\u057f"+
+ "\u0001\u0000\u0000\u0000\u0582\u0580\u0001\u0000\u0000\u0000\u0582\u0581"+
+ "\u0001\u0000\u0000\u0000\u0583\u00e3\u0001\u0000\u0000\u0000\u0584\u0585"+
+ "\u0005\f\u0000\u0000\u0585\u0586\u0003\u00eew\u0000\u0586\u00e5\u0001"+
+ "\u0000\u0000\u0000\u0587\u058b\u0003\u00e8t\u0000\u0588\u058b\u0003\u00f4"+
+ "z\u0000\u0589\u058b\u0003\u00f6{\u0000\u058a\u0587\u0001\u0000\u0000\u0000"+
+ "\u058a\u0588\u0001\u0000\u0000\u0000\u058a\u0589\u0001\u0000\u0000\u0000"+
+ "\u058b\u00e7\u0001\u0000\u0000\u0000\u058c\u058d\u0005g\u0000\u0000\u058d"+
+ "\u058e\u00036\u001b\u0000\u058e\u0590\u00059\u0000\u0000\u058f\u0591\u0003"+
+ "\u00eau\u0000\u0590\u058f\u0001\u0000\u0000\u0000\u0590\u0591\u0001\u0000"+
+ "\u0000\u0000\u0591\u0592\u0001\u0000\u0000\u0000\u0592\u0593\u0005:\u0000"+
+ "\u0000\u0593\u00e9\u0001\u0000\u0000\u0000\u0594\u0599\u0003\u00ecv\u0000"+
+ "\u0595\u0596\u0005@\u0000\u0000\u0596\u0598\u0003\u00ecv\u0000\u0597\u0595"+
+ "\u0001\u0000\u0000\u0000\u0598\u059b\u0001\u0000\u0000\u0000\u0599\u0597"+
+ "\u0001\u0000\u0000\u0000\u0599\u059a\u0001\u0000\u0000\u0000\u059a\u00eb"+
+ "\u0001\u0000\u0000\u0000\u059b\u0599\u0001\u0000\u0000\u0000\u059c\u059d"+
+ "\u0005f\u0000\u0000\u059d\u059e\u0005B\u0000\u0000\u059e\u059f\u0003\u00ee"+
+ "w\u0000\u059f\u00ed\u0001\u0000\u0000\u0000\u05a0\u05a4\u0003\u01b0\u00d8"+
+ "\u0000\u05a1\u05a4\u0003\u00f0x\u0000\u05a2\u05a4\u0003\u00e6s\u0000\u05a3"+
+ "\u05a0\u0001\u0000\u0000\u0000\u05a3\u05a1\u0001\u0000\u0000\u0000\u05a3"+
+ "\u05a2\u0001\u0000\u0000\u0000\u05a4\u00ef\u0001\u0000\u0000\u0000\u05a5"+
+ "\u05a7\u0005;\u0000\u0000\u05a6\u05a8\u0003\u00f2y\u0000\u05a7\u05a6\u0001"+
+ "\u0000\u0000\u0000\u05a7\u05a8\u0001\u0000\u0000\u0000\u05a8\u05aa\u0001"+
+ "\u0000\u0000\u0000\u05a9\u05ab\u0005@\u0000\u0000\u05aa\u05a9\u0001\u0000"+
+ "\u0000\u0000\u05aa\u05ab\u0001\u0000\u0000\u0000\u05ab\u05ac\u0001\u0000"+
+ "\u0000\u0000\u05ac\u05ad\u0005<\u0000\u0000\u05ad\u00f1\u0001\u0000\u0000"+
+ "\u0000\u05ae\u05b3\u0003\u00eew\u0000\u05af\u05b0\u0005@\u0000\u0000\u05b0"+
+ "\u05b2\u0003\u00eew\u0000\u05b1\u05af\u0001\u0000\u0000\u0000\u05b2\u05b5"+
+ "\u0001\u0000\u0000\u0000\u05b3\u05b1\u0001\u0000\u0000\u0000\u05b3\u05b4"+
+ "\u0001\u0000\u0000\u0000\u05b4\u00f3\u0001\u0000\u0000\u0000\u05b5\u05b3"+
+ "\u0001\u0000\u0000\u0000\u05b6\u05b7\u0005g\u0000\u0000\u05b7\u05b8\u0003"+
+ "6\u001b\u0000\u05b8\u00f5\u0001\u0000\u0000\u0000\u05b9\u05ba\u0005g\u0000"+
+ "\u0000\u05ba\u05bb\u00036\u001b\u0000\u05bb\u05bc\u00059\u0000\u0000\u05bc"+
+ "\u05bd\u0003\u00eew\u0000\u05bd\u05be\u0005:\u0000\u0000\u05be\u00f7\u0001"+
+ "\u0000\u0000\u0000\u05bf\u05c1\u0005;\u0000\u0000\u05c0\u05c2\u0003\u00fa"+
+ "}\u0000\u05c1\u05c0\u0001\u0000\u0000\u0000\u05c1\u05c2\u0001\u0000\u0000"+
+ "\u0000\u05c2\u05c4\u0001\u0000\u0000\u0000\u05c3\u05c5\u0005@\u0000\u0000"+
+ "\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c4\u05c5\u0001\u0000\u0000\u0000"+
+ "\u05c5\u05c6\u0001\u0000\u0000\u0000\u05c6\u05c7\u0005<\u0000\u0000\u05c7"+
+ "\u00f9\u0001\u0000\u0000\u0000\u05c8\u05cd\u0003r9\u0000\u05c9\u05ca\u0005"+
+ "@\u0000\u0000\u05ca\u05cc\u0003r9\u0000\u05cb\u05c9\u0001\u0000\u0000"+
+ "\u0000\u05cc\u05cf\u0001\u0000\u0000\u0000\u05cd\u05cb\u0001\u0000\u0000"+
+ "\u0000\u05cd\u05ce\u0001\u0000\u0000\u0000\u05ce\u00fb\u0001\u0000\u0000"+
+ "\u0000\u05cf\u05cd\u0001\u0000\u0000\u0000\u05d0\u05d2\u0005;\u0000\u0000"+
+ "\u05d1\u05d3\u0003\u00fe\u007f\u0000\u05d2\u05d1\u0001\u0000\u0000\u0000"+
+ "\u05d2\u05d3\u0001\u0000\u0000\u0000\u05d3\u05d4\u0001\u0000\u0000\u0000"+
+ "\u05d4\u05d5\u0005<\u0000\u0000\u05d5\u00fd\u0001\u0000\u0000\u0000\u05d6"+
+ "\u05da\u0003\u0100\u0080\u0000\u05d7\u05d9\u0003\u0100\u0080\u0000\u05d8"+
+ "\u05d7\u0001\u0000\u0000\u0000\u05d9\u05dc\u0001\u0000\u0000\u0000\u05da"+
+ "\u05d8\u0001\u0000\u0000\u0000\u05da\u05db\u0001\u0000\u0000\u0000\u05db"+
+ "\u00ff\u0001\u0000\u0000\u0000\u05dc\u05da\u0001\u0000\u0000\u0000\u05dd"+
+ "\u05e1\u0003\u0102\u0081\u0000\u05de\u05e1\u0003R)\u0000\u05df\u05e1\u0003"+
+ "\u0106\u0083\u0000\u05e0\u05dd\u0001\u0000\u0000\u0000\u05e0\u05de\u0001"+
+ "\u0000\u0000\u0000\u05e0\u05df\u0001\u0000\u0000\u0000\u05e1\u0101\u0001"+
+ "\u0000\u0000\u0000\u05e2\u05e3\u0003\u0104\u0082\u0000\u05e3\u05e4\u0005"+
+ "?\u0000\u0000\u05e4\u0103\u0001\u0000\u0000\u0000\u05e5\u05e7\u0003\u009c"+
+ "N\u0000\u05e6\u05e5\u0001\u0000\u0000\u0000\u05e7\u05ea\u0001\u0000\u0000"+
+ "\u0000\u05e8\u05e6\u0001\u0000\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000"+
+ "\u0000\u05e9\u05eb\u0001\u0000\u0000\u0000\u05ea\u05e8\u0001\u0000\u0000"+
+ "\u0000\u05eb\u05ec\u0003t:\u0000\u05ec\u05ed\u0003l6\u0000\u05ed\u0105"+
+ "\u0001\u0000\u0000\u0000\u05ee\u05f5\u0003\u010a\u0085\u0000\u05ef\u05f5"+
+ "\u0003\u010e\u0087\u0000\u05f0\u05f5\u0003\u0116\u008b\u0000\u05f1\u05f5"+
+ "\u0003\u0118\u008c\u0000\u05f2\u05f5\u0003\u012a\u0095\u0000\u05f3\u05f5"+
+ "\u0003\u0130\u0098\u0000\u05f4\u05ee\u0001\u0000\u0000\u0000\u05f4\u05ef"+
+ "\u0001\u0000\u0000\u0000\u05f4\u05f0\u0001\u0000\u0000\u0000\u05f4\u05f1"+
+ "\u0001\u0000\u0000\u0000\u05f4\u05f2\u0001\u0000\u0000\u0000\u05f4\u05f3"+
+ "\u0001\u0000\u0000\u0000\u05f5\u0107\u0001\u0000\u0000\u0000\u05f6\u05fc"+
+ "\u0003\u010a\u0085\u0000\u05f7\u05fc\u0003\u0110\u0088\u0000\u05f8\u05fc"+
+ "\u0003\u011a\u008d\u0000\u05f9\u05fc\u0003\u012c\u0096\u0000\u05fa\u05fc"+
+ "\u0003\u0132\u0099\u0000\u05fb\u05f6\u0001\u0000\u0000\u0000\u05fb\u05f7"+
+ "\u0001\u0000\u0000\u0000\u05fb\u05f8\u0001\u0000\u0000\u0000\u05fb\u05f9"+
+ "\u0001\u0000\u0000\u0000\u05fb\u05fa\u0001\u0000\u0000\u0000\u05fc\u0109"+
+ "\u0001\u0000\u0000\u0000\u05fd\u060a\u0003\u00fc~\u0000\u05fe\u060a\u0003"+
+ "\u010c\u0086\u0000\u05ff\u060a\u0003\u0112\u0089\u0000\u0600\u060a\u0003"+
+ "\u011c\u008e\u0000\u0601\u060a\u0003\u011e\u008f\u0000\u0602\u060a\u0003"+
+ "\u012e\u0097\u0000\u0603\u060a\u0003\u0142\u00a1\u0000\u0604\u060a\u0003"+
+ "\u0144\u00a2\u0000\u0605\u060a\u0003\u0146\u00a3\u0000\u0606\u060a\u0003"+
+ "\u014a\u00a5\u0000\u0607\u060a\u0003\u0148\u00a4\u0000\u0608\u060a\u0003"+
+ "\u014c\u00a6\u0000\u0609\u05fd\u0001\u0000\u0000\u0000\u0609\u05fe\u0001"+
+ "\u0000\u0000\u0000\u0609\u05ff\u0001\u0000\u0000\u0000\u0609\u0600\u0001"+
+ "\u0000\u0000\u0000\u0609\u0601\u0001\u0000\u0000\u0000\u0609\u0602\u0001"+
+ "\u0000\u0000\u0000\u0609\u0603\u0001\u0000\u0000\u0000\u0609\u0604\u0001"+
+ "\u0000\u0000\u0000\u0609\u0605\u0001\u0000\u0000\u0000\u0609\u0606\u0001"+
+ "\u0000\u0000\u0000\u0609\u0607\u0001\u0000\u0000\u0000\u0609\u0608\u0001"+
+ "\u0000\u0000\u0000\u060a\u010b\u0001\u0000\u0000\u0000\u060b\u060c\u0005"+
+ "?\u0000\u0000\u060c\u010d\u0001\u0000\u0000\u0000\u060d\u060e\u0005f\u0000"+
+ "\u0000\u060e\u060f\u0005H\u0000\u0000\u060f\u0610\u0003\u0106\u0083\u0000"+
+ "\u0610\u010f\u0001\u0000\u0000\u0000\u0611\u0612\u0005f\u0000\u0000\u0612"+
+ "\u0613\u0005H\u0000\u0000\u0613\u0614\u0003\u0108\u0084\u0000\u0614\u0111"+
+ "\u0001\u0000\u0000\u0000\u0615\u0616\u0003\u0114\u008a\u0000\u0616\u0617"+
+ "\u0005?\u0000\u0000\u0617\u0113\u0001\u0000\u0000\u0000\u0618\u0620\u0003"+
+ "\u01aa\u00d5\u0000\u0619\u0620\u0003\u01c8\u00e4\u0000\u061a\u0620\u0003"+
+ "\u01ca\u00e5\u0000\u061b\u0620\u0003\u01d0\u00e8\u0000\u061c\u0620\u0003"+
+ "\u01d4\u00ea\u0000\u061d\u0620\u0003\u0188\u00c4\u0000\u061e\u0620\u0003"+
+ "\u0174\u00ba\u0000\u061f\u0618\u0001\u0000\u0000\u0000\u061f\u0619\u0001"+
+ "\u0000\u0000\u0000\u061f\u061a\u0001\u0000\u0000\u0000\u061f\u061b\u0001"+
+ "\u0000\u0000\u0000\u061f\u061c\u0001\u0000\u0000\u0000\u061f\u061d\u0001"+
+ "\u0000\u0000\u0000\u061f\u061e\u0001\u0000\u0000\u0000\u0620\u0115\u0001"+
+ "\u0000\u0000\u0000\u0621\u0622\u0005\u0016\u0000\u0000\u0622\u0623\u0005"+
+ "9\u0000\u0000\u0623\u0624\u0003\u019e\u00cf\u0000\u0624\u0625\u0005:\u0000"+
+ "\u0000\u0625\u0626\u0003\u0106\u0083\u0000\u0626\u0117\u0001\u0000\u0000"+
+ "\u0000\u0627\u0628\u0005\u0016\u0000\u0000\u0628\u0629\u00059\u0000\u0000"+
+ "\u0629\u062a\u0003\u019e\u00cf\u0000\u062a\u062b\u0005:\u0000\u0000\u062b"+
+ "\u062c\u0003\u0108\u0084\u0000\u062c\u062d\u0005\u000f\u0000\u0000\u062d"+
+ "\u062e\u0003\u0106\u0083\u0000\u062e\u0119\u0001\u0000\u0000\u0000\u062f"+
+ "\u0630\u0005\u0016\u0000\u0000\u0630\u0631\u00059\u0000\u0000\u0631\u0632"+
+ "\u0003\u019e\u00cf\u0000\u0632\u0633\u0005:\u0000\u0000\u0633\u0634\u0003"+
+ "\u0108\u0084\u0000\u0634\u0635\u0005\u000f\u0000\u0000\u0635\u0636\u0003"+
+ "\u0108\u0084\u0000\u0636\u011b\u0001\u0000\u0000\u0000\u0637\u0638\u0005"+
+ "\u0002\u0000\u0000\u0638\u0639\u0003\u019e\u00cf\u0000\u0639\u063a\u0005"+
+ "?\u0000\u0000\u063a\u0642\u0001\u0000\u0000\u0000\u063b\u063c\u0005\u0002"+
+ "\u0000\u0000\u063c\u063d\u0003\u019e\u00cf\u0000\u063d\u063e\u0005H\u0000"+
+ "\u0000\u063e\u063f\u0003\u019e\u00cf\u0000\u063f\u0640\u0005?\u0000\u0000"+
+ "\u0640\u0642\u0001\u0000\u0000\u0000\u0641\u0637\u0001\u0000\u0000\u0000"+
+ "\u0641\u063b\u0001\u0000\u0000\u0000\u0642\u011d\u0001\u0000\u0000\u0000"+
+ "\u0643\u0644\u0005)\u0000\u0000\u0644\u0645\u00059\u0000\u0000\u0645\u0646"+
+ "\u0003\u019e\u00cf\u0000\u0646\u0647\u0005:\u0000\u0000\u0647\u0648\u0003"+
+ "\u0120\u0090\u0000\u0648\u011f\u0001\u0000\u0000\u0000\u0649\u064d\u0005"+
+ ";\u0000\u0000\u064a\u064c\u0003\u0122\u0091\u0000\u064b\u064a\u0001\u0000"+
+ "\u0000\u0000\u064c\u064f\u0001\u0000\u0000\u0000\u064d\u064b\u0001\u0000"+
+ "\u0000\u0000\u064d\u064e\u0001\u0000\u0000\u0000\u064e\u0653\u0001\u0000"+
+ "\u0000\u0000\u064f\u064d\u0001\u0000\u0000\u0000\u0650\u0652\u0003\u0126"+
+ "\u0093\u0000\u0651\u0650\u0001\u0000\u0000\u0000\u0652\u0655\u0001\u0000"+
+ "\u0000\u0000\u0653\u0651\u0001\u0000\u0000\u0000\u0653\u0654\u0001\u0000"+
+ "\u0000\u0000\u0654\u0656\u0001\u0000\u0000\u0000\u0655\u0653\u0001\u0000"+
+ "\u0000\u0000\u0656\u0657\u0005<\u0000\u0000\u0657\u0121\u0001\u0000\u0000"+
+ "\u0000\u0658\u0659\u0003\u0124\u0092\u0000\u0659\u065a\u0003\u00fe\u007f"+
+ "\u0000\u065a\u0123\u0001\u0000\u0000\u0000\u065b\u065f\u0003\u0126\u0093"+
+ "\u0000\u065c\u065e\u0003\u0126\u0093\u0000\u065d\u065c\u0001\u0000\u0000"+
+ "\u0000\u065e\u0661\u0001\u0000\u0000\u0000\u065f\u065d\u0001\u0000\u0000"+
+ "\u0000\u065f\u0660\u0001\u0000\u0000\u0000\u0660\u0125\u0001\u0000\u0000"+
+ "\u0000\u0661\u065f\u0001\u0000\u0000\u0000\u0662\u0663\u0005\u0006\u0000"+
+ "\u0000\u0663\u0664\u0003\u019c\u00ce\u0000\u0664\u0665\u0005H\u0000\u0000"+
+ "\u0665\u066d\u0001\u0000\u0000\u0000\u0666\u0667\u0005\u0006\u0000\u0000"+
+ "\u0667\u0668\u0003\u0128\u0094\u0000\u0668\u0669\u0005H\u0000\u0000\u0669"+
+ "\u066d\u0001\u0000\u0000\u0000\u066a\u066b\u0005\f\u0000\u0000\u066b\u066d"+
+ "\u0005H\u0000\u0000\u066c\u0662\u0001\u0000\u0000\u0000\u066c\u0666\u0001"+
+ "\u0000\u0000\u0000\u066c\u066a\u0001\u0000\u0000\u0000\u066d\u0127\u0001"+
+ "\u0000\u0000\u0000\u066e\u066f\u0005f\u0000\u0000\u066f\u0129\u0001\u0000"+
+ "\u0000\u0000\u0670\u0671\u00052\u0000\u0000\u0671\u0672\u00059\u0000\u0000"+
+ "\u0672\u0673\u0003\u019e\u00cf\u0000\u0673\u0674\u0005:\u0000\u0000\u0674"+
+ "\u0675\u0003\u0106\u0083\u0000\u0675\u012b\u0001\u0000\u0000\u0000\u0676"+
+ "\u0677\u00052\u0000\u0000\u0677\u0678\u00059\u0000\u0000\u0678\u0679\u0003"+
+ "\u019e\u00cf\u0000\u0679\u067a\u0005:\u0000\u0000\u067a\u067b\u0003\u0108"+
+ "\u0084\u0000\u067b\u012d\u0001\u0000\u0000\u0000\u067c\u067d\u0005\r\u0000"+
+ "\u0000\u067d\u067e\u0003\u0106\u0083\u0000\u067e\u067f\u00052\u0000\u0000"+
+ "\u067f\u0680\u00059\u0000\u0000\u0680\u0681\u0003\u019e\u00cf\u0000\u0681"+
+ "\u0682\u0005:\u0000\u0000\u0682\u0683\u0005?\u0000\u0000\u0683\u012f\u0001"+
+ "\u0000\u0000\u0000\u0684\u0687\u0003\u0134\u009a\u0000\u0685\u0687\u0003"+
+ "\u013e\u009f\u0000\u0686\u0684\u0001\u0000\u0000\u0000\u0686\u0685\u0001"+
+ "\u0000\u0000\u0000\u0687\u0131\u0001\u0000\u0000\u0000\u0688\u068b\u0003"+
+ "\u0136\u009b\u0000\u0689\u068b\u0003\u0140\u00a0\u0000\u068a\u0688\u0001"+
+ "\u0000\u0000\u0000\u068a\u0689\u0001\u0000\u0000\u0000\u068b\u0133\u0001"+
+ "\u0000\u0000\u0000\u068c\u068d\u0005\u0015\u0000\u0000\u068d\u068f\u0005"+
+ "9\u0000\u0000\u068e\u0690\u0003\u0138\u009c\u0000\u068f\u068e\u0001\u0000"+
+ "\u0000\u0000\u068f\u0690\u0001\u0000\u0000\u0000\u0690\u0691\u0001\u0000"+
+ "\u0000\u0000\u0691\u0693\u0005?\u0000\u0000\u0692\u0694\u0003\u019e\u00cf"+
+ "\u0000\u0693\u0692\u0001\u0000\u0000\u0000\u0693\u0694\u0001\u0000\u0000"+
+ "\u0000\u0694\u0695\u0001\u0000\u0000\u0000\u0695\u0697\u0005?\u0000\u0000"+
+ "\u0696\u0698\u0003\u013a\u009d\u0000\u0697\u0696\u0001\u0000\u0000\u0000"+
+ "\u0697\u0698\u0001\u0000\u0000\u0000\u0698\u0699\u0001\u0000\u0000\u0000"+
+ "\u0699\u069a\u0005:\u0000\u0000\u069a\u069b\u0003\u0106\u0083\u0000\u069b"+
+ "\u0135\u0001\u0000\u0000\u0000\u069c\u069d\u0005\u0015\u0000\u0000\u069d"+
+ "\u069f\u00059\u0000\u0000\u069e\u06a0\u0003\u0138\u009c\u0000\u069f\u069e"+
+ "\u0001\u0000\u0000\u0000\u069f\u06a0\u0001\u0000\u0000\u0000\u06a0\u06a1"+
+ "\u0001\u0000\u0000\u0000\u06a1\u06a3\u0005?\u0000\u0000\u06a2\u06a4\u0003"+
+ "\u019e\u00cf\u0000\u06a3\u06a2\u0001\u0000\u0000\u0000\u06a3\u06a4\u0001"+
+ "\u0000\u0000\u0000\u06a4\u06a5\u0001\u0000\u0000\u0000\u06a5\u06a7\u0005"+
+ "?\u0000\u0000\u06a6\u06a8\u0003\u013a\u009d\u0000\u06a7\u06a6\u0001\u0000"+
+ "\u0000\u0000\u06a7\u06a8\u0001\u0000\u0000\u0000\u06a8\u06a9\u0001\u0000"+
+ "\u0000\u0000\u06a9\u06aa\u0005:\u0000\u0000\u06aa\u06ab\u0003\u0108\u0084"+
+ "\u0000\u06ab\u0137\u0001\u0000\u0000\u0000\u06ac\u06af\u0003\u013c\u009e"+
+ "\u0000\u06ad\u06af\u0003\u0104\u0082\u0000\u06ae\u06ac\u0001\u0000\u0000"+
+ "\u0000\u06ae\u06ad\u0001\u0000\u0000\u0000\u06af\u0139\u0001\u0000\u0000"+
+ "\u0000\u06b0\u06b1\u0003\u013c\u009e\u0000\u06b1\u013b\u0001\u0000\u0000"+
+ "\u0000\u06b2\u06b7\u0003\u0114\u008a\u0000\u06b3\u06b4\u0005@\u0000\u0000"+
+ "\u06b4\u06b6\u0003\u0114\u008a\u0000\u06b5\u06b3\u0001\u0000\u0000\u0000"+
+ "\u06b6\u06b9\u0001\u0000\u0000\u0000\u06b7\u06b5\u0001\u0000\u0000\u0000"+
+ "\u06b7\u06b8\u0001\u0000\u0000\u0000\u06b8\u013d\u0001\u0000\u0000\u0000"+
+ "\u06b9\u06b7\u0001\u0000\u0000\u0000\u06ba\u06bb\u0005\u0015\u0000\u0000"+
+ "\u06bb\u06bf\u00059\u0000\u0000\u06bc\u06be\u0003\u009cN\u0000\u06bd\u06bc"+
+ "\u0001\u0000\u0000\u0000\u06be\u06c1\u0001\u0000\u0000\u0000\u06bf\u06bd"+
+ "\u0001\u0000\u0000\u0000\u06bf\u06c0\u0001\u0000\u0000\u0000\u06c0\u06c2"+
+ "\u0001\u0000\u0000\u0000\u06c1\u06bf\u0001\u0000\u0000\u0000\u06c2\u06c3"+
+ "\u0003t:\u0000\u06c3\u06c4\u0003p8\u0000\u06c4\u06c5\u0005H\u0000\u0000"+
+ "\u06c5\u06c6\u0003\u019e\u00cf\u0000\u06c6\u06c7\u0005:\u0000\u0000\u06c7"+
+ "\u06c8\u0003\u0106\u0083\u0000\u06c8\u013f\u0001\u0000\u0000\u0000\u06c9"+
+ "\u06ca\u0005\u0015\u0000\u0000\u06ca\u06ce\u00059\u0000\u0000\u06cb\u06cd"+
+ "\u0003\u009cN\u0000\u06cc\u06cb\u0001\u0000\u0000\u0000\u06cd\u06d0\u0001"+
+ "\u0000\u0000\u0000\u06ce\u06cc\u0001\u0000\u0000\u0000\u06ce\u06cf\u0001"+
+ "\u0000\u0000\u0000\u06cf\u06d1\u0001\u0000\u0000\u0000\u06d0\u06ce\u0001"+
+ "\u0000\u0000\u0000\u06d1\u06d2\u0003t:\u0000\u06d2\u06d3\u0003p8\u0000"+
+ "\u06d3\u06d4\u0005H\u0000\u0000\u06d4\u06d5\u0003\u019e\u00cf\u0000\u06d5"+
+ "\u06d6\u0005:\u0000\u0000\u06d6\u06d7\u0003\u0108\u0084\u0000\u06d7\u0141"+
+ "\u0001\u0000\u0000\u0000\u06d8\u06da\u0005\u0004\u0000\u0000\u06d9\u06db"+
+ "\u0005f\u0000\u0000\u06da\u06d9\u0001\u0000\u0000\u0000\u06da\u06db\u0001"+
+ "\u0000\u0000\u0000\u06db\u06dc\u0001\u0000\u0000\u0000\u06dc\u06dd\u0005"+
+ "?\u0000\u0000\u06dd\u0143\u0001\u0000\u0000\u0000\u06de\u06e0\u0005\u000b"+
+ "\u0000\u0000\u06df\u06e1\u0005f\u0000\u0000\u06e0\u06df\u0001\u0000\u0000"+
+ "\u0000\u06e0\u06e1\u0001\u0000\u0000\u0000\u06e1\u06e2\u0001\u0000\u0000"+
+ "\u0000\u06e2\u06e3\u0005?\u0000\u0000\u06e3\u0145\u0001\u0000\u0000\u0000"+
+ "\u06e4\u06e6\u0005$\u0000\u0000\u06e5\u06e7\u0003\u019e\u00cf\u0000\u06e6"+
+ "\u06e5\u0001\u0000\u0000\u0000\u06e6\u06e7\u0001\u0000\u0000\u0000\u06e7"+
+ "\u06e8\u0001\u0000\u0000\u0000\u06e8\u06e9\u0005?\u0000\u0000\u06e9\u0147"+
+ "\u0001\u0000\u0000\u0000\u06ea\u06eb\u0005,\u0000\u0000\u06eb\u06ec\u0003"+
+ "\u019e\u00cf\u0000\u06ec\u06ed\u0005?\u0000\u0000\u06ed\u0149\u0001\u0000"+
+ "\u0000\u0000\u06ee\u06ef\u0005*\u0000\u0000\u06ef\u06f0\u00059\u0000\u0000"+
+ "\u06f0\u06f1\u0003\u019e\u00cf\u0000\u06f1\u06f2\u0005:\u0000\u0000\u06f2"+
+ "\u06f3\u0003\u00fc~\u0000\u06f3\u014b\u0001\u0000\u0000\u0000\u06f4\u06f5"+
+ "\u0005/\u0000\u0000\u06f5\u06f6\u0003\u00fc~\u0000\u06f6\u06f7\u0003\u014e"+
+ "\u00a7\u0000\u06f7\u0701\u0001\u0000\u0000\u0000\u06f8\u06f9\u0005/\u0000"+
+ "\u0000\u06f9\u06fb\u0003\u00fc~\u0000\u06fa\u06fc\u0003\u014e\u00a7\u0000"+
+ "\u06fb\u06fa\u0001\u0000\u0000\u0000\u06fb\u06fc\u0001\u0000\u0000\u0000"+
+ "\u06fc\u06fd\u0001\u0000\u0000\u0000\u06fd\u06fe\u0003\u0156\u00ab\u0000"+
+ "\u06fe\u0701\u0001\u0000\u0000\u0000\u06ff\u0701\u0003\u0158\u00ac\u0000"+
+ "\u0700\u06f4\u0001\u0000\u0000\u0000\u0700\u06f8\u0001\u0000\u0000\u0000"+
+ "\u0700\u06ff\u0001\u0000\u0000\u0000\u0701\u014d\u0001\u0000\u0000\u0000"+
+ "\u0702\u0706\u0003\u0150\u00a8\u0000\u0703\u0705\u0003\u0150\u00a8\u0000"+
+ "\u0704\u0703\u0001\u0000\u0000\u0000\u0705\u0708\u0001\u0000\u0000\u0000"+
+ "\u0706\u0704\u0001\u0000\u0000\u0000\u0706\u0707\u0001\u0000\u0000\u0000"+
+ "\u0707\u014f\u0001\u0000\u0000\u0000\u0708\u0706\u0001\u0000\u0000\u0000"+
+ "\u0709\u070a\u0005\u0007\u0000\u0000\u070a\u070b\u00059\u0000\u0000\u070b"+
+ "\u070c\u0003\u0152\u00a9\u0000\u070c\u070d\u0005:\u0000\u0000\u070d\u070e"+
+ "\u0003\u00fc~\u0000\u070e\u0151\u0001\u0000\u0000\u0000\u070f\u0711\u0003"+
+ "\u009cN\u0000\u0710\u070f\u0001\u0000\u0000\u0000\u0711\u0714\u0001\u0000"+
+ "\u0000\u0000\u0712\u0710\u0001\u0000\u0000\u0000\u0712\u0713\u0001\u0000"+
+ "\u0000\u0000\u0713\u0715\u0001\u0000\u0000\u0000\u0714\u0712\u0001\u0000"+
+ "\u0000\u0000\u0715\u0716\u0003\u0154\u00aa\u0000\u0716\u0717\u0003p8\u0000"+
+ "\u0717\u0153\u0001\u0000\u0000\u0000\u0718\u071d\u0003|>\u0000\u0719\u071a"+
+ "\u0005V\u0000\u0000\u071a\u071c\u0003\u0010\b\u0000\u071b\u0719\u0001"+
+ "\u0000\u0000\u0000\u071c\u071f\u0001\u0000\u0000\u0000\u071d\u071b\u0001"+
+ "\u0000\u0000\u0000\u071d\u071e\u0001\u0000\u0000\u0000\u071e\u0155\u0001"+
+ "\u0000\u0000\u0000\u071f\u071d\u0001\u0000\u0000\u0000\u0720\u0721\u0005"+
+ "\u0013\u0000\u0000\u0721\u0722\u0003\u00fc~\u0000\u0722\u0157\u0001\u0000"+
+ "\u0000\u0000\u0723\u0724\u0005/\u0000\u0000\u0724\u0725\u0003\u015a\u00ad"+
+ "\u0000\u0725\u0727\u0003\u00fc~\u0000\u0726\u0728\u0003\u014e\u00a7\u0000"+
+ "\u0727\u0726\u0001\u0000\u0000\u0000\u0727\u0728\u0001\u0000\u0000\u0000"+
+ "\u0728\u072a\u0001\u0000\u0000\u0000\u0729\u072b\u0003\u0156\u00ab\u0000"+
+ "\u072a\u0729\u0001\u0000\u0000\u0000\u072a\u072b\u0001\u0000\u0000\u0000"+
+ "\u072b\u0159\u0001\u0000\u0000\u0000\u072c\u072d\u00059\u0000\u0000\u072d"+
+ "\u072f\u0003\u015c\u00ae\u0000\u072e\u0730\u0005?\u0000\u0000\u072f\u072e"+
+ "\u0001\u0000\u0000\u0000\u072f\u0730\u0001\u0000\u0000\u0000\u0730\u0731"+
+ "\u0001\u0000\u0000\u0000\u0731\u0732\u0005:\u0000\u0000\u0732\u015b\u0001"+
+ "\u0000\u0000\u0000\u0733\u0738\u0003\u015e\u00af\u0000\u0734\u0735\u0005"+
+ "?\u0000\u0000\u0735\u0737\u0003\u015e\u00af\u0000\u0736\u0734\u0001\u0000"+
+ "\u0000\u0000\u0737\u073a\u0001\u0000\u0000\u0000\u0738\u0736\u0001\u0000"+
+ "\u0000\u0000\u0738\u0739\u0001\u0000\u0000\u0000\u0739\u015d\u0001\u0000"+
+ "\u0000\u0000\u073a\u0738\u0001\u0000\u0000\u0000\u073b\u073d\u0003\u009c"+
+ "N\u0000\u073c\u073b\u0001\u0000\u0000\u0000\u073d\u0740\u0001\u0000\u0000"+
+ "\u0000\u073e\u073c\u0001\u0000\u0000\u0000\u073e\u073f\u0001\u0000\u0000"+
+ "\u0000\u073f\u0741\u0001\u0000\u0000\u0000\u0740\u073e\u0001\u0000\u0000"+
+ "\u0000\u0741\u0742\u0003t:\u0000\u0742\u0743\u0003p8\u0000\u0743\u0744"+
+ "\u0005B\u0000\u0000\u0744\u0745\u0003\u019e\u00cf\u0000\u0745\u015f\u0001"+
+ "\u0000\u0000\u0000\u0746\u0749\u0003\u016e\u00b7\u0000\u0747\u0749\u0003"+
+ "\u0196\u00cb\u0000\u0748\u0746\u0001\u0000\u0000\u0000\u0748\u0747\u0001"+
+ "\u0000\u0000\u0000\u0749\u074d\u0001\u0000\u0000\u0000\u074a\u074c\u0003"+
+ "\u0168\u00b4\u0000\u074b\u074a\u0001\u0000\u0000\u0000\u074c\u074f\u0001"+
+ "\u0000\u0000\u0000\u074d\u074b\u0001\u0000\u0000\u0000\u074d\u074e\u0001"+
+ "\u0000\u0000\u0000\u074e\u0161\u0001\u0000\u0000\u0000\u074f\u074d\u0001"+
+ "\u0000\u0000\u0000\u0750\u076e\u0003\u0000\u0000\u0000\u0751\u0756\u0003"+
+ "6\u001b\u0000\u0752\u0753\u0005=\u0000\u0000\u0753\u0755\u0005>\u0000"+
+ "\u0000\u0754\u0752\u0001\u0000\u0000\u0000\u0755\u0758\u0001\u0000\u0000"+
+ "\u0000\u0756\u0754\u0001\u0000\u0000\u0000\u0756\u0757\u0001\u0000\u0000"+
+ "\u0000\u0757\u0759\u0001\u0000\u0000\u0000\u0758\u0756\u0001\u0000\u0000"+
+ "\u0000\u0759\u075a\u0005A\u0000\u0000\u075a\u075b\u0005\t\u0000\u0000"+
+ "\u075b\u076e\u0001\u0000\u0000\u0000\u075c\u075d\u00050\u0000\u0000\u075d"+
+ "\u075e\u0005A\u0000\u0000\u075e\u076e\u0005\t\u0000\u0000\u075f\u076e"+
+ "\u0005+\u0000\u0000\u0760\u0761\u00036\u001b\u0000\u0761\u0762\u0005A"+
+ "\u0000\u0000\u0762\u0763\u0005+\u0000\u0000\u0763\u076e\u0001\u0000\u0000"+
+ "\u0000\u0764\u0765\u00059\u0000\u0000\u0765\u0766\u0003\u019e\u00cf\u0000"+
+ "\u0766\u0767\u0005:\u0000\u0000\u0767\u076e\u0001\u0000\u0000\u0000\u0768"+
+ "\u076e\u0003\u0174\u00ba\u0000\u0769\u076e\u0003\u017c\u00be\u0000\u076a"+
+ "\u076e\u0003\u0182\u00c1\u0000\u076b\u076e\u0003\u0188\u00c4\u0000\u076c"+
+ "\u076e\u0003\u0190\u00c8\u0000\u076d\u0750\u0001\u0000\u0000\u0000\u076d"+
+ "\u0751\u0001\u0000\u0000\u0000\u076d\u075c\u0001\u0000\u0000\u0000\u076d"+
+ "\u075f\u0001\u0000\u0000\u0000\u076d\u0760\u0001\u0000\u0000\u0000\u076d"+
+ "\u0764\u0001\u0000\u0000\u0000\u076d\u0768\u0001\u0000\u0000\u0000\u076d"+
+ "\u0769\u0001\u0000\u0000\u0000\u076d\u076a\u0001\u0000\u0000\u0000\u076d"+
+ "\u076b\u0001\u0000\u0000\u0000\u076d\u076c\u0001\u0000\u0000\u0000\u076e"+
+ "\u0163\u0001\u0000\u0000\u0000\u076f\u0770\u0001\u0000\u0000\u0000\u0770"+
+ "\u0165\u0001\u0000\u0000\u0000\u0771\u078e\u0003\u0000\u0000\u0000\u0772"+
+ "\u0777\u00036\u001b\u0000\u0773\u0774\u0005=\u0000\u0000\u0774\u0776\u0005"+
+ ">\u0000\u0000\u0775\u0773\u0001\u0000\u0000\u0000\u0776\u0779\u0001\u0000"+
+ "\u0000\u0000\u0777\u0775\u0001\u0000\u0000\u0000\u0777\u0778\u0001\u0000"+
+ "\u0000\u0000\u0778\u077a\u0001\u0000\u0000\u0000\u0779\u0777\u0001\u0000"+
+ "\u0000\u0000\u077a\u077b\u0005A\u0000\u0000\u077b\u077c\u0005\t\u0000"+
+ "\u0000\u077c\u078e\u0001\u0000\u0000\u0000\u077d\u077e\u00050\u0000\u0000"+
+ "\u077e\u077f\u0005A\u0000\u0000\u077f\u078e\u0005\t\u0000\u0000\u0780"+
+ "\u078e\u0005+\u0000\u0000\u0781\u0782\u00036\u001b\u0000\u0782\u0783\u0005"+
+ "A\u0000\u0000\u0783\u0784\u0005+\u0000\u0000\u0784\u078e\u0001\u0000\u0000"+
+ "\u0000\u0785\u0786\u00059\u0000\u0000\u0786\u0787\u0003\u019e\u00cf\u0000"+
+ "\u0787\u0788\u0005:\u0000\u0000\u0788\u078e\u0001\u0000\u0000\u0000\u0789"+
+ "\u078e\u0003\u0174\u00ba\u0000\u078a\u078e\u0003\u017c\u00be\u0000\u078b"+
+ "\u078e\u0003\u0188\u00c4\u0000\u078c\u078e\u0003\u0190\u00c8\u0000\u078d"+
+ "\u0771\u0001\u0000\u0000\u0000\u078d\u0772\u0001\u0000\u0000\u0000\u078d"+
+ "\u077d\u0001\u0000\u0000\u0000\u078d\u0780\u0001\u0000\u0000\u0000\u078d"+
+ "\u0781\u0001\u0000\u0000\u0000\u078d\u0785\u0001\u0000\u0000\u0000\u078d"+
+ "\u0789\u0001\u0000\u0000\u0000\u078d\u078a\u0001\u0000\u0000\u0000\u078d"+
+ "\u078b\u0001\u0000\u0000\u0000\u078d\u078c\u0001\u0000\u0000\u0000\u078e"+
+ "\u0167\u0001\u0000\u0000\u0000\u078f\u0795\u0003\u0176\u00bb\u0000\u0790"+
+ "\u0795\u0003\u017e\u00bf\u0000\u0791\u0795\u0003\u0184\u00c2\u0000\u0792"+
+ "\u0795\u0003\u018a\u00c5\u0000\u0793\u0795\u0003\u0192\u00c9\u0000\u0794"+
+ "\u078f\u0001\u0000\u0000\u0000\u0794\u0790\u0001\u0000\u0000\u0000\u0794"+
+ "\u0791\u0001\u0000\u0000\u0000\u0794\u0792\u0001\u0000\u0000\u0000\u0794"+
+ "\u0793\u0001\u0000\u0000\u0000\u0795\u0169\u0001\u0000\u0000\u0000\u0796"+
+ "\u0797\u0001\u0000\u0000\u0000\u0797\u016b\u0001\u0000\u0000\u0000\u0798"+
+ "\u079d\u0003\u0176\u00bb\u0000\u0799\u079d\u0003\u017e\u00bf\u0000\u079a"+
+ "\u079d\u0003\u018a\u00c5\u0000\u079b\u079d\u0003\u0192\u00c9\u0000\u079c"+
+ "\u0798\u0001\u0000\u0000\u0000\u079c\u0799\u0001\u0000\u0000\u0000\u079c"+
+ "\u079a\u0001\u0000\u0000\u0000\u079c\u079b\u0001\u0000\u0000\u0000\u079d"+
+ "\u016d\u0001\u0000\u0000\u0000\u079e\u07c7\u0003\u0000\u0000\u0000\u079f"+
+ "\u07a4\u00036\u001b\u0000\u07a0\u07a1\u0005=\u0000\u0000\u07a1\u07a3\u0005"+
+ ">\u0000\u0000\u07a2\u07a0\u0001\u0000\u0000\u0000\u07a3\u07a6\u0001\u0000"+
+ "\u0000\u0000\u07a4\u07a2\u0001\u0000\u0000\u0000\u07a4\u07a5\u0001\u0000"+
+ "\u0000\u0000\u07a5\u07a7\u0001\u0000\u0000\u0000\u07a6\u07a4\u0001\u0000"+
+ "\u0000\u0000\u07a7\u07a8\u0005A\u0000\u0000\u07a8\u07a9\u0005\t\u0000"+
+ "\u0000\u07a9\u07c7\u0001\u0000\u0000\u0000\u07aa\u07af\u0003v;\u0000\u07ab"+
+ "\u07ac\u0005=\u0000\u0000\u07ac\u07ae\u0005>\u0000\u0000\u07ad\u07ab\u0001"+
+ "\u0000\u0000\u0000\u07ae\u07b1\u0001\u0000\u0000\u0000\u07af\u07ad\u0001"+
+ "\u0000\u0000\u0000\u07af\u07b0\u0001\u0000\u0000\u0000\u07b0\u07b2\u0001"+
+ "\u0000\u0000\u0000\u07b1\u07af\u0001\u0000\u0000\u0000\u07b2\u07b3\u0005"+
+ "A\u0000\u0000\u07b3\u07b4\u0005\t\u0000\u0000\u07b4\u07c7\u0001\u0000"+
+ "\u0000\u0000\u07b5\u07b6\u00050\u0000\u0000\u07b6\u07b7\u0005A\u0000\u0000"+
+ "\u07b7\u07c7\u0005\t\u0000\u0000\u07b8\u07c7\u0005+\u0000\u0000\u07b9"+
+ "\u07ba\u00036\u001b\u0000\u07ba\u07bb\u0005A\u0000\u0000\u07bb\u07bc\u0005"+
+ "+\u0000\u0000\u07bc\u07c7\u0001\u0000\u0000\u0000\u07bd\u07be\u00059\u0000"+
+ "\u0000\u07be\u07bf\u0003\u019e\u00cf\u0000\u07bf\u07c0\u0005:\u0000\u0000"+
+ "\u07c0\u07c7\u0001\u0000\u0000\u0000\u07c1\u07c7\u0003\u0178\u00bc\u0000"+
+ "\u07c2\u07c7\u0003\u0180\u00c0\u0000\u07c3\u07c7\u0003\u0186\u00c3\u0000"+
+ "\u07c4\u07c7\u0003\u018c\u00c6\u0000\u07c5\u07c7\u0003\u0194\u00ca\u0000"+
+ "\u07c6\u079e\u0001\u0000\u0000\u0000\u07c6\u079f\u0001\u0000\u0000\u0000"+
+ "\u07c6\u07aa\u0001\u0000\u0000\u0000\u07c6\u07b5\u0001\u0000\u0000\u0000"+
+ "\u07c6\u07b8\u0001\u0000\u0000\u0000\u07c6\u07b9\u0001\u0000\u0000\u0000"+
+ "\u07c6\u07bd\u0001\u0000\u0000\u0000\u07c6\u07c1\u0001\u0000\u0000\u0000"+
+ "\u07c6\u07c2\u0001\u0000\u0000\u0000\u07c6\u07c3\u0001\u0000\u0000\u0000"+
+ "\u07c6\u07c4\u0001\u0000\u0000\u0000\u07c6\u07c5\u0001\u0000\u0000\u0000"+
+ "\u07c7\u016f\u0001\u0000\u0000\u0000\u07c8\u07c9\u0001\u0000\u0000\u0000"+
+ "\u07c9\u0171\u0001\u0000\u0000\u0000\u07ca\u07f2\u0003\u0000\u0000\u0000"+
+ "\u07cb\u07d0\u00036\u001b\u0000\u07cc\u07cd\u0005=\u0000\u0000\u07cd\u07cf"+
+ "\u0005>\u0000\u0000\u07ce\u07cc\u0001\u0000\u0000\u0000\u07cf\u07d2\u0001"+
+ "\u0000\u0000\u0000\u07d0\u07ce\u0001\u0000\u0000\u0000\u07d0\u07d1\u0001"+
+ "\u0000\u0000\u0000\u07d1\u07d3\u0001\u0000\u0000\u0000\u07d2\u07d0\u0001"+
+ "\u0000\u0000\u0000\u07d3\u07d4\u0005A\u0000\u0000\u07d4\u07d5\u0005\t"+
+ "\u0000\u0000\u07d5\u07f2\u0001\u0000\u0000\u0000\u07d6\u07db\u0003v;\u0000"+
+ "\u07d7\u07d8\u0005=\u0000\u0000\u07d8\u07da\u0005>\u0000\u0000\u07d9\u07d7"+
+ "\u0001\u0000\u0000\u0000\u07da\u07dd\u0001\u0000\u0000\u0000\u07db\u07d9"+
+ "\u0001\u0000\u0000\u0000\u07db\u07dc\u0001\u0000\u0000\u0000\u07dc\u07de"+
+ "\u0001\u0000\u0000\u0000\u07dd\u07db\u0001\u0000\u0000\u0000\u07de\u07df"+
+ "\u0005A\u0000\u0000\u07df\u07e0\u0005\t\u0000\u0000\u07e0\u07f2\u0001"+
+ "\u0000\u0000\u0000\u07e1\u07e2\u00050\u0000\u0000\u07e2\u07e3\u0005A\u0000"+
+ "\u0000\u07e3\u07f2\u0005\t\u0000\u0000\u07e4\u07f2\u0005+\u0000\u0000"+
+ "\u07e5\u07e6\u00036\u001b\u0000\u07e6\u07e7\u0005A\u0000\u0000\u07e7\u07e8"+
+ "\u0005+\u0000\u0000\u07e8\u07f2\u0001\u0000\u0000\u0000\u07e9\u07ea\u0005"+
+ "9\u0000\u0000\u07ea\u07eb\u0003\u019e\u00cf\u0000\u07eb\u07ec\u0005:\u0000"+
+ "\u0000\u07ec\u07f2\u0001\u0000\u0000\u0000\u07ed\u07f2\u0003\u0178\u00bc"+
+ "\u0000\u07ee\u07f2\u0003\u0180\u00c0\u0000\u07ef\u07f2\u0003\u018c\u00c6"+
+ "\u0000\u07f0\u07f2\u0003\u0194\u00ca\u0000\u07f1\u07ca\u0001\u0000\u0000"+
+ "\u0000\u07f1\u07cb\u0001\u0000\u0000\u0000\u07f1\u07d6\u0001\u0000\u0000"+
+ "\u0000\u07f1\u07e1\u0001\u0000\u0000\u0000\u07f1\u07e4\u0001\u0000\u0000"+
+ "\u0000\u07f1\u07e5\u0001\u0000\u0000\u0000\u07f1\u07e9\u0001\u0000\u0000"+
+ "\u0000\u07f1\u07ed\u0001\u0000\u0000\u0000\u07f1\u07ee\u0001\u0000\u0000"+
+ "\u0000\u07f1\u07ef\u0001\u0000\u0000\u0000\u07f1\u07f0\u0001\u0000\u0000"+
+ "\u0000\u07f2\u0173\u0001\u0000\u0000\u0000\u07f3\u07f5\u0005\u001f\u0000"+
+ "\u0000\u07f4\u07f6\u0003*\u0015\u0000\u07f5\u07f4\u0001\u0000\u0000\u0000"+
+ "\u07f5\u07f6\u0001\u0000\u0000\u0000\u07f6\u07fa\u0001\u0000\u0000\u0000"+
+ "\u07f7\u07f9\u0003\u00e6s\u0000\u07f8\u07f7\u0001\u0000\u0000\u0000\u07f9"+
+ "\u07fc\u0001\u0000\u0000\u0000\u07fa\u07f8\u0001\u0000\u0000\u0000\u07fa"+
+ "\u07fb\u0001\u0000\u0000\u0000\u07fb\u07fd\u0001\u0000\u0000\u0000\u07fc"+
+ "\u07fa\u0001\u0000\u0000\u0000\u07fd\u0808\u0005f\u0000\u0000\u07fe\u0802"+
+ "\u0005A\u0000\u0000\u07ff\u0801\u0003\u00e6s\u0000\u0800\u07ff\u0001\u0000"+
+ "\u0000\u0000\u0801\u0804\u0001\u0000\u0000\u0000\u0802\u0800\u0001\u0000"+
+ "\u0000\u0000\u0802\u0803\u0001\u0000\u0000\u0000\u0803\u0805\u0001\u0000"+
+ "\u0000\u0000\u0804\u0802\u0001\u0000\u0000\u0000\u0805\u0807\u0005f\u0000"+
+ "\u0000\u0806\u07fe\u0001\u0000\u0000\u0000\u0807\u080a\u0001\u0000\u0000"+
+ "\u0000\u0808\u0806\u0001\u0000\u0000\u0000\u0808\u0809\u0001\u0000\u0000"+
+ "\u0000\u0809\u080c\u0001\u0000\u0000\u0000\u080a\u0808\u0001\u0000\u0000"+
+ "\u0000\u080b\u080d\u0003\u017a\u00bd\u0000\u080c\u080b\u0001\u0000\u0000"+
+ "\u0000\u080c\u080d\u0001\u0000\u0000\u0000\u080d\u080e\u0001\u0000\u0000"+
+ "\u0000\u080e\u0810\u00059\u0000\u0000\u080f\u0811\u0003\u018e\u00c7\u0000"+
+ "\u0810\u080f\u0001\u0000\u0000\u0000\u0810\u0811\u0001\u0000\u0000\u0000"+
+ "\u0811\u0812\u0001\u0000\u0000\u0000\u0812\u0814\u0005:\u0000\u0000\u0813"+
+ "\u0815\u0003b1\u0000\u0814\u0813\u0001\u0000\u0000\u0000\u0814\u0815\u0001"+
+ "\u0000\u0000\u0000\u0815\u0847\u0001\u0000\u0000\u0000\u0816\u0817\u0003"+
+ ":\u001d\u0000\u0817\u0818\u0005A\u0000\u0000\u0818\u081a\u0005\u001f\u0000"+
+ "\u0000\u0819\u081b\u0003*\u0015\u0000\u081a\u0819\u0001\u0000\u0000\u0000"+
+ "\u081a\u081b\u0001\u0000\u0000\u0000\u081b\u081f\u0001\u0000\u0000\u0000"+
+ "\u081c\u081e\u0003\u00e6s\u0000\u081d\u081c\u0001\u0000\u0000\u0000\u081e"+
+ "\u0821\u0001\u0000\u0000\u0000\u081f\u081d\u0001\u0000\u0000\u0000\u081f"+
+ "\u0820\u0001\u0000\u0000\u0000\u0820\u0822\u0001\u0000\u0000\u0000\u0821"+
+ "\u081f\u0001\u0000\u0000\u0000\u0822\u0824\u0005f\u0000\u0000\u0823\u0825"+
+ "\u0003\u017a\u00bd\u0000\u0824\u0823\u0001\u0000\u0000\u0000\u0824\u0825"+
+ "\u0001\u0000\u0000\u0000\u0825\u0826\u0001\u0000\u0000\u0000\u0826\u0828"+
+ "\u00059\u0000\u0000\u0827\u0829\u0003\u018e\u00c7\u0000\u0828\u0827\u0001"+
+ "\u0000\u0000\u0000\u0828\u0829\u0001\u0000\u0000\u0000\u0829\u082a\u0001"+
+ "\u0000\u0000\u0000\u082a\u082c\u0005:\u0000\u0000\u082b\u082d\u0003b1"+
+ "\u0000\u082c\u082b\u0001\u0000\u0000\u0000\u082c\u082d\u0001\u0000\u0000"+
+ "\u0000\u082d\u0847\u0001\u0000\u0000\u0000\u082e\u082f\u0003\u0160\u00b0"+
+ "\u0000\u082f\u0830\u0005A\u0000\u0000\u0830\u0832\u0005\u001f\u0000\u0000"+
+ "\u0831\u0833\u0003*\u0015\u0000\u0832\u0831\u0001\u0000\u0000\u0000\u0832"+
+ "\u0833\u0001\u0000\u0000\u0000\u0833\u0837\u0001\u0000\u0000\u0000\u0834"+
+ "\u0836\u0003\u00e6s\u0000\u0835\u0834\u0001\u0000\u0000\u0000\u0836\u0839"+
+ "\u0001\u0000\u0000\u0000\u0837\u0835\u0001\u0000\u0000\u0000\u0837\u0838"+
+ "\u0001\u0000\u0000\u0000\u0838\u083a\u0001\u0000\u0000\u0000\u0839\u0837"+
+ "\u0001\u0000\u0000\u0000\u083a\u083c\u0005f\u0000\u0000\u083b\u083d\u0003"+
+ "\u017a\u00bd\u0000\u083c\u083b\u0001\u0000\u0000\u0000\u083c\u083d\u0001"+
+ "\u0000\u0000\u0000\u083d\u083e\u0001\u0000\u0000\u0000\u083e\u0840\u0005"+
+ "9\u0000\u0000\u083f\u0841\u0003\u018e\u00c7\u0000\u0840\u083f\u0001\u0000"+
+ "\u0000\u0000\u0840\u0841\u0001\u0000\u0000\u0000\u0841\u0842\u0001\u0000"+
+ "\u0000\u0000\u0842\u0844\u0005:\u0000\u0000\u0843\u0845\u0003b1\u0000"+
+ "\u0844\u0843\u0001\u0000\u0000\u0000\u0844\u0845\u0001\u0000\u0000\u0000"+
+ "\u0845\u0847\u0001\u0000\u0000\u0000\u0846\u07f3\u0001\u0000\u0000\u0000"+
+ "\u0846\u0816\u0001\u0000\u0000\u0000\u0846\u082e\u0001\u0000\u0000\u0000"+
+ "\u0847\u0175\u0001\u0000\u0000\u0000\u0848\u0849\u0005A\u0000\u0000\u0849"+
+ "\u084b\u0005\u001f\u0000\u0000\u084a\u084c\u0003*\u0015\u0000\u084b\u084a"+
+ "\u0001\u0000\u0000\u0000\u084b\u084c\u0001\u0000\u0000\u0000\u084c\u0850"+
+ "\u0001\u0000\u0000\u0000\u084d\u084f\u0003\u00e6s\u0000\u084e\u084d\u0001"+
+ "\u0000\u0000\u0000\u084f\u0852\u0001\u0000\u0000\u0000\u0850\u084e\u0001"+
+ "\u0000\u0000\u0000\u0850\u0851\u0001\u0000\u0000\u0000\u0851\u0853\u0001"+
+ "\u0000\u0000\u0000\u0852\u0850\u0001\u0000\u0000\u0000\u0853\u0855\u0005"+
+ "f\u0000\u0000\u0854\u0856\u0003\u017a\u00bd\u0000\u0855\u0854\u0001\u0000"+
+ "\u0000\u0000\u0855\u0856\u0001\u0000\u0000\u0000\u0856\u0857\u0001\u0000"+
+ "\u0000\u0000\u0857\u0859\u00059\u0000\u0000\u0858\u085a\u0003\u018e\u00c7"+
+ "\u0000\u0859\u0858\u0001\u0000\u0000\u0000\u0859\u085a\u0001\u0000\u0000"+
+ "\u0000\u085a\u085b\u0001\u0000\u0000\u0000\u085b\u085d\u0005:\u0000\u0000"+
+ "\u085c\u085e\u0003b1\u0000\u085d\u085c\u0001\u0000\u0000\u0000\u085d\u085e"+
+ "\u0001\u0000\u0000\u0000\u085e\u0177\u0001\u0000\u0000\u0000\u085f\u0861"+
+ "\u0005\u001f\u0000\u0000\u0860\u0862\u0003*\u0015\u0000\u0861\u0860\u0001"+
+ "\u0000\u0000\u0000\u0861\u0862\u0001\u0000\u0000\u0000\u0862\u0866\u0001"+
+ "\u0000\u0000\u0000\u0863\u0865\u0003\u00e6s\u0000\u0864\u0863\u0001\u0000"+
+ "\u0000\u0000\u0865\u0868\u0001\u0000\u0000\u0000\u0866\u0864\u0001\u0000"+
+ "\u0000\u0000\u0866\u0867\u0001\u0000\u0000\u0000\u0867\u0869\u0001\u0000"+
+ "\u0000\u0000\u0868\u0866\u0001\u0000\u0000\u0000\u0869\u0874\u0005f\u0000"+
+ "\u0000\u086a\u086e\u0005A\u0000\u0000\u086b\u086d\u0003\u00e6s\u0000\u086c"+
+ "\u086b\u0001\u0000\u0000\u0000\u086d\u0870\u0001\u0000\u0000\u0000\u086e"+
+ "\u086c\u0001\u0000\u0000\u0000\u086e\u086f\u0001\u0000\u0000\u0000\u086f"+
+ "\u0871\u0001\u0000\u0000\u0000\u0870\u086e\u0001\u0000\u0000\u0000\u0871"+
+ "\u0873\u0005f\u0000\u0000\u0872\u086a\u0001\u0000\u0000\u0000\u0873\u0876"+
+ "\u0001\u0000\u0000\u0000\u0874\u0872\u0001\u0000\u0000\u0000\u0874\u0875"+
+ "\u0001\u0000\u0000\u0000\u0875\u0878\u0001\u0000\u0000\u0000\u0876\u0874"+
+ "\u0001\u0000\u0000\u0000\u0877\u0879\u0003\u017a\u00bd\u0000\u0878\u0877"+
+ "\u0001\u0000\u0000\u0000\u0878\u0879\u0001\u0000\u0000\u0000\u0879\u087a"+
+ "\u0001\u0000\u0000\u0000\u087a\u087c\u00059\u0000\u0000\u087b\u087d\u0003"+
+ "\u018e\u00c7\u0000\u087c\u087b\u0001\u0000\u0000\u0000\u087c\u087d\u0001"+
+ "\u0000\u0000\u0000\u087d\u087e\u0001\u0000\u0000\u0000\u087e\u0880\u0005"+
+ ":\u0000\u0000\u087f\u0881\u0003b1\u0000\u0880\u087f\u0001\u0000\u0000"+
+ "\u0000\u0880\u0881\u0001\u0000\u0000\u0000\u0881\u089b\u0001\u0000\u0000"+
+ "\u0000\u0882\u0883\u0003:\u001d\u0000\u0883\u0884\u0005A\u0000\u0000\u0884"+
+ "\u0886\u0005\u001f\u0000\u0000\u0885\u0887\u0003*\u0015\u0000\u0886\u0885"+
+ "\u0001\u0000\u0000\u0000\u0886\u0887\u0001\u0000\u0000\u0000\u0887\u088b"+
+ "\u0001\u0000\u0000\u0000\u0888\u088a\u0003\u00e6s\u0000\u0889\u0888\u0001"+
+ "\u0000\u0000\u0000\u088a\u088d\u0001\u0000\u0000\u0000\u088b\u0889\u0001"+
+ "\u0000\u0000\u0000\u088b\u088c\u0001\u0000\u0000\u0000\u088c\u088e\u0001"+
+ "\u0000\u0000\u0000\u088d\u088b\u0001\u0000\u0000\u0000\u088e\u0890\u0005"+
+ "f\u0000\u0000\u088f\u0891\u0003\u017a\u00bd\u0000\u0890\u088f\u0001\u0000"+
+ "\u0000\u0000\u0890\u0891\u0001\u0000\u0000\u0000\u0891\u0892\u0001\u0000"+
+ "\u0000\u0000\u0892\u0894\u00059\u0000\u0000\u0893\u0895\u0003\u018e\u00c7"+
+ "\u0000\u0894\u0893\u0001\u0000\u0000\u0000\u0894\u0895\u0001\u0000\u0000"+
+ "\u0000\u0895\u0896\u0001\u0000\u0000\u0000\u0896\u0898\u0005:\u0000\u0000"+
+ "\u0897\u0899\u0003b1\u0000\u0898\u0897\u0001\u0000\u0000\u0000\u0898\u0899"+
+ "\u0001\u0000\u0000\u0000\u0899\u089b\u0001\u0000\u0000\u0000\u089a\u085f"+
+ "\u0001\u0000\u0000\u0000\u089a\u0882\u0001\u0000\u0000\u0000\u089b\u0179"+
+ "\u0001\u0000\u0000\u0000\u089c\u08a0\u0003*\u0015\u0000\u089d\u089e\u0005"+
+ "D\u0000\u0000\u089e\u08a0\u0005C\u0000\u0000\u089f\u089c\u0001\u0000\u0000"+
+ "\u0000\u089f\u089d\u0001\u0000\u0000\u0000\u08a0\u017b\u0001\u0000\u0000"+
+ "\u0000\u08a1\u08a2\u0003\u0160\u00b0\u0000\u08a2\u08a3\u0005A\u0000\u0000"+
+ "\u08a3\u08a4\u0005f\u0000\u0000\u08a4\u08af\u0001\u0000\u0000\u0000\u08a5"+
+ "\u08a6\u0005(\u0000\u0000\u08a6\u08a7\u0005A\u0000\u0000\u08a7\u08af\u0005"+
+ "f\u0000\u0000\u08a8\u08a9\u00036\u001b\u0000\u08a9\u08aa\u0005A\u0000"+
+ "\u0000\u08aa\u08ab\u0005(\u0000\u0000\u08ab\u08ac\u0005A\u0000\u0000\u08ac"+
+ "\u08ad\u0005f\u0000\u0000\u08ad\u08af\u0001\u0000\u0000\u0000\u08ae\u08a1"+
+ "\u0001\u0000\u0000\u0000\u08ae\u08a5\u0001\u0000\u0000\u0000\u08ae\u08a8"+
+ "\u0001\u0000\u0000\u0000\u08af\u017d\u0001\u0000\u0000\u0000\u08b0\u08b1"+
+ "\u0005A\u0000\u0000\u08b1\u08b2\u0005f\u0000\u0000\u08b2\u017f\u0001\u0000"+
+ "\u0000\u0000\u08b3\u08b4\u0005(\u0000\u0000\u08b4\u08b5\u0005A\u0000\u0000"+
+ "\u08b5\u08bd\u0005f\u0000\u0000\u08b6\u08b7\u00036\u001b\u0000\u08b7\u08b8"+
+ "\u0005A\u0000\u0000\u08b8\u08b9\u0005(\u0000\u0000\u08b9\u08ba\u0005A"+
+ "\u0000\u0000\u08ba\u08bb\u0005f\u0000\u0000\u08bb\u08bd\u0001\u0000\u0000"+
+ "\u0000\u08bc\u08b3\u0001\u0000\u0000\u0000\u08bc\u08b6\u0001\u0000\u0000"+
+ "\u0000\u08bd\u0181\u0001\u0000\u0000\u0000\u08be\u08bf\u0003:\u001d\u0000"+
+ "\u08bf\u08c0\u0005=\u0000\u0000\u08c0\u08c1\u0003\u019e\u00cf\u0000\u08c1"+
+ "\u08c2\u0005>\u0000\u0000\u08c2\u08c9\u0001\u0000\u0000\u0000\u08c3\u08c4"+
+ "\u0003\u0166\u00b3\u0000\u08c4\u08c5\u0005=\u0000\u0000\u08c5\u08c6\u0003"+
+ "\u019e\u00cf\u0000\u08c6\u08c7\u0005>\u0000\u0000\u08c7\u08c9\u0001\u0000"+
+ "\u0000\u0000\u08c8\u08be\u0001\u0000\u0000\u0000\u08c8\u08c3\u0001\u0000"+
+ "\u0000\u0000\u08c9\u08d1\u0001\u0000\u0000\u0000\u08ca\u08cb\u0003\u0164"+
+ "\u00b2\u0000\u08cb\u08cc\u0005=\u0000\u0000\u08cc\u08cd\u0003\u019e\u00cf"+
+ "\u0000\u08cd\u08ce\u0005>\u0000\u0000\u08ce\u08d0\u0001\u0000\u0000\u0000"+
+ "\u08cf\u08ca\u0001\u0000\u0000\u0000\u08d0\u08d3\u0001\u0000\u0000\u0000"+
+ "\u08d1\u08cf\u0001\u0000\u0000\u0000\u08d1\u08d2\u0001\u0000\u0000\u0000"+
+ "\u08d2\u0183\u0001\u0000\u0000\u0000\u08d3\u08d1\u0001\u0000\u0000\u0000"+
+ "\u08d4\u08d5\u0003\u016c\u00b6\u0000\u08d5\u08d6\u0005=\u0000\u0000\u08d6"+
+ "\u08d7\u0003\u019e\u00cf\u0000\u08d7\u08d8\u0005>\u0000\u0000\u08d8\u08e0"+
+ "\u0001\u0000\u0000\u0000\u08d9\u08da\u0003\u016a\u00b5\u0000\u08da\u08db"+
+ "\u0005=\u0000\u0000\u08db\u08dc\u0003\u019e\u00cf\u0000\u08dc\u08dd\u0005"+
+ ">\u0000\u0000\u08dd\u08df\u0001\u0000\u0000\u0000\u08de\u08d9\u0001\u0000"+
+ "\u0000\u0000\u08df\u08e2\u0001\u0000\u0000\u0000\u08e0\u08de\u0001\u0000"+
+ "\u0000\u0000\u08e0\u08e1\u0001\u0000\u0000\u0000\u08e1\u0185\u0001\u0000"+
+ "\u0000\u0000\u08e2\u08e0\u0001\u0000\u0000\u0000\u08e3\u08e4\u0003:\u001d"+
+ "\u0000\u08e4\u08e5\u0005=\u0000\u0000\u08e5\u08e6\u0003\u019e\u00cf\u0000"+
+ "\u08e6\u08e7\u0005>\u0000\u0000\u08e7\u08ee\u0001\u0000\u0000\u0000\u08e8"+
+ "\u08e9\u0003\u0172\u00b9\u0000\u08e9\u08ea\u0005=\u0000\u0000\u08ea\u08eb"+
+ "\u0003\u019e\u00cf\u0000\u08eb\u08ec\u0005>\u0000\u0000\u08ec\u08ee\u0001"+
+ "\u0000\u0000\u0000\u08ed\u08e3\u0001\u0000\u0000\u0000\u08ed\u08e8\u0001"+
+ "\u0000\u0000\u0000\u08ee\u08f6\u0001\u0000\u0000\u0000\u08ef\u08f0\u0003"+
+ "\u0170\u00b8\u0000\u08f0\u08f1\u0005=\u0000\u0000\u08f1\u08f2\u0003\u019e"+
+ "\u00cf\u0000\u08f2\u08f3\u0005>\u0000\u0000\u08f3\u08f5\u0001\u0000\u0000"+
+ "\u0000\u08f4\u08ef\u0001\u0000\u0000\u0000\u08f5\u08f8\u0001\u0000\u0000"+
+ "\u0000\u08f6\u08f4\u0001\u0000\u0000\u0000\u08f6\u08f7\u0001\u0000\u0000"+
+ "\u0000\u08f7\u0187\u0001\u0000\u0000\u0000\u08f8\u08f6\u0001\u0000\u0000"+
+ "\u0000\u08f9\u08fa\u0003<\u001e\u0000\u08fa\u08fc\u00059\u0000\u0000\u08fb"+
+ "\u08fd\u0003\u018e\u00c7\u0000\u08fc\u08fb\u0001\u0000\u0000\u0000\u08fc"+
+ "\u08fd\u0001\u0000\u0000\u0000\u08fd\u08fe\u0001\u0000\u0000\u0000\u08fe"+
+ "\u08ff\u0005:\u0000\u0000\u08ff\u093e\u0001\u0000\u0000\u0000\u0900\u0901"+
+ "\u00036\u001b\u0000\u0901\u0903\u0005A\u0000\u0000\u0902\u0904\u0003*"+
+ "\u0015\u0000\u0903\u0902\u0001\u0000\u0000\u0000\u0903\u0904\u0001\u0000"+
+ "\u0000\u0000\u0904\u0905\u0001\u0000\u0000\u0000\u0905\u0906\u0005f\u0000"+
+ "\u0000\u0906\u0908\u00059\u0000\u0000\u0907\u0909\u0003\u018e\u00c7\u0000"+
+ "\u0908\u0907\u0001\u0000\u0000\u0000\u0908\u0909\u0001\u0000\u0000\u0000"+
+ "\u0909\u090a\u0001\u0000\u0000\u0000\u090a\u090b\u0005:\u0000\u0000\u090b"+
+ "\u093e\u0001\u0000\u0000\u0000\u090c\u090d\u0003:\u001d\u0000\u090d\u090f"+
+ "\u0005A\u0000\u0000\u090e\u0910\u0003*\u0015\u0000\u090f\u090e\u0001\u0000"+
+ "\u0000\u0000\u090f\u0910\u0001\u0000\u0000\u0000\u0910\u0911\u0001\u0000"+
+ "\u0000\u0000\u0911\u0912\u0005f\u0000\u0000\u0912\u0914\u00059\u0000\u0000"+
+ "\u0913\u0915\u0003\u018e\u00c7\u0000\u0914\u0913\u0001\u0000\u0000\u0000"+
+ "\u0914\u0915\u0001\u0000\u0000\u0000\u0915\u0916\u0001\u0000\u0000\u0000"+
+ "\u0916\u0917\u0005:\u0000\u0000\u0917\u093e\u0001\u0000\u0000\u0000\u0918"+
+ "\u0919\u0003\u0160\u00b0\u0000\u0919\u091b\u0005A\u0000\u0000\u091a\u091c"+
+ "\u0003*\u0015\u0000\u091b\u091a\u0001\u0000\u0000\u0000\u091b\u091c\u0001"+
+ "\u0000\u0000\u0000\u091c\u091d\u0001\u0000\u0000\u0000\u091d\u091e\u0005"+
+ "f\u0000\u0000\u091e\u0920\u00059\u0000\u0000\u091f\u0921\u0003\u018e\u00c7"+
+ "\u0000\u0920\u091f\u0001\u0000\u0000\u0000\u0920\u0921\u0001\u0000\u0000"+
+ "\u0000\u0921\u0922\u0001\u0000\u0000\u0000\u0922\u0923\u0005:\u0000\u0000"+
+ "\u0923\u093e\u0001\u0000\u0000\u0000\u0924\u0925\u0005(\u0000\u0000\u0925"+
+ "\u0927\u0005A\u0000\u0000\u0926\u0928\u0003*\u0015\u0000\u0927\u0926\u0001"+
+ "\u0000\u0000\u0000\u0927\u0928\u0001\u0000\u0000\u0000\u0928\u0929\u0001"+
+ "\u0000\u0000\u0000\u0929\u092a\u0005f\u0000\u0000\u092a\u092c\u00059\u0000"+
+ "\u0000\u092b\u092d\u0003\u018e\u00c7\u0000\u092c\u092b\u0001\u0000\u0000"+
+ "\u0000\u092c\u092d\u0001\u0000\u0000\u0000\u092d\u092e\u0001\u0000\u0000"+
+ "\u0000\u092e\u093e\u0005:\u0000\u0000\u092f\u0930\u00036\u001b\u0000\u0930"+
+ "\u0931\u0005A\u0000\u0000\u0931\u0932\u0005(\u0000\u0000\u0932\u0934\u0005"+
+ "A\u0000\u0000\u0933\u0935\u0003*\u0015\u0000\u0934\u0933\u0001\u0000\u0000"+
+ "\u0000\u0934\u0935\u0001\u0000\u0000\u0000\u0935\u0936\u0001\u0000\u0000"+
+ "\u0000\u0936\u0937\u0005f\u0000\u0000\u0937\u0939\u00059\u0000\u0000\u0938"+
+ "\u093a\u0003\u018e\u00c7\u0000\u0939\u0938\u0001\u0000\u0000\u0000\u0939"+
+ "\u093a\u0001\u0000\u0000\u0000\u093a\u093b\u0001\u0000\u0000\u0000\u093b"+
+ "\u093c\u0005:\u0000\u0000\u093c\u093e\u0001\u0000\u0000\u0000\u093d\u08f9"+
+ "\u0001\u0000\u0000\u0000\u093d\u0900\u0001\u0000\u0000\u0000\u093d\u090c"+
+ "\u0001\u0000\u0000\u0000\u093d\u0918\u0001\u0000\u0000\u0000\u093d\u0924"+
+ "\u0001\u0000\u0000\u0000\u093d\u092f\u0001\u0000\u0000\u0000\u093e\u0189"+
+ "\u0001\u0000\u0000\u0000\u093f\u0941\u0005A\u0000\u0000\u0940\u0942\u0003"+
+ "*\u0015\u0000\u0941\u0940\u0001\u0000\u0000\u0000\u0941\u0942\u0001\u0000"+
+ "\u0000\u0000\u0942\u0943\u0001\u0000\u0000\u0000\u0943\u0944\u0005f\u0000"+
+ "\u0000\u0944\u0946\u00059\u0000\u0000\u0945\u0947\u0003\u018e\u00c7\u0000"+
+ "\u0946\u0945\u0001\u0000\u0000\u0000\u0946\u0947\u0001\u0000\u0000\u0000"+
+ "\u0947\u0948\u0001\u0000\u0000\u0000\u0948\u0949\u0005:\u0000\u0000\u0949"+
+ "\u018b\u0001\u0000\u0000\u0000\u094a\u094b\u0003<\u001e\u0000\u094b\u094d"+
+ "\u00059\u0000\u0000\u094c\u094e\u0003\u018e\u00c7\u0000\u094d\u094c\u0001"+
+ "\u0000\u0000\u0000\u094d\u094e\u0001\u0000\u0000\u0000\u094e\u094f\u0001"+
+ "\u0000\u0000\u0000\u094f\u0950\u0005:\u0000\u0000\u0950\u0983\u0001\u0000"+
+ "\u0000\u0000\u0951\u0952\u00036\u001b\u0000\u0952\u0954\u0005A\u0000\u0000"+
+ "\u0953\u0955\u0003*\u0015\u0000\u0954\u0953\u0001\u0000\u0000\u0000\u0954"+
+ "\u0955\u0001\u0000\u0000\u0000\u0955\u0956\u0001\u0000\u0000\u0000\u0956"+
+ "\u0957\u0005f\u0000\u0000\u0957\u0959\u00059\u0000\u0000\u0958\u095a\u0003"+
+ "\u018e\u00c7\u0000\u0959\u0958\u0001\u0000\u0000\u0000\u0959\u095a\u0001"+
+ "\u0000\u0000\u0000\u095a\u095b\u0001\u0000\u0000\u0000\u095b\u095c\u0005"+
+ ":\u0000\u0000\u095c\u0983\u0001\u0000\u0000\u0000\u095d\u095e\u0003:\u001d"+
+ "\u0000\u095e\u0960\u0005A\u0000\u0000\u095f\u0961\u0003*\u0015\u0000\u0960"+
+ "\u095f\u0001\u0000\u0000\u0000\u0960\u0961\u0001\u0000\u0000\u0000\u0961"+
+ "\u0962\u0001\u0000\u0000\u0000\u0962\u0963\u0005f\u0000\u0000\u0963\u0965"+
+ "\u00059\u0000\u0000\u0964\u0966\u0003\u018e\u00c7\u0000\u0965\u0964\u0001"+
+ "\u0000\u0000\u0000\u0965\u0966\u0001\u0000\u0000\u0000\u0966\u0967\u0001"+
+ "\u0000\u0000\u0000\u0967\u0968\u0005:\u0000\u0000\u0968\u0983\u0001\u0000"+
+ "\u0000\u0000\u0969\u096a\u0005(\u0000\u0000\u096a\u096c\u0005";
+ private static final String _serializedATNSegment1 =
+ "A\u0000\u0000\u096b\u096d\u0003*\u0015\u0000\u096c\u096b\u0001\u0000\u0000"+
+ "\u0000\u096c\u096d\u0001\u0000\u0000\u0000\u096d\u096e\u0001\u0000\u0000"+
+ "\u0000\u096e\u096f\u0005f\u0000\u0000\u096f\u0971\u00059\u0000\u0000\u0970"+
+ "\u0972\u0003\u018e\u00c7\u0000\u0971\u0970\u0001\u0000\u0000\u0000\u0971"+
+ "\u0972\u0001\u0000\u0000\u0000\u0972\u0973\u0001\u0000\u0000\u0000\u0973"+
+ "\u0983\u0005:\u0000\u0000\u0974\u0975\u00036\u001b\u0000\u0975\u0976\u0005"+
+ "A\u0000\u0000\u0976\u0977\u0005(\u0000\u0000\u0977\u0979\u0005A\u0000"+
+ "\u0000\u0978\u097a\u0003*\u0015\u0000\u0979\u0978\u0001\u0000\u0000\u0000"+
+ "\u0979\u097a\u0001\u0000\u0000\u0000\u097a\u097b\u0001\u0000\u0000\u0000"+
+ "\u097b\u097c\u0005f\u0000\u0000\u097c\u097e\u00059\u0000\u0000\u097d\u097f"+
+ "\u0003\u018e\u00c7\u0000\u097e\u097d\u0001\u0000\u0000\u0000\u097e\u097f"+
+ "\u0001\u0000\u0000\u0000\u097f\u0980\u0001\u0000\u0000\u0000\u0980\u0981"+
+ "\u0005:\u0000\u0000\u0981\u0983\u0001\u0000\u0000\u0000\u0982\u094a\u0001"+
+ "\u0000\u0000\u0000\u0982\u0951\u0001\u0000\u0000\u0000\u0982\u095d\u0001"+
+ "\u0000\u0000\u0000\u0982\u0969\u0001\u0000\u0000\u0000\u0982\u0974\u0001"+
+ "\u0000\u0000\u0000\u0983\u018d\u0001\u0000\u0000\u0000\u0984\u0989\u0003"+
+ "\u019e\u00cf\u0000\u0985\u0986\u0005@\u0000\u0000\u0986\u0988\u0003\u019e"+
+ "\u00cf\u0000\u0987\u0985\u0001\u0000\u0000\u0000\u0988\u098b\u0001\u0000"+
+ "\u0000\u0000\u0989\u0987\u0001\u0000\u0000\u0000\u0989\u098a\u0001\u0000"+
+ "\u0000\u0000\u098a\u018f\u0001\u0000\u0000\u0000\u098b\u0989\u0001\u0000"+
+ "\u0000\u0000\u098c\u098d\u0003:\u001d\u0000\u098d\u098f\u0005Z\u0000\u0000"+
+ "\u098e\u0990\u0003*\u0015\u0000\u098f\u098e\u0001\u0000\u0000\u0000\u098f"+
+ "\u0990\u0001\u0000\u0000\u0000\u0990\u0991\u0001\u0000\u0000\u0000\u0991"+
+ "\u0992\u0005f\u0000\u0000\u0992\u09bc\u0001\u0000\u0000\u0000\u0993\u0994"+
+ "\u0003\f\u0006\u0000\u0994\u0996\u0005Z\u0000\u0000\u0995\u0997\u0003"+
+ "*\u0015\u0000\u0996\u0995\u0001\u0000\u0000\u0000\u0996\u0997\u0001\u0000"+
+ "\u0000\u0000\u0997\u0998\u0001\u0000\u0000\u0000\u0998\u0999\u0005f\u0000"+
+ "\u0000\u0999\u09bc\u0001\u0000\u0000\u0000\u099a\u099b\u0003\u0160\u00b0"+
+ "\u0000\u099b\u099d\u0005Z\u0000\u0000\u099c\u099e\u0003*\u0015\u0000\u099d"+
+ "\u099c\u0001\u0000\u0000\u0000\u099d\u099e\u0001\u0000\u0000\u0000\u099e"+
+ "\u099f\u0001\u0000\u0000\u0000\u099f\u09a0\u0005f\u0000\u0000\u09a0\u09bc"+
+ "\u0001\u0000\u0000\u0000\u09a1\u09a2\u0005(\u0000\u0000\u09a2\u09a4\u0005"+
+ "Z\u0000\u0000\u09a3\u09a5\u0003*\u0015\u0000\u09a4\u09a3\u0001\u0000\u0000"+
+ "\u0000\u09a4\u09a5\u0001\u0000\u0000\u0000\u09a5\u09a6\u0001\u0000\u0000"+
+ "\u0000\u09a6\u09bc\u0005f\u0000\u0000\u09a7\u09a8\u00036\u001b\u0000\u09a8"+
+ "\u09a9\u0005A\u0000\u0000\u09a9\u09aa\u0005(\u0000\u0000\u09aa\u09ac\u0005"+
+ "Z\u0000\u0000\u09ab\u09ad\u0003*\u0015\u0000\u09ac\u09ab\u0001\u0000\u0000"+
+ "\u0000\u09ac\u09ad\u0001\u0000\u0000\u0000\u09ad\u09ae\u0001\u0000\u0000"+
+ "\u0000\u09ae\u09af\u0005f\u0000\u0000\u09af\u09bc\u0001\u0000\u0000\u0000"+
+ "\u09b0\u09b1\u0003\u0010\b\u0000\u09b1\u09b3\u0005Z\u0000\u0000\u09b2"+
+ "\u09b4\u0003*\u0015\u0000\u09b3\u09b2\u0001\u0000\u0000\u0000\u09b3\u09b4"+
+ "\u0001\u0000\u0000\u0000\u09b4\u09b5\u0001\u0000\u0000\u0000\u09b5\u09b6"+
+ "\u0005\u001f\u0000\u0000\u09b6\u09bc\u0001\u0000\u0000\u0000\u09b7\u09b8"+
+ "\u0003\u001e\u000f\u0000\u09b8\u09b9\u0005Z\u0000\u0000\u09b9\u09ba\u0005"+
+ "\u001f\u0000\u0000\u09ba\u09bc\u0001\u0000\u0000\u0000\u09bb\u098c\u0001"+
+ "\u0000\u0000\u0000\u09bb\u0993\u0001\u0000\u0000\u0000\u09bb\u099a\u0001"+
+ "\u0000\u0000\u0000\u09bb\u09a1\u0001\u0000\u0000\u0000\u09bb\u09a7\u0001"+
+ "\u0000\u0000\u0000\u09bb\u09b0\u0001\u0000\u0000\u0000\u09bb\u09b7\u0001"+
+ "\u0000\u0000\u0000\u09bc\u0191\u0001\u0000\u0000\u0000\u09bd\u09bf\u0005"+
+ "Z\u0000\u0000\u09be\u09c0\u0003*\u0015\u0000\u09bf\u09be\u0001\u0000\u0000"+
+ "\u0000\u09bf\u09c0\u0001\u0000\u0000\u0000\u09c0\u09c1\u0001\u0000\u0000"+
+ "\u0000\u09c1\u09c2\u0005f\u0000\u0000\u09c2\u0193\u0001\u0000\u0000\u0000"+
+ "\u09c3\u09c4\u0003:\u001d\u0000\u09c4\u09c6\u0005Z\u0000\u0000\u09c5\u09c7"+
+ "\u0003*\u0015\u0000\u09c6\u09c5\u0001\u0000\u0000\u0000\u09c6\u09c7\u0001"+
+ "\u0000\u0000\u0000\u09c7\u09c8\u0001\u0000\u0000\u0000\u09c8\u09c9\u0005"+
+ "f\u0000\u0000\u09c9\u09ec\u0001\u0000\u0000\u0000\u09ca\u09cb\u0003\f"+
+ "\u0006\u0000\u09cb\u09cd\u0005Z\u0000\u0000\u09cc\u09ce\u0003*\u0015\u0000"+
+ "\u09cd\u09cc\u0001\u0000\u0000\u0000\u09cd\u09ce\u0001\u0000\u0000\u0000"+
+ "\u09ce\u09cf\u0001\u0000\u0000\u0000\u09cf\u09d0\u0005f\u0000\u0000\u09d0"+
+ "\u09ec\u0001\u0000\u0000\u0000\u09d1\u09d2\u0005(\u0000\u0000\u09d2\u09d4"+
+ "\u0005Z\u0000\u0000\u09d3\u09d5\u0003*\u0015\u0000\u09d4\u09d3\u0001\u0000"+
+ "\u0000\u0000\u09d4\u09d5\u0001\u0000\u0000\u0000\u09d5\u09d6\u0001\u0000"+
+ "\u0000\u0000\u09d6\u09ec\u0005f\u0000\u0000\u09d7\u09d8\u00036\u001b\u0000"+
+ "\u09d8\u09d9\u0005A\u0000\u0000\u09d9\u09da\u0005(\u0000\u0000\u09da\u09dc"+
+ "\u0005Z\u0000\u0000\u09db\u09dd\u0003*\u0015\u0000\u09dc\u09db\u0001\u0000"+
+ "\u0000\u0000\u09dc\u09dd\u0001\u0000\u0000\u0000\u09dd\u09de\u0001\u0000"+
+ "\u0000\u0000\u09de\u09df\u0005f\u0000\u0000\u09df\u09ec\u0001\u0000\u0000"+
+ "\u0000\u09e0\u09e1\u0003\u0010\b\u0000\u09e1\u09e3\u0005Z\u0000\u0000"+
+ "\u09e2\u09e4\u0003*\u0015\u0000\u09e3\u09e2\u0001\u0000\u0000\u0000\u09e3"+
+ "\u09e4\u0001\u0000\u0000\u0000\u09e4\u09e5\u0001\u0000\u0000\u0000\u09e5"+
+ "\u09e6\u0005\u001f\u0000\u0000\u09e6\u09ec\u0001\u0000\u0000\u0000\u09e7"+
+ "\u09e8\u0003\u001e\u000f\u0000\u09e8\u09e9\u0005Z\u0000\u0000\u09e9\u09ea"+
+ "\u0005\u001f\u0000\u0000\u09ea\u09ec\u0001\u0000\u0000\u0000\u09eb\u09c3"+
+ "\u0001\u0000\u0000\u0000\u09eb\u09ca\u0001\u0000\u0000\u0000\u09eb\u09d1"+
+ "\u0001\u0000\u0000\u0000\u09eb\u09d7\u0001\u0000\u0000\u0000\u09eb\u09e0"+
+ "\u0001\u0000\u0000\u0000\u09eb\u09e7\u0001\u0000\u0000\u0000\u09ec\u0195"+
+ "\u0001\u0000\u0000\u0000\u09ed\u09ee\u0005\u001f\u0000\u0000\u09ee\u09ef"+
+ "\u0003\u0004\u0002\u0000\u09ef\u09f1\u0003\u0198\u00cc\u0000\u09f0\u09f2"+
+ "\u0003 \u0010\u0000\u09f1\u09f0\u0001\u0000\u0000\u0000\u09f1\u09f2\u0001"+
+ "\u0000\u0000\u0000\u09f2\u0a04\u0001\u0000\u0000\u0000\u09f3\u09f4\u0005"+
+ "\u001f\u0000\u0000\u09f4\u09f5\u0003\u000e\u0007\u0000\u09f5\u09f7\u0003"+
+ "\u0198\u00cc\u0000\u09f6\u09f8\u0003 \u0010\u0000\u09f7\u09f6\u0001\u0000"+
+ "\u0000\u0000\u09f7\u09f8\u0001\u0000\u0000\u0000\u09f8\u0a04\u0001\u0000"+
+ "\u0000\u0000\u09f9\u09fa\u0005\u001f\u0000\u0000\u09fa\u09fb\u0003\u0004"+
+ "\u0002\u0000\u09fb\u09fc\u0003 \u0010\u0000\u09fc\u09fd\u0003\u00f8|\u0000"+
+ "\u09fd\u0a04\u0001\u0000\u0000\u0000\u09fe\u09ff\u0005\u001f\u0000\u0000"+
+ "\u09ff\u0a00\u0003\u000e\u0007\u0000\u0a00\u0a01\u0003 \u0010\u0000\u0a01"+
+ "\u0a02\u0003\u00f8|\u0000\u0a02\u0a04\u0001\u0000\u0000\u0000\u0a03\u09ed"+
+ "\u0001\u0000\u0000\u0000\u0a03\u09f3\u0001\u0000\u0000\u0000\u0a03\u09f9"+
+ "\u0001\u0000\u0000\u0000\u0a03\u09fe\u0001\u0000\u0000\u0000\u0a04\u0197"+
+ "\u0001\u0000\u0000\u0000\u0a05\u0a09\u0003\u019a\u00cd\u0000\u0a06\u0a08"+
+ "\u0003\u019a\u00cd\u0000\u0a07\u0a06\u0001\u0000\u0000\u0000\u0a08\u0a0b"+
+ "\u0001\u0000\u0000\u0000\u0a09\u0a07\u0001\u0000\u0000\u0000\u0a09\u0a0a"+
+ "\u0001\u0000\u0000\u0000\u0a0a\u0199\u0001\u0000\u0000\u0000\u0a0b\u0a09"+
+ "\u0001\u0000\u0000\u0000\u0a0c\u0a0e\u0003\u00e6s\u0000\u0a0d\u0a0c\u0001"+
+ "\u0000\u0000\u0000\u0a0e\u0a11\u0001\u0000\u0000\u0000\u0a0f\u0a0d\u0001"+
+ "\u0000\u0000\u0000\u0a0f\u0a10\u0001\u0000\u0000\u0000\u0a10\u0a12\u0001"+
+ "\u0000\u0000\u0000\u0a11\u0a0f\u0001\u0000\u0000\u0000\u0a12\u0a13\u0005"+
+ "=\u0000\u0000\u0a13\u0a14\u0003\u019e\u00cf\u0000\u0a14\u0a15\u0005>\u0000"+
+ "\u0000\u0a15\u019b\u0001\u0000\u0000\u0000\u0a16\u0a17\u0003\u019e\u00cf"+
+ "\u0000\u0a17\u019d\u0001\u0000\u0000\u0000\u0a18\u0a1b\u0003\u01a0\u00d0"+
+ "\u0000\u0a19\u0a1b\u0003\u01a8\u00d4\u0000\u0a1a\u0a18\u0001\u0000\u0000"+
+ "\u0000\u0a1a\u0a19\u0001\u0000\u0000\u0000\u0a1b\u019f\u0001\u0000\u0000"+
+ "\u0000\u0a1c\u0a1d\u0003\u01a2\u00d1\u0000\u0a1d\u0a1e\u0005Y\u0000\u0000"+
+ "\u0a1e\u0a1f\u0003\u01a6\u00d3\u0000\u0a1f\u01a1\u0001\u0000\u0000\u0000"+
+ "\u0a20\u0a2b\u0005f\u0000\u0000\u0a21\u0a23\u00059\u0000\u0000\u0a22\u0a24"+
+ "\u0003\u0096K\u0000\u0a23\u0a22\u0001\u0000\u0000\u0000\u0a23\u0a24\u0001"+
+ "\u0000\u0000\u0000\u0a24\u0a25\u0001\u0000\u0000\u0000\u0a25\u0a2b\u0005"+
+ ":\u0000\u0000\u0a26\u0a27\u00059\u0000\u0000\u0a27\u0a28\u0003\u01a4\u00d2"+
+ "\u0000\u0a28\u0a29\u0005:\u0000\u0000\u0a29\u0a2b\u0001\u0000\u0000\u0000"+
+ "\u0a2a\u0a20\u0001\u0000\u0000\u0000\u0a2a\u0a21\u0001\u0000\u0000\u0000"+
+ "\u0a2a\u0a26\u0001\u0000\u0000\u0000\u0a2b\u01a3\u0001\u0000\u0000\u0000"+
+ "\u0a2c\u0a31\u0005f\u0000\u0000\u0a2d\u0a2e\u0005@\u0000\u0000\u0a2e\u0a30"+
+ "\u0005f\u0000\u0000\u0a2f\u0a2d\u0001\u0000\u0000\u0000\u0a30\u0a33\u0001"+
+ "\u0000\u0000\u0000\u0a31\u0a2f\u0001\u0000\u0000\u0000\u0a31\u0a32\u0001"+
+ "\u0000\u0000\u0000\u0a32\u01a5\u0001\u0000\u0000\u0000\u0a33\u0a31\u0001"+
+ "\u0000\u0000\u0000\u0a34\u0a37\u0003\u019e\u00cf\u0000\u0a35\u0a37\u0003"+
+ "\u00fc~\u0000\u0a36\u0a34\u0001\u0000\u0000\u0000\u0a36\u0a35\u0001\u0000"+
+ "\u0000\u0000\u0a37\u01a7\u0001\u0000\u0000\u0000\u0a38\u0a3b\u0003\u01b0"+
+ "\u00d8\u0000\u0a39\u0a3b\u0003\u01aa\u00d5\u0000\u0a3a\u0a38\u0001\u0000"+
+ "\u0000\u0000\u0a3a\u0a39\u0001\u0000\u0000\u0000\u0a3b\u01a9\u0001\u0000"+
+ "\u0000\u0000\u0a3c\u0a3d\u0003\u01ac\u00d6\u0000\u0a3d\u0a3e\u0003\u01ae"+
+ "\u00d7\u0000\u0a3e\u0a3f\u0003\u019e\u00cf\u0000\u0a3f\u01ab\u0001\u0000"+
+ "\u0000\u0000\u0a40\u0a44\u0003:\u001d\u0000\u0a41\u0a44\u0003\u017c\u00be"+
+ "\u0000\u0a42\u0a44\u0003\u0182\u00c1\u0000\u0a43\u0a40\u0001\u0000\u0000"+
+ "\u0000\u0a43\u0a41\u0001\u0000\u0000\u0000\u0a43\u0a42\u0001\u0000\u0000"+
+ "\u0000\u0a44\u01ad\u0001\u0000\u0000\u0000\u0a45\u0a46\u0007\u0003\u0000"+
+ "\u0000\u0a46\u01af\u0001\u0000\u0000\u0000\u0a47\u0a4f\u0003\u01b2\u00d9"+
+ "\u0000\u0a48\u0a49\u0003\u01b2\u00d9\u0000\u0a49\u0a4a\u0005G\u0000\u0000"+
+ "\u0a4a\u0a4b\u0003\u019e\u00cf\u0000\u0a4b\u0a4c\u0005H\u0000\u0000\u0a4c"+
+ "\u0a4d\u0003\u01b0\u00d8\u0000\u0a4d\u0a4f\u0001\u0000\u0000\u0000\u0a4e"+
+ "\u0a47\u0001\u0000\u0000\u0000\u0a4e\u0a48\u0001\u0000\u0000\u0000\u0a4f"+
+ "\u01b1\u0001\u0000\u0000\u0000\u0a50\u0a51\u0006\u00d9\uffff\uffff\u0000"+
+ "\u0a51\u0a52\u0003\u01b4\u00da\u0000\u0a52\u0a58\u0001\u0000\u0000\u0000"+
+ "\u0a53\u0a54\n\u0001\u0000\u0000\u0a54\u0a55\u0005N\u0000\u0000\u0a55"+
+ "\u0a57\u0003\u01b4\u00da\u0000\u0a56\u0a53\u0001\u0000\u0000\u0000\u0a57"+
+ "\u0a5a\u0001\u0000\u0000\u0000\u0a58\u0a56\u0001\u0000\u0000\u0000\u0a58"+
+ "\u0a59\u0001\u0000\u0000\u0000\u0a59\u01b3\u0001\u0000\u0000\u0000\u0a5a"+
+ "\u0a58\u0001\u0000\u0000\u0000\u0a5b\u0a5c\u0006\u00da\uffff\uffff\u0000"+
+ "\u0a5c\u0a5d\u0003\u01b6\u00db\u0000\u0a5d\u0a63\u0001\u0000\u0000\u0000"+
+ "\u0a5e\u0a5f\n\u0001\u0000\u0000\u0a5f\u0a60\u0005M\u0000\u0000\u0a60"+
+ "\u0a62\u0003\u01b6\u00db\u0000\u0a61\u0a5e\u0001\u0000\u0000\u0000\u0a62"+
+ "\u0a65\u0001\u0000\u0000\u0000\u0a63\u0a61\u0001\u0000\u0000\u0000\u0a63"+
+ "\u0a64\u0001\u0000\u0000\u0000\u0a64\u01b5\u0001\u0000\u0000\u0000\u0a65"+
+ "\u0a63\u0001\u0000\u0000\u0000\u0a66\u0a67\u0006\u00db\uffff\uffff\u0000"+
+ "\u0a67\u0a68\u0003\u01b8\u00dc\u0000\u0a68\u0a6e\u0001\u0000\u0000\u0000"+
+ "\u0a69\u0a6a\n\u0001\u0000\u0000\u0a6a\u0a6b\u0005V\u0000\u0000\u0a6b"+
+ "\u0a6d\u0003\u01b8\u00dc\u0000\u0a6c\u0a69\u0001\u0000\u0000\u0000\u0a6d"+
+ "\u0a70\u0001\u0000\u0000\u0000\u0a6e\u0a6c\u0001\u0000\u0000\u0000\u0a6e"+
+ "\u0a6f\u0001\u0000\u0000\u0000\u0a6f\u01b7\u0001\u0000\u0000\u0000\u0a70"+
+ "\u0a6e\u0001\u0000\u0000\u0000\u0a71\u0a72\u0006\u00dc\uffff\uffff\u0000"+
+ "\u0a72\u0a73\u0003\u01ba\u00dd\u0000\u0a73\u0a79\u0001\u0000\u0000\u0000"+
+ "\u0a74\u0a75\n\u0001\u0000\u0000\u0a75\u0a76\u0005W\u0000\u0000\u0a76"+
+ "\u0a78\u0003\u01ba\u00dd\u0000\u0a77\u0a74\u0001\u0000\u0000\u0000\u0a78"+
+ "\u0a7b\u0001\u0000\u0000\u0000\u0a79\u0a77\u0001\u0000\u0000\u0000\u0a79"+
+ "\u0a7a\u0001\u0000\u0000\u0000\u0a7a\u01b9\u0001\u0000\u0000\u0000\u0a7b"+
+ "\u0a79\u0001\u0000\u0000\u0000\u0a7c\u0a7d\u0006\u00dd\uffff\uffff\u0000"+
+ "\u0a7d\u0a7e\u0003\u01bc\u00de\u0000\u0a7e\u0a84\u0001\u0000\u0000\u0000"+
+ "\u0a7f\u0a80\n\u0001\u0000\u0000\u0a80\u0a81\u0005U\u0000\u0000\u0a81"+
+ "\u0a83\u0003\u01bc\u00de\u0000\u0a82\u0a7f\u0001\u0000\u0000\u0000\u0a83"+
+ "\u0a86\u0001\u0000\u0000\u0000\u0a84\u0a82\u0001\u0000\u0000\u0000\u0a84"+
+ "\u0a85\u0001\u0000\u0000\u0000\u0a85\u01bb\u0001\u0000\u0000\u0000\u0a86"+
+ "\u0a84\u0001\u0000\u0000\u0000\u0a87\u0a88\u0006\u00de\uffff\uffff\u0000"+
+ "\u0a88\u0a89\u0003\u01be\u00df\u0000\u0a89\u0a92\u0001\u0000\u0000\u0000"+
+ "\u0a8a\u0a8b\n\u0002\u0000\u0000\u0a8b\u0a8c\u0005I\u0000\u0000\u0a8c"+
+ "\u0a91\u0003\u01be\u00df\u0000\u0a8d\u0a8e\n\u0001\u0000\u0000\u0a8e\u0a8f"+
+ "\u0005L\u0000\u0000\u0a8f\u0a91\u0003\u01be\u00df\u0000\u0a90\u0a8a\u0001"+
+ "\u0000\u0000\u0000\u0a90\u0a8d\u0001\u0000\u0000\u0000\u0a91\u0a94\u0001"+
+ "\u0000\u0000\u0000\u0a92\u0a90\u0001\u0000\u0000\u0000\u0a92\u0a93\u0001"+
+ "\u0000\u0000\u0000\u0a93\u01bd\u0001\u0000\u0000\u0000\u0a94\u0a92\u0001"+
+ "\u0000\u0000\u0000\u0a95\u0a96\u0006\u00df\uffff\uffff\u0000\u0a96\u0a97"+
+ "\u0003\u01c0\u00e0\u0000\u0a97\u0aa9\u0001\u0000\u0000\u0000\u0a98\u0a99"+
+ "\n\u0005\u0000\u0000\u0a99\u0a9a\u0005D\u0000\u0000\u0a9a\u0aa8\u0003"+
+ "\u01c0\u00e0\u0000\u0a9b\u0a9c\n\u0004\u0000\u0000\u0a9c\u0a9d\u0005C"+
+ "\u0000\u0000\u0a9d\u0aa8\u0003\u01c0\u00e0\u0000\u0a9e\u0a9f\n\u0003\u0000"+
+ "\u0000\u0a9f\u0aa0\u0005J\u0000\u0000\u0aa0\u0aa8\u0003\u01c0\u00e0\u0000"+
+ "\u0aa1\u0aa2\n\u0002\u0000\u0000\u0aa2\u0aa3\u0005K\u0000\u0000\u0aa3"+
+ "\u0aa8\u0003\u01c0\u00e0\u0000\u0aa4\u0aa5\n\u0001\u0000\u0000\u0aa5\u0aa6"+
+ "\u0005\u001a\u0000\u0000\u0aa6\u0aa8\u0003\f\u0006\u0000\u0aa7\u0a98\u0001"+
+ "\u0000\u0000\u0000\u0aa7\u0a9b\u0001\u0000\u0000\u0000\u0aa7\u0a9e\u0001"+
+ "\u0000\u0000\u0000\u0aa7\u0aa1\u0001\u0000\u0000\u0000\u0aa7\u0aa4\u0001"+
+ "\u0000\u0000\u0000\u0aa8\u0aab\u0001\u0000\u0000\u0000\u0aa9\u0aa7\u0001"+
+ "\u0000\u0000\u0000\u0aa9\u0aaa\u0001\u0000\u0000\u0000\u0aaa\u01bf\u0001"+
+ "\u0000\u0000\u0000\u0aab\u0aa9\u0001\u0000\u0000\u0000\u0aac\u0aad\u0006"+
+ "\u00e0\uffff\uffff\u0000\u0aad\u0aae\u0003\u01c2\u00e1\u0000\u0aae\u0abe"+
+ "\u0001\u0000\u0000\u0000\u0aaf\u0ab0\n\u0003\u0000\u0000\u0ab0\u0ab1\u0005"+
+ "D\u0000\u0000\u0ab1\u0ab2\u0005D\u0000\u0000\u0ab2\u0abd\u0003\u01c2\u00e1"+
+ "\u0000\u0ab3\u0ab4\n\u0002\u0000\u0000\u0ab4\u0ab5\u0005C\u0000\u0000"+
+ "\u0ab5\u0ab6\u0005C\u0000\u0000\u0ab6\u0abd\u0003\u01c2\u00e1\u0000\u0ab7"+
+ "\u0ab8\n\u0001\u0000\u0000\u0ab8\u0ab9\u0005C\u0000\u0000\u0ab9\u0aba"+
+ "\u0005C\u0000\u0000\u0aba\u0abb\u0005C\u0000\u0000\u0abb\u0abd\u0003\u01c2"+
+ "\u00e1\u0000\u0abc\u0aaf\u0001\u0000\u0000\u0000\u0abc\u0ab3\u0001\u0000"+
+ "\u0000\u0000\u0abc\u0ab7\u0001\u0000\u0000\u0000\u0abd\u0ac0\u0001\u0000"+
+ "\u0000\u0000\u0abe\u0abc\u0001\u0000\u0000\u0000\u0abe\u0abf\u0001\u0000"+
+ "\u0000\u0000\u0abf\u01c1\u0001\u0000\u0000\u0000\u0ac0\u0abe\u0001\u0000"+
+ "\u0000\u0000\u0ac1\u0ac2\u0006\u00e1\uffff\uffff\u0000\u0ac2\u0ac3\u0003"+
+ "\u01c4\u00e2\u0000\u0ac3\u0acc\u0001\u0000\u0000\u0000\u0ac4\u0ac5\n\u0002"+
+ "\u0000\u0000\u0ac5\u0ac6\u0005Q\u0000\u0000\u0ac6\u0acb\u0003\u01c4\u00e2"+
+ "\u0000\u0ac7\u0ac8\n\u0001\u0000\u0000\u0ac8\u0ac9\u0005R\u0000\u0000"+
+ "\u0ac9\u0acb\u0003\u01c4\u00e2\u0000\u0aca\u0ac4\u0001\u0000\u0000\u0000"+
+ "\u0aca\u0ac7\u0001\u0000\u0000\u0000\u0acb\u0ace\u0001\u0000\u0000\u0000"+
+ "\u0acc\u0aca\u0001\u0000\u0000\u0000\u0acc\u0acd\u0001\u0000\u0000\u0000"+
+ "\u0acd\u01c3\u0001\u0000\u0000\u0000\u0ace\u0acc\u0001\u0000\u0000\u0000"+
+ "\u0acf\u0ad0\u0006\u00e2\uffff\uffff\u0000\u0ad0\u0ad1\u0003\u01c6\u00e3"+
+ "\u0000\u0ad1\u0add\u0001\u0000\u0000\u0000\u0ad2\u0ad3\n\u0003\u0000\u0000"+
+ "\u0ad3\u0ad4\u0005S\u0000\u0000\u0ad4\u0adc\u0003\u01c6\u00e3\u0000\u0ad5"+
+ "\u0ad6\n\u0002\u0000\u0000\u0ad6\u0ad7\u0005T\u0000\u0000\u0ad7\u0adc"+
+ "\u0003\u01c6\u00e3\u0000\u0ad8\u0ad9\n\u0001\u0000\u0000\u0ad9\u0ada\u0005"+
+ "X\u0000\u0000\u0ada\u0adc\u0003\u01c6\u00e3\u0000\u0adb\u0ad2\u0001\u0000"+
+ "\u0000\u0000\u0adb\u0ad5\u0001\u0000\u0000\u0000\u0adb\u0ad8\u0001\u0000"+
+ "\u0000\u0000\u0adc\u0adf\u0001\u0000\u0000\u0000\u0add\u0adb\u0001\u0000"+
+ "\u0000\u0000\u0add\u0ade\u0001\u0000\u0000\u0000\u0ade\u01c5\u0001\u0000"+
+ "\u0000\u0000\u0adf\u0add\u0001\u0000\u0000\u0000\u0ae0\u0ae8\u0003\u01c8"+
+ "\u00e4\u0000\u0ae1\u0ae8\u0003\u01ca\u00e5\u0000\u0ae2\u0ae3\u0005Q\u0000"+
+ "\u0000\u0ae3\u0ae8\u0003\u01c6\u00e3\u0000\u0ae4\u0ae5\u0005R\u0000\u0000"+
+ "\u0ae5\u0ae8\u0003\u01c6\u00e3\u0000\u0ae6\u0ae8\u0003\u01cc\u00e6\u0000"+
+ "\u0ae7\u0ae0\u0001\u0000\u0000\u0000\u0ae7\u0ae1\u0001\u0000\u0000\u0000"+
+ "\u0ae7\u0ae2\u0001\u0000\u0000\u0000\u0ae7\u0ae4\u0001\u0000\u0000\u0000"+
+ "\u0ae7\u0ae6\u0001\u0000\u0000\u0000\u0ae8\u01c7\u0001\u0000\u0000\u0000"+
+ "\u0ae9\u0aea\u0005O\u0000\u0000\u0aea\u0aeb\u0003\u01c6\u00e3\u0000\u0aeb"+
+ "\u01c9\u0001\u0000\u0000\u0000\u0aec\u0aed\u0005P\u0000\u0000\u0aed\u0aee"+
+ "\u0003\u01c6\u00e3\u0000\u0aee\u01cb\u0001\u0000\u0000\u0000\u0aef\u0af6"+
+ "\u0003\u01ce\u00e7\u0000\u0af0\u0af1\u0005F\u0000\u0000\u0af1\u0af6\u0003"+
+ "\u01c6\u00e3\u0000\u0af2\u0af3\u0005E\u0000\u0000\u0af3\u0af6\u0003\u01c6"+
+ "\u00e3\u0000\u0af4\u0af6\u0003\u01d8\u00ec\u0000\u0af5\u0aef\u0001\u0000"+
+ "\u0000\u0000\u0af5\u0af0\u0001\u0000\u0000\u0000\u0af5\u0af2\u0001\u0000"+
+ "\u0000\u0000\u0af5\u0af4\u0001\u0000\u0000\u0000\u0af6\u01cd\u0001\u0000"+
+ "\u0000\u0000\u0af7\u0afa\u0003\u0160\u00b0\u0000\u0af8\u0afa\u0003:\u001d"+
+ "\u0000\u0af9\u0af7\u0001\u0000\u0000\u0000\u0af9\u0af8\u0001\u0000\u0000"+
+ "\u0000\u0afa\u0aff\u0001\u0000\u0000\u0000\u0afb\u0afe\u0003\u01d2\u00e9"+
+ "\u0000\u0afc\u0afe\u0003\u01d6\u00eb\u0000\u0afd\u0afb\u0001\u0000\u0000"+
+ "\u0000\u0afd\u0afc\u0001\u0000\u0000\u0000\u0afe\u0b01\u0001\u0000\u0000"+
+ "\u0000\u0aff\u0afd\u0001\u0000\u0000\u0000\u0aff\u0b00\u0001\u0000\u0000"+
+ "\u0000\u0b00\u01cf\u0001\u0000\u0000\u0000\u0b01\u0aff\u0001\u0000\u0000"+
+ "\u0000\u0b02\u0b03\u0003\u01ce\u00e7\u0000\u0b03\u0b04\u0005O\u0000\u0000"+
+ "\u0b04\u01d1\u0001\u0000\u0000\u0000\u0b05\u0b06\u0005O\u0000\u0000\u0b06"+
+ "\u01d3\u0001\u0000\u0000\u0000\u0b07\u0b08\u0003\u01ce\u00e7\u0000\u0b08"+
+ "\u0b09\u0005P\u0000\u0000\u0b09\u01d5\u0001\u0000\u0000\u0000\u0b0a\u0b0b"+
+ "\u0005P\u0000\u0000\u0b0b\u01d7\u0001\u0000\u0000\u0000\u0b0c\u0b0d\u0005"+
+ "9\u0000\u0000\u0b0d\u0b0e\u0003\u0004\u0002\u0000\u0b0e\u0b0f\u0005:\u0000"+
+ "\u0000\u0b0f\u0b10\u0003\u01c6\u00e3\u0000\u0b10\u0b28\u0001\u0000\u0000"+
+ "\u0000\u0b11\u0b12\u00059\u0000\u0000\u0b12\u0b16\u0003\f\u0006\u0000"+
+ "\u0b13\u0b15\u0003(\u0014\u0000\u0b14\u0b13\u0001\u0000\u0000\u0000\u0b15"+
+ "\u0b18\u0001\u0000\u0000\u0000\u0b16\u0b14\u0001\u0000\u0000\u0000\u0b16"+
+ "\u0b17\u0001\u0000\u0000\u0000\u0b17\u0b19\u0001\u0000\u0000\u0000\u0b18"+
+ "\u0b16\u0001\u0000\u0000\u0000\u0b19\u0b1a\u0005:\u0000\u0000\u0b1a\u0b1b"+
+ "\u0003\u01cc\u00e6\u0000\u0b1b\u0b28\u0001\u0000\u0000\u0000\u0b1c\u0b1d"+
+ "\u00059\u0000\u0000\u0b1d\u0b21\u0003\f\u0006\u0000\u0b1e\u0b20\u0003"+
+ "(\u0014\u0000\u0b1f\u0b1e\u0001\u0000\u0000\u0000\u0b20\u0b23\u0001\u0000"+
+ "\u0000\u0000\u0b21\u0b1f\u0001\u0000\u0000\u0000\u0b21\u0b22\u0001\u0000"+
+ "\u0000\u0000\u0b22\u0b24\u0001\u0000\u0000\u0000\u0b23\u0b21\u0001\u0000"+
+ "\u0000\u0000\u0b24\u0b25\u0005:\u0000\u0000\u0b25\u0b26\u0003\u01a0\u00d0"+
+ "\u0000\u0b26\u0b28\u0001\u0000\u0000\u0000\u0b27\u0b0c\u0001\u0000\u0000"+
+ "\u0000\u0b27\u0b11\u0001\u0000\u0000\u0000\u0b27\u0b1c\u0001\u0000\u0000"+
+ "\u0000\u0b28\u01d9\u0001\u0000\u0000\u0000\u0144\u01de\u01e3\u01ea\u01ee"+
+ "\u01f2\u01fb\u01ff\u0203\u0205\u020b\u0210\u0217\u021c\u021e\u0224\u0229"+
+ "\u022e\u0233\u023e\u024c\u0251\u0259\u0260\u0266\u026b\u0276\u0279\u0287"+
+ "\u028c\u0291\u0296\u029c\u02a6\u02ae\u02b8\u02c0\u02cc\u02d0\u02d5\u02db"+
+ "\u02e3\u02ec\u02f7\u0314\u0318\u031d\u0323\u0326\u0329\u0335\u0340\u034e"+
+ "\u0355\u035e\u0365\u036a\u0379\u0380\u0386\u038a\u038e\u0392\u0396\u039b"+
+ "\u039f\u03a3\u03a5\u03aa\u03b1\u03b6\u03b8\u03be\u03c3\u03c7\u03da\u03df"+
+ "\u03ef\u03f4\u03fa\u0400\u0402\u0406\u040b\u040f\u0416\u041d\u0425\u0428"+
+ "\u042d\u0435\u043a\u0441\u0448\u044d\u0453\u045f\u0464\u0468\u0472\u0477"+
+ "\u047f\u0482\u0487\u048f\u0492\u0497\u049c\u04a1\u04a6\u04ad\u04b2\u04ba"+
+ "\u04bf\u04c4\u04c9\u04cf\u04d5\u04d8\u04db\u04e4\u04ea\u04f0\u04f3\u04f6"+
+ "\u04fe\u0503\u0508\u050e\u0511\u051c\u0525\u052f\u0534\u053f\u0544\u0550"+
+ "\u0555\u0561\u056b\u0570\u0578\u057b\u0582\u058a\u0590\u0599\u05a3\u05a7"+
+ "\u05aa\u05b3\u05c1\u05c4\u05cd\u05d2\u05da\u05e0\u05e8\u05f4\u05fb\u0609"+
+ "\u061f\u0641\u064d\u0653\u065f\u066c\u0686\u068a\u068f\u0693\u0697\u069f"+
+ "\u06a3\u06a7\u06ae\u06b7\u06bf\u06ce\u06da\u06e0\u06e6\u06fb\u0700\u0706"+
+ "\u0712\u071d\u0727\u072a\u072f\u0738\u073e\u0748\u074d\u0756\u076d\u0777"+
+ "\u078d\u0794\u079c\u07a4\u07af\u07c6\u07d0\u07db\u07f1\u07f5\u07fa\u0802"+
+ "\u0808\u080c\u0810\u0814\u081a\u081f\u0824\u0828\u082c\u0832\u0837\u083c"+
+ "\u0840\u0844\u0846\u084b\u0850\u0855\u0859\u085d\u0861\u0866\u086e\u0874"+
+ "\u0878\u087c\u0880\u0886\u088b\u0890\u0894\u0898\u089a\u089f\u08ae\u08bc"+
+ "\u08c8\u08d1\u08e0\u08ed\u08f6\u08fc\u0903\u0908\u090f\u0914\u091b\u0920"+
+ "\u0927\u092c\u0934\u0939\u093d\u0941\u0946\u094d\u0954\u0959\u0960\u0965"+
+ "\u096c\u0971\u0979\u097e\u0982\u0989\u098f\u0996\u099d\u09a4\u09ac\u09b3"+
+ "\u09bb\u09bf\u09c6\u09cd\u09d4\u09dc\u09e3\u09eb\u09f1\u09f7\u0a03\u0a09"+
+ "\u0a0f\u0a1a\u0a23\u0a2a\u0a31\u0a36\u0a3a\u0a43\u0a4e\u0a58\u0a63\u0a6e"+
+ "\u0a79\u0a84\u0a90\u0a92\u0aa7\u0aa9\u0abc\u0abe\u0aca\u0acc\u0adb\u0add"+
+ "\u0ae7\u0af5\u0af9\u0afd\u0aff\u0b16\u0b21\u0b27";
+ public static final String _serializedATN = Utils.join(
+ new String[] {
+ _serializedATNSegment0,
+ _serializedATNSegment1
+ },
+ ""
+ );
+ public static final ATN _ATN =
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
+ static {
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/ucfs/Java.x b/benchmarks/src/main/java/org/ucfs/Java.x
new file mode 100644
index 000000000..5223ffc76
--- /dev/null
+++ b/benchmarks/src/main/java/org/ucfs/Java.x
@@ -0,0 +1,166 @@
+package org.ucfs;
+
+import java.io.*;
+
+%%
+
+%public
+%class JavaLexer
+%type JavaToken
+%unicode
+
+Identifier = [:jletter:] [:jletterdigit:]*
+IntegerLiteral = {DecimalIntegerLiteral} | {HexIntegerLiteral} | {OctalIntegerLiteral} | {BinaryIntegerLiteral}
+
+DecimalIntegerLiteral = {DecimalNumeral} [lL]?
+HexIntegerLiteral = {HexNumeral} [lL]?
+OctalIntegerLiteral = {OctalNumeral} [lL]?
+BinaryIntegerLiteral = {BinaryNumeral} [lL]?
+
+DecimalNumeral = 0 | [1-9] {Digits}? | [1-9] "_"+ {Digits}
+Digits = [0-9] | [0-9] (([0-9] | "_")+)? [0-9]
+
+HexNumeral = "0x" {HexDigits} | "0X" {HexDigits}
+HexDigits = [0-9a-fA-F] ((([0-9a-fA-F] | "_")+)? [0-9a-fA-F])?
+
+OctalNumeral = 0 ("_"+)? {OctalDigits}
+OctalDigits = [0-7] ((([0-7] | "_")+)? [0-7])?
+
+BinaryNumeral = 0 [bB] {BinaryDigits}
+BinaryDigits = [0-1] ((([0-1] | "_")+)? [0-1])?
+
+FloatingPointLiteral = {DecimalFloatingPointLiteral} | {HexadecimalFloatingPointLiteral}
+DecimalFloatingPointLiteral = [0-9] "." [0-9]? {ExponentPart}? [fFdD]? | "." [0-9] {ExponentPart}? [fFdD]? | [0-9] {ExponentPart} [fFdD] | [0-9] {ExponentPart}? [fFdD]
+ExponentPart = [eE] [\+\-]? {Digits}
+HexadecimalFloatingPointLiteral = {HexSignificand} {BinaryExponent} [fFdD]?
+HexSignificand = {HexNumeral} "."? | 0 [xX] {HexDigits}? "." {HexDigits}
+BinaryExponent = [pP] [\+\-]? {Digits}
+
+BooleanLiteral = "false" | "true"
+NullLiteral = "null"
+
+InputCharacter = \\ "u"+ [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] | [^\r\n\"\\]
+
+EscapeSequence = \\ [btnfr\"\'\\] | \\ ([0-7] | [0-7] [0-7] | [0-3][0-7][0-7])
+LineTerminator = \r | \n | \r\n
+
+CharacterLiteral = \' [^\r\n\'\\] \' | \' {EscapeSequence} \'
+
+StringLiteral = \" {StringCharacter}* \"
+StringCharacter = {InputCharacter} | {EscapeSequence}
+WhiteSpace = {LineTerminator} | [\ \t\f]
+
+Comment = {TraditionalComment} | {DocumentationComment}
+TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/"
+DocumentationComment = "/**" {CommentContent} "*"+ "/"
+CommentContent = ( [^*] | \*+ [^/*] )*
+%%
+
+"//".* { /* DO NOTHING */ }
+"boolean" { return JavaToken.BOOLEAN; }
+"byte" { return JavaToken.BYTE; }
+"short" { return JavaToken.SHORT; }
+"int" { return JavaToken.INT; }
+"long" { return JavaToken.LONG; }
+"char" { return JavaToken.CHAR; }
+"float" { return JavaToken.FLOAT; }
+"double" { return JavaToken.DOUBLE; }
+"." { return JavaToken.DOT; }
+"[" { return JavaToken.BRACKETLEFT; }
+"]" { return JavaToken.BRACKETRIGHT; }
+"(" { return JavaToken.PARENTHLEFT; }
+")" { return JavaToken.PARENTHRIGHT; }
+"{" { return JavaToken.CURLYLEFT; }
+"}" { return JavaToken.CURLYRIGHT; }
+"extends" { return JavaToken.EXTENDS; }
+"&" { return JavaToken.ANDBIT; }
+"<" { return JavaToken.LT; }
+">" { return JavaToken.GT; }
+";" { return JavaToken.SEMICOLON; }
+":" { return JavaToken.COLON; }
+"::" { return JavaToken.DOUBLECOLON; }
+"..." { return JavaToken.ELLIPSIS; }
+"," { return JavaToken.COMMA; }
+"?" { return JavaToken.QUESTIONMARK; }
+"super" { return JavaToken.SUPER; }
+"package" { return JavaToken.PACKAGE; }
+"import" { return JavaToken.IMPORT; }
+"static" { return JavaToken.STATIC; }
+"*" { return JavaToken.STAR; }
+"+" { return JavaToken.PLUS; }
+"-" { return JavaToken.MINUS; }
+"%" { return JavaToken.PERCENT; }
+"/" { return JavaToken.SLASH; }
+"++" { return JavaToken.PLUSPLUS; }
+"--" { return JavaToken.MINUSMINUS; }
+"~" { return JavaToken.TILDA; }
+"!" { return JavaToken.EXCLAMATIONMARK; }
+"class" { return JavaToken.CLASS; }
+"public" { return JavaToken.PUBLIC; }
+"protected" { return JavaToken.PROTECTED; }
+"private" { return JavaToken.PRIVATE; }
+"abstract" { return JavaToken.ABSTRACT; }
+"final" { return JavaToken.FINAL; }
+"strictfp" { return JavaToken.STRICTFP; }
+"implements" { return JavaToken.IMPLEMENTS; }
+"transient" { return JavaToken.TRANSIENT; }
+"volatile" { return JavaToken.VOLATILE; }
+"=" { return JavaToken.ASSIGN; }
+"*=" { return JavaToken.STARASSIGN; }
+"/=" { return JavaToken.SLASHASSIGN; }
+"+=" { return JavaToken.PLUSASSIGN; }
+"-=" { return JavaToken.MINUSASSIGN; }
+"%=" { return JavaToken.PERCENTASSIGN; }
+"^=" { return JavaToken.XORASSIGN; }
+"<<=" { return JavaToken.SHIFTLEFTASSIGN; }
+">>=" { return JavaToken.SHIFTRIGHTASSIGN; }
+">>>=" { return JavaToken.USRIGHTSHIFTASSIGN; }
+"&=" { return JavaToken.ANDASSIGN; }
+"|=" { return JavaToken.ORASSIGN; }
+"||" { return JavaToken.OR; }
+"&&" { return JavaToken.AND; }
+"^" { return JavaToken.XORBIT; }
+"==" { return JavaToken.EQ; }
+"!=" { return JavaToken.NOTEQ; }
+"<=" { return JavaToken.LESSEQ; }
+">=" { return JavaToken.GREATEQ; }
+"instanceof" { return JavaToken.INSTANCEOF; }
+"synchronized" { return JavaToken.SYNCHRONIZED; }
+"native" { return JavaToken.NATIVE; }
+"void" { return JavaToken.VOID; }
+"this" { return JavaToken.THIS; }
+"throws" { return JavaToken.THROWS; }
+"enum" { return JavaToken.ENUM; }
+"interface" { return JavaToken.INTERFACE; }
+"@" { return JavaToken.AT; }
+"default" { return JavaToken.DEFAULT; }
+"assert" { return JavaToken.ASSERT; }
+"switch" { return JavaToken.SWITCH; }
+"case" { return JavaToken.CASE; }
+"while" { return JavaToken.WHILE; }
+"for" { return JavaToken.FOR; }
+"if" { return JavaToken.IF; }
+"else" { return JavaToken.ELSE; }
+"do" { return JavaToken.DO; }
+"break" { return JavaToken.BREAK; }
+"continue" { return JavaToken.CONTINUE; }
+"return" { return JavaToken.RETURN; }
+"throw" { return JavaToken.THROW; }
+"try" { return JavaToken.TRY; }
+"catch" { return JavaToken.CATCH; }
+"finally" { return JavaToken.FINALLY; }
+"|" { return JavaToken.ORBIT; }
+"new" { return JavaToken.NEW; }
+"->" { return JavaToken.ARROW; }
+
+{LineTerminator} {}
+{Comment} {}
+{WhiteSpace} {}
+{CharacterLiteral} { return JavaToken.CHARLIT; }
+{NullLiteral} { return JavaToken.NULLLIT; }
+{StringLiteral} { return JavaToken.STRINGLIT; }
+{FloatingPointLiteral} { return JavaToken.FLOATINGLIT; }
+{BooleanLiteral} { return JavaToken.BOOLEANLIT; }
+{IntegerLiteral} { return JavaToken.INTEGERLIT; }
+{Identifier} { return JavaToken.ID; }
+<> { return JavaToken.EOF; }
\ No newline at end of file
diff --git a/benchmarks/src/main/java/org/ucfs/JavaLexer.java b/benchmarks/src/main/java/org/ucfs/JavaLexer.java
new file mode 100644
index 000000000..34a130686
--- /dev/null
+++ b/benchmarks/src/main/java/org/ucfs/JavaLexer.java
@@ -0,0 +1,1808 @@
+// DO NOT EDIT
+// Generated by JFlex 1.8.2 http://jflex.de/
+// source: Java.x
+
+package org.ucfs;
+
+
+import java.io.*;
+
+
+// See https://github.com/jflex-de/jflex/issues/222
+@SuppressWarnings("FallThrough")
+public class JavaLexer {
+
+ /** This character denotes the end of file. */
+ public static final int YYEOF = -1;
+
+ /** Initial size of the lookahead buffer. */
+ private static final int ZZ_BUFFERSIZE = 16384;
+
+ // Lexical states.
+ public static final int YYINITIAL = 0;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static final int ZZ_LEXSTATE[] = {
+ 0, 0
+ };
+
+ /**
+ * Top-level table for translating characters to character classes
+ */
+ private static final int [] ZZ_CMAP_TOP = zzUnpackcmap_top();
+
+ private static final String ZZ_CMAP_TOP_PACKED_0 =
+ "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700"+
+ "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00"+
+ "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500"+
+ "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00"+
+ "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300"+
+ "\1\u2400\2\u1f00\31\u0100\1\u2500\121\u0100\1\u2600\4\u0100\1\u2700"+
+ "\1\u0100\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00\53\u0100"+
+ "\1\u2e00\10\u2f00\31\u1f00\1\u0100\1\u3000\1\u3100\1\u0100\1\u3200"+
+ "\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\1\u3a00"+
+ "\1\u0100\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000\1\u4100"+
+ "\1\u4200\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800\1\u4900"+
+ "\1\u4a00\1\u4b00\1\u4c00\1\u4d00\1\u4e00\1\u1f00\1\u4f00\1\u5000"+
+ "\1\u5100\1\u5200\3\u0100\1\u5300\1\u5400\1\u5500\12\u1f00\4\u0100"+
+ "\1\u5600\17\u1f00\2\u0100\1\u5700\41\u1f00\2\u0100\1\u5800\1\u5900"+
+ "\2\u1f00\1\u5a00\1\u5b00\27\u0100\1\u5c00\4\u0100\1\u5d00\1\u5e00"+
+ "\42\u1f00\1\u0100\1\u5f00\1\u6000\11\u1f00\1\u6100\24\u1f00\1\u6200"+
+ "\1\u6300\1\u1f00\1\u6400\1\u6500\1\u6600\1\u6700\2\u1f00\1\u6800"+
+ "\5\u1f00\1\u6900\1\u6a00\1\u6b00\5\u1f00\1\u6c00\1\u6d00\2\u1f00"+
+ "\1\u6e00\1\u1f00\1\u6f00\14\u1f00\1\u7000\4\u1f00\246\u0100\1\u7100"+
+ "\20\u0100\1\u7200\1\u7300\25\u0100\1\u7400\34\u0100\1\u7500\14\u1f00"+
+ "\2\u0100\1\u7600\5\u1f00\23\u0100\1\u7700\u0aec\u1f00\1\u7800\1\u7900"+
+ "\u02fe\u1f00";
+
+ private static int [] zzUnpackcmap_top() {
+ int [] result = new int[4352];
+ int offset = 0;
+ offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_top(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Second-level tables for translating characters to character classes
+ */
+ private static final int [] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();
+
+ private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
+ "\11\0\1\1\1\2\1\3\1\4\1\5\16\0\4\6"+
+ "\1\1\1\7\1\10\1\6\1\11\1\12\1\13\1\14"+
+ "\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+
+ "\1\25\1\26\2\27\4\30\2\31\1\32\1\33\1\34"+
+ "\1\35\1\36\1\37\1\40\1\41\1\42\1\41\1\43"+
+ "\1\44\1\43\5\11\1\45\3\11\1\46\7\11\1\47"+
+ "\2\11\1\50\1\51\1\52\1\53\1\54\1\6\1\55"+
+ "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65"+
+ "\1\11\1\66\1\67\1\70\1\71\1\72\1\73\1\11"+
+ "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103"+
+ "\1\104\1\105\1\106\1\107\1\110\6\0\1\111\32\0"+
+ "\2\6\4\11\4\6\1\11\2\6\1\0\7\6\1\11"+
+ "\4\6\1\11\5\6\27\11\1\6\37\11\1\6\u01ca\11"+
+ "\4\6\14\11\16\6\5\11\7\6\1\11\1\6\1\11"+
+ "\21\6\160\0\5\11\1\6\2\11\2\6\4\11\1\6"+
+ "\1\11\6\6\1\11\1\6\3\11\1\6\1\11\1\6"+
+ "\24\11\1\6\123\11\1\6\213\11\1\6\5\0\2\6"+
+ "\246\11\1\6\46\11\2\6\1\11\6\6\51\11\6\6"+
+ "\1\11\1\6\55\0\1\6\1\0\1\6\2\0\1\6"+
+ "\2\0\1\6\1\0\10\6\33\11\4\6\4\11\15\6"+
+ "\6\0\5\6\1\11\4\6\13\0\1\6\1\0\3\6"+
+ "\53\11\37\0\4\6\2\11\1\0\143\11\1\6\1\11"+
+ "\10\0\1\6\6\0\2\11\2\0\1\6\4\0\2\11"+
+ "\12\0\3\11\2\6\1\11\17\6\1\0\1\11\1\0"+
+ "\36\11\33\0\2\6\131\11\13\0\1\11\16\6\12\0"+
+ "\41\11\11\0\2\11\4\6\1\11\2\6\1\0\30\11"+
+ "\4\0\1\11\11\0\1\11\3\0\1\11\5\0\22\6"+
+ "\31\11\3\0\4\6\13\11\65\6\25\11\1\6\22\11"+
+ "\13\6\61\0\66\11\3\0\1\11\22\0\1\11\7\0"+
+ "\12\11\2\0\2\6\12\0\1\6\20\11\3\0\1\6"+
+ "\10\11\2\6\2\11\2\6\26\11\1\6\7\11\1\6"+
+ "\1\11\3\6\4\11\2\6\1\0\1\11\7\0\2\6"+
+ "\2\0\2\6\3\0\1\11\10\6\1\0\4\6\2\11"+
+ "\1\6\3\11\2\0\2\6\12\0\4\11\7\6\2\11"+
+ "\1\6\1\0\2\6\3\0\1\6\6\11\4\6\2\11"+
+ "\2\6\26\11\1\6\7\11\1\6\2\11\1\6\2\11"+
+ "\1\6\2\11\2\6\1\0\1\6\5\0\4\6\2\0"+
+ "\2\6\3\0\3\6\1\0\7\6\4\11\1\6\1\11"+
+ "\7\6\14\0\3\11\1\0\13\6\3\0\1\6\11\11"+
+ "\1\6\3\11\1\6\26\11\1\6\7\11\1\6\2\11"+
+ "\1\6\5\11\2\6\1\0\1\11\10\0\1\6\3\0"+
+ "\1\6\3\0\2\6\1\11\17\6\2\11\2\0\2\6"+
+ "\12\0\1\6\1\11\7\6\1\11\6\0\1\6\3\0"+
+ "\1\6\10\11\2\6\2\11\2\6\26\11\1\6\7\11"+
+ "\1\6\2\11\1\6\5\11\2\6\1\0\1\11\7\0"+
+ "\2\6\2\0\2\6\3\0\7\6\3\0\4\6\2\11"+
+ "\1\6\3\11\2\0\2\6\12\0\1\6\1\11\20\6"+
+ "\1\0\1\11\1\6\6\11\3\6\3\11\1\6\4\11"+
+ "\3\6\2\11\1\6\1\11\1\6\2\11\3\6\2\11"+
+ "\3\6\3\11\3\6\14\11\4\6\5\0\3\6\3\0"+
+ "\1\6\4\0\2\6\1\11\6\6\1\0\16\6\12\0"+
+ "\11\6\1\11\6\6\5\0\10\11\1\6\3\11\1\6"+
+ "\27\11\1\6\20\11\3\6\1\11\7\0\1\6\3\0"+
+ "\1\6\4\0\7\6\2\0\1\6\3\11\5\6\2\11"+
+ "\2\0\2\6\12\0\20\6\1\11\3\0\1\6\10\11"+
+ "\1\6\3\11\1\6\27\11\1\6\12\11\1\6\5\11"+
+ "\2\6\1\0\1\11\7\0\1\6\3\0\1\6\4\0"+
+ "\7\6\2\0\7\6\1\11\1\6\2\11\2\0\2\6"+
+ "\12\0\1\6\2\11\15\6\4\0\11\11\1\6\3\11"+
+ "\1\6\51\11\2\0\1\11\7\0\1\6\3\0\1\6"+
+ "\4\0\1\11\5\6\3\11\1\0\7\6\3\11\2\0"+
+ "\2\6\12\0\12\6\6\11\1\6\3\0\1\6\22\11"+
+ "\3\6\30\11\1\6\11\11\1\6\1\11\2\6\7\11"+
+ "\3\6\1\0\4\6\6\0\1\6\1\0\1\6\10\0"+
+ "\6\6\12\0\2\6\2\0\15\6\60\11\1\0\2\11"+
+ "\7\0\4\6\10\11\10\0\1\6\12\0\47\6\2\11"+
+ "\1\6\1\11\1\6\5\11\1\6\30\11\1\6\1\11"+
+ "\1\6\12\11\1\0\2\11\11\0\1\11\2\6\5\11"+
+ "\1\6\1\11\1\6\6\0\2\6\12\0\2\6\4\11"+
+ "\40\6\1\11\27\6\2\0\6\6\12\0\13\6\1\0"+
+ "\1\6\1\0\1\6\1\0\4\6\2\0\10\11\1\6"+
+ "\44\11\4\6\24\0\1\6\2\0\5\11\13\0\1\6"+
+ "\44\0\11\6\1\0\71\6\53\11\24\0\1\11\12\0"+
+ "\6\6\6\11\4\0\4\11\3\0\1\11\3\0\2\11"+
+ "\7\0\3\11\4\0\15\11\14\0\1\11\17\0\2\6"+
+ "\46\11\1\6\1\11\5\6\1\11\2\6\53\11\1\6"+
+ "\115\11\1\6\4\11\2\6\7\11\1\6\1\11\1\6"+
+ "\4\11\2\6\51\11\1\6\4\11\2\6\41\11\1\6"+
+ "\4\11\2\6\7\11\1\6\1\11\1\6\4\11\2\6"+
+ "\17\11\1\6\71\11\1\6\4\11\2\6\103\11\2\6"+
+ "\3\0\40\6\20\11\20\6\126\11\2\6\6\11\3\6"+
+ "\u016c\11\2\6\21\11\1\6\32\11\5\6\113\11\3\6"+
+ "\13\11\7\6\15\11\1\6\4\11\3\0\13\6\22\11"+
+ "\3\0\13\6\22\11\2\0\14\6\15\11\1\6\3\11"+
+ "\1\6\2\0\14\6\64\11\40\0\3\6\1\11\3\6"+
+ "\2\11\1\0\2\6\12\0\41\6\4\0\1\6\12\0"+
+ "\6\6\131\11\7\6\5\11\2\0\42\11\1\0\1\11"+
+ "\5\6\106\11\12\6\37\11\1\6\14\0\4\6\14\0"+
+ "\12\6\12\0\36\11\2\6\5\11\13\6\54\11\4\6"+
+ "\32\11\6\6\12\0\46\6\27\11\5\0\4\6\65\11"+
+ "\12\0\1\6\35\0\2\6\13\0\6\6\12\0\15\6"+
+ "\1\11\10\6\16\0\1\6\2\0\77\6\5\0\57\11"+
+ "\21\0\7\11\4\6\12\0\21\6\11\0\14\6\3\0"+
+ "\36\11\15\0\2\11\12\0\54\11\16\0\14\6\44\11"+
+ "\24\0\10\6\12\0\3\6\3\11\12\0\44\11\2\6"+
+ "\11\11\7\6\53\11\2\6\3\11\20\6\3\0\1\6"+
+ "\25\0\4\11\1\0\6\11\1\0\2\11\3\0\1\11"+
+ "\5\6\300\11\72\0\1\6\5\0\26\11\2\6\6\11"+
+ "\2\6\46\11\2\6\6\11\2\6\10\11\1\6\1\11"+
+ "\1\6\1\11\1\6\1\11\1\6\37\11\2\6\65\11"+
+ "\1\6\7\11\1\6\1\11\3\6\3\11\1\6\7\11"+
+ "\3\6\4\11\2\6\6\11\4\6\15\11\5\6\3\11"+
+ "\1\6\7\11\16\6\5\0\30\6\2\3\5\0\20\6"+
+ "\2\11\23\6\1\11\13\6\5\0\1\6\12\0\1\6"+
+ "\1\11\15\6\1\11\20\6\15\11\3\6\40\11\20\6"+
+ "\15\0\4\6\1\0\3\6\14\0\21\6\1\11\4\6"+
+ "\1\11\2\6\12\11\1\6\1\11\3\6\5\11\6\6"+
+ "\1\11\1\6\1\11\1\6\1\11\1\6\4\11\1\6"+
+ "\13\11\2\6\4\11\5\6\5\11\4\6\1\11\21\6"+
+ "\51\11\u0177\6\57\11\1\6\57\11\1\6\205\11\6\6"+
+ "\4\11\3\0\2\11\14\6\46\11\1\6\1\11\5\6"+
+ "\1\11\2\6\70\11\7\6\1\11\17\6\1\0\27\11"+
+ "\11\6\7\11\1\6\7\11\1\6\7\11\1\6\7\11"+
+ "\1\6\7\11\1\6\7\11\1\6\7\11\1\6\7\11"+
+ "\1\6\40\0\57\6\1\11\325\6\3\11\31\6\11\11"+
+ "\6\0\1\6\5\11\2\6\5\11\4\6\126\11\2\6"+
+ "\2\0\2\6\3\11\1\6\132\11\1\6\4\11\5\6"+
+ "\53\11\1\6\136\11\21\6\40\11\60\6\320\11\100\6"+
+ "\375\11\3\6\215\11\103\6\56\11\2\6\15\11\3\6"+
+ "\20\11\12\0\2\11\24\6\57\11\1\0\4\6\12\0"+
+ "\1\6\37\11\2\0\120\11\2\0\45\6\11\11\2\6"+
+ "\147\11\2\6\65\11\2\6\11\11\52\6\15\11\1\0"+
+ "\3\11\1\0\4\11\1\0\27\11\5\0\4\6\1\0"+
+ "\13\6\1\11\7\6\64\11\14\6\2\0\62\11\22\0"+
+ "\12\6\12\0\6\6\22\0\6\11\3\6\1\11\1\6"+
+ "\2\11\13\0\34\11\10\0\2\6\27\11\15\0\14\6"+
+ "\35\11\3\6\4\0\57\11\16\0\16\6\1\11\12\0"+
+ "\6\6\5\11\1\0\12\11\12\0\5\11\1\6\51\11"+
+ "\16\0\11\6\3\11\1\0\10\11\2\0\2\6\12\0"+
+ "\6\6\27\11\3\6\1\11\3\0\62\11\1\0\1\11"+
+ "\3\0\2\11\2\0\5\11\2\0\1\11\1\0\1\11"+
+ "\30\6\3\11\2\6\13\11\5\0\2\6\3\11\2\0"+
+ "\12\6\6\11\2\6\6\11\2\6\6\11\11\6\7\11"+
+ "\1\6\7\11\1\6\53\11\1\6\16\11\6\6\163\11"+
+ "\10\0\1\6\2\0\2\6\12\0\6\6\244\11\14\6"+
+ "\27\11\4\6\61\11\4\6\u0100\3\156\11\2\6\152\11"+
+ "\46\6\7\11\14\6\5\11\5\6\1\11\1\0\12\11"+
+ "\1\6\15\11\1\6\5\11\1\6\1\11\1\6\2\11"+
+ "\1\6\2\11\1\6\154\11\41\6\153\11\22\6\100\11"+
+ "\2\6\66\11\50\6\15\11\3\6\20\0\20\6\20\0"+
+ "\3\6\2\11\30\6\3\11\31\6\1\11\6\6\5\11"+
+ "\1\6\207\11\2\6\1\0\4\6\1\11\13\6\12\0"+
+ "\7\6\32\11\4\6\1\11\1\6\32\11\13\6\131\11"+
+ "\3\6\6\11\2\6\6\11\2\6\6\11\2\6\3\11"+
+ "\3\6\2\11\3\6\2\11\22\6\3\0\4\6\14\11"+
+ "\1\6\32\11\1\6\23\11\1\6\2\11\1\6\17\11"+
+ "\2\6\16\11\42\6\173\11\105\6\65\11\210\6\1\0"+
+ "\202\6\35\11\3\6\61\11\17\6\1\0\37\6\40\11"+
+ "\15\6\36\11\5\6\46\11\5\0\5\6\36\11\2\6"+
+ "\44\11\4\6\10\11\1\6\5\11\52\6\236\11\2\6"+
+ "\12\0\6\6\44\11\4\6\44\11\4\6\50\11\10\6"+
+ "\64\11\234\6\67\11\11\6\26\11\12\6\10\11\230\6"+
+ "\6\11\2\6\1\11\1\6\54\11\1\6\2\11\3\6"+
+ "\1\11\2\6\27\11\12\6\27\11\11\6\37\11\101\6"+
+ "\23\11\1\6\2\11\12\6\26\11\12\6\32\11\106\6"+
+ "\70\11\6\6\2\11\100\6\1\11\3\0\1\6\2\0"+
+ "\5\6\4\0\4\11\1\6\3\11\1\6\35\11\2\6"+
+ "\3\0\4\6\1\0\40\6\35\11\3\6\35\11\43\6"+
+ "\10\11\1\6\34\11\2\0\31\6\66\11\12\6\26\11"+
+ "\12\6\23\11\15\6\22\11\156\6\111\11\67\6\63\11"+
+ "\15\6\63\11\15\6\44\11\4\0\10\6\12\0\u0146\6"+
+ "\52\11\1\6\2\0\3\6\2\11\116\6\35\11\12\6"+
+ "\1\11\10\6\26\11\13\0\137\6\25\11\33\6\27\11"+
+ "\11\6\3\0\65\11\17\0\37\6\12\0\17\6\4\0"+
+ "\55\11\13\0\2\6\1\0\17\6\1\0\2\6\31\11"+
+ "\7\6\12\0\6\6\3\0\44\11\16\0\1\6\12\0"+
+ "\4\6\1\11\2\0\1\11\10\6\43\11\1\0\2\6"+
+ "\1\11\11\6\3\0\60\11\16\0\4\11\4\6\4\0"+
+ "\1\6\14\0\1\11\1\6\1\11\43\6\22\11\1\6"+
+ "\31\11\14\0\6\6\1\0\101\6\7\11\1\6\1\11"+
+ "\1\6\4\11\1\6\17\11\1\6\12\11\7\6\57\11"+
+ "\14\0\5\6\12\0\6\6\4\0\1\6\10\11\2\6"+
+ "\2\11\2\6\26\11\1\6\7\11\1\6\2\11\1\6"+
+ "\5\11\1\6\2\0\1\11\7\0\2\6\2\0\2\6"+
+ "\3\0\2\6\1\11\6\6\1\0\5\6\5\11\2\0"+
+ "\2\6\7\0\3\6\5\0\213\6\65\11\22\0\4\11"+
+ "\5\6\12\0\4\6\1\0\3\11\36\6\60\11\24\0"+
+ "\2\11\1\6\1\11\10\6\12\0\246\6\57\11\7\0"+
+ "\2\6\11\0\27\6\4\11\2\0\42\6\60\11\21\0"+
+ "\3\6\1\11\13\6\12\0\46\6\53\11\15\0\1\11"+
+ "\7\6\12\0\66\6\33\11\2\6\17\0\4\6\12\0"+
+ "\306\6\54\11\17\0\145\6\100\11\12\0\25\6\10\11"+
+ "\2\6\1\11\2\6\10\11\1\6\2\11\1\6\30\11"+
+ "\6\0\1\6\2\0\2\6\4\0\1\11\1\0\1\11"+
+ "\2\0\14\6\12\0\106\6\10\11\2\6\47\11\7\0"+
+ "\2\6\7\0\1\11\1\6\1\11\1\0\33\6\1\11"+
+ "\12\0\50\11\7\0\1\11\4\0\10\6\1\0\10\6"+
+ "\1\11\13\0\56\11\20\0\3\6\1\11\42\6\71\11"+
+ "\7\6\11\11\1\6\45\11\10\0\1\6\10\0\1\11"+
+ "\17\6\12\0\30\6\36\11\2\6\26\0\1\6\16\0"+
+ "\111\6\7\11\1\6\2\11\1\6\46\11\6\0\3\6"+
+ "\1\0\1\6\2\0\1\6\7\0\1\11\1\0\10\6"+
+ "\12\0\6\6\6\11\1\6\2\11\1\6\40\11\5\0"+
+ "\1\6\2\0\1\6\5\0\1\11\7\6\12\0\u0136\6"+
+ "\23\11\4\0\271\6\1\11\54\6\4\11\37\6\232\11"+
+ "\146\6\157\11\21\6\304\11\274\6\57\11\1\6\11\0"+
+ "\307\6\107\11\271\6\71\11\7\6\37\11\1\6\12\0"+
+ "\146\6\36\11\2\6\5\0\13\6\60\11\7\0\11\6"+
+ "\4\11\14\6\12\0\11\6\25\11\5\6\23\11\260\6"+
+ "\100\11\200\6\113\11\4\6\1\0\1\11\67\0\7\6"+
+ "\4\0\15\11\100\6\2\11\1\6\1\11\1\0\13\6"+
+ "\2\0\16\6\370\11\10\6\326\11\52\6\11\11\367\6"+
+ "\37\11\61\6\3\11\21\6\4\11\10\6\u018c\11\4\6"+
+ "\153\11\5\6\15\11\3\6\11\11\7\6\12\11\3\6"+
+ "\2\0\1\6\4\0\301\6\5\0\3\6\26\0\2\6"+
+ "\7\0\36\6\4\0\224\6\3\0\273\6\125\11\1\6"+
+ "\107\11\1\6\2\11\2\6\1\11\2\6\2\11\2\6"+
+ "\4\11\1\6\14\11\1\6\1\11\1\6\7\11\1\6"+
+ "\101\11\1\6\4\11\2\6\10\11\1\6\7\11\1\6"+
+ "\34\11\1\6\4\11\1\6\5\11\1\6\1\11\3\6"+
+ "\7\11\1\6\u0154\11\2\6\31\11\1\6\31\11\1\6"+
+ "\37\11\1\6\31\11\1\6\37\11\1\6\31\11\1\6"+
+ "\37\11\1\6\31\11\1\6\37\11\1\6\31\11\1\6"+
+ "\10\11\2\6\151\0\4\6\62\0\10\6\1\0\16\6"+
+ "\1\0\26\6\5\0\1\6\17\0\120\6\7\0\1\6"+
+ "\21\0\2\6\7\0\1\6\2\0\1\6\5\0\325\6"+
+ "\55\11\3\6\7\0\7\11\2\6\12\0\4\6\1\11"+
+ "\u0171\6\54\11\16\0\5\6\306\11\13\6\7\0\51\6"+
+ "\104\11\7\0\1\11\4\6\12\0\u0156\6\1\11\117\6"+
+ "\4\11\1\6\33\11\1\6\2\11\1\6\1\11\2\6"+
+ "\1\11\1\6\12\11\1\6\4\11\1\6\1\11\1\6"+
+ "\1\11\6\6\1\11\4\6\1\11\1\6\1\11\1\6"+
+ "\1\11\1\6\3\11\1\6\2\11\1\6\1\11\2\6"+
+ "\1\11\1\6\1\11\1\6\1\11\1\6\1\11\1\6"+
+ "\1\11\1\6\2\11\1\6\1\11\2\6\4\11\1\6"+
+ "\7\11\1\6\4\11\1\6\4\11\1\6\1\11\1\6"+
+ "\12\11\1\6\21\11\5\6\3\11\1\6\5\11\1\6"+
+ "\21\11\u0134\6\12\0\6\6\336\11\42\6\65\11\13\6"+
+ "\336\11\2\6\u0182\11\16\6\u0131\11\37\6\36\11\342\6"+
+ "\113\11\266\6\1\0\36\6\140\0\200\6\360\0\20\6";
+
+ private static int [] zzUnpackcmap_blocks() {
+ int [] result = new int[31232];
+ int offset = 0;
+ offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_blocks(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int [] ZZ_ACTION = zzUnpackAction();
+
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\1\0\2\1\1\2\1\0\1\3\1\4\1\5\1\0"+
+ "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
+ "\2\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+
+ "\1\26\1\27\1\30\17\3\1\31\1\32\1\33\1\34"+
+ "\1\35\1\36\1\0\1\37\1\40\1\41\2\0\1\42"+
+ "\1\43\1\44\1\45\1\46\1\47\1\0\1\50\1\0"+
+ "\1\51\1\52\1\50\1\16\1\0\1\50\1\0\1\16"+
+ "\2\0\1\16\1\0\1\53\1\0\1\54\1\55\1\56"+
+ "\1\0\1\57\12\3\1\60\7\3\1\61\23\3\1\62"+
+ "\1\63\1\0\1\64\2\0\1\65\3\0\1\16\3\0"+
+ "\1\16\1\66\1\67\1\0\22\3\1\70\2\3\1\71"+
+ "\2\3\1\72\20\3\1\73\3\3\2\0\1\50\1\0"+
+ "\1\1\5\0\1\74\4\3\1\75\1\76\1\3\1\77"+
+ "\4\3\1\100\1\101\7\3\1\102\1\3\1\103\13\3"+
+ "\1\104\2\3\1\105\1\106\2\3\3\0\3\3\1\107"+
+ "\1\110\1\111\4\3\1\112\1\113\12\3\1\114\2\3"+
+ "\1\115\2\3\1\116\2\3\1\117\1\0\1\3\1\120"+
+ "\3\3\1\121\3\3\1\122\2\3\1\123\3\3\1\124"+
+ "\1\125\1\126\1\3\1\127\1\3\1\130\3\3\1\131"+
+ "\1\3\1\132\1\133\1\134\3\3\1\135\1\136\5\3"+
+ "\1\137\1\140\4\3\1\141\2\3\1\142\2\3\1\143"+
+ "\1\144\1\3\1\145\1\146\1\147\2\3\1\150";
+
+ private static int [] zzUnpackAction() {
+ int [] result = new int[336];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private static final String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\112\0\224\0\336\0\u0128\0\u0172\0\u01bc\0\u0206"+
+ "\0\u0250\0\112\0\112\0\u029a\0\u02e4\0\112\0\u032e\0\u0378"+
+ "\0\u03c2\0\u040c\0\u0456\0\u04a0\0\112\0\u04ea\0\u0534\0\u057e"+
+ "\0\112\0\112\0\112\0\112\0\u05c8\0\u0612\0\u065c\0\u06a6"+
+ "\0\u06f0\0\u073a\0\u0784\0\u07ce\0\u0818\0\u0862\0\u08ac\0\u08f6"+
+ "\0\u0940\0\u098a\0\u09d4\0\u0a1e\0\112\0\u0a68\0\112\0\112"+
+ "\0\112\0\112\0\u0ab2\0\112\0\112\0\112\0\u0afc\0\u0b46"+
+ "\0\112\0\112\0\112\0\112\0\112\0\112\0\u0b90\0\u0bda"+
+ "\0\u0c24\0\u0c6e\0\112\0\u0cb8\0\u0d02\0\u0d4c\0\112\0\u0d96"+
+ "\0\112\0\u0de0\0\u0e2a\0\u0e74\0\u0ebe\0\112\0\u0f08\0\112"+
+ "\0\112\0\112\0\u0f52\0\112\0\u0f9c\0\u0fe6\0\u1030\0\u107a"+
+ "\0\u10c4\0\u110e\0\u1158\0\u11a2\0\u11ec\0\u1236\0\u1280\0\u12ca"+
+ "\0\u1314\0\u135e\0\u13a8\0\u13f2\0\u143c\0\u1486\0\u0172\0\u14d0"+
+ "\0\u151a\0\u1564\0\u15ae\0\u15f8\0\u1642\0\u168c\0\u16d6\0\u1720"+
+ "\0\u176a\0\u17b4\0\u17fe\0\u1848\0\u1892\0\u18dc\0\u1926\0\u1970"+
+ "\0\u19ba\0\u1a04\0\112\0\112\0\u1a4e\0\112\0\u1a98\0\u1ae2"+
+ "\0\112\0\u1b2c\0\u1b76\0\u1bc0\0\u1c0a\0\u1c54\0\u1c9e\0\u1ce8"+
+ "\0\u1d32\0\112\0\112\0\u1d7c\0\u1dc6\0\u1e10\0\u1e5a\0\u1ea4"+
+ "\0\u1eee\0\u1f38\0\u1f82\0\u1fcc\0\u2016\0\u2060\0\u20aa\0\u20f4"+
+ "\0\u213e\0\u2188\0\u21d2\0\u221c\0\u2266\0\u22b0\0\u0172\0\u22fa"+
+ "\0\u2344\0\u238e\0\u23d8\0\u2422\0\u0172\0\u246c\0\u24b6\0\u2500"+
+ "\0\u254a\0\u2594\0\u25de\0\u2628\0\u2672\0\u26bc\0\u2706\0\u2750"+
+ "\0\u279a\0\u27e4\0\u282e\0\u2878\0\u28c2\0\u0172\0\u290c\0\u2956"+
+ "\0\u29a0\0\u29ea\0\u2a34\0\u2a7e\0\u2ac8\0\u1b76\0\u2b12\0\u2b5c"+
+ "\0\u2ba6\0\u2bf0\0\u2c3a\0\112\0\u2c84\0\u2cce\0\u2d18\0\u2d62"+
+ "\0\u0172\0\u0172\0\u2dac\0\u0172\0\u2df6\0\u2e40\0\u2e8a\0\u2ed4"+
+ "\0\u0172\0\u0172\0\u2f1e\0\u2f68\0\u2fb2\0\u2ffc\0\u3046\0\u3090"+
+ "\0\u30da\0\u0172\0\u3124\0\u0172\0\u316e\0\u31b8\0\u3202\0\u324c"+
+ "\0\u3296\0\u32e0\0\u332a\0\u3374\0\u33be\0\u3408\0\u3452\0\u0172"+
+ "\0\u349c\0\u34e6\0\u0172\0\u0172\0\u3530\0\u357a\0\u35c4\0\u360e"+
+ "\0\u3658\0\u36a2\0\u36ec\0\u3736\0\u0172\0\u0172\0\u0172\0\u3780"+
+ "\0\u37ca\0\u3814\0\u385e\0\u38a8\0\u0172\0\u38f2\0\u393c\0\u3986"+
+ "\0\u39d0\0\u3a1a\0\u3a64\0\u3aae\0\u3af8\0\u3b42\0\u3b8c\0\u0172"+
+ "\0\u3bd6\0\u3c20\0\u0172\0\u3c6a\0\u3cb4\0\u3cfe\0\u3d48\0\u3d92"+
+ "\0\u0172\0\u3ddc\0\u3e26\0\u0172\0\u3e70\0\u3eba\0\u3f04\0\u0172"+
+ "\0\u3f4e\0\u3f98\0\u3fe2\0\u0172\0\u402c\0\u4076\0\u0172\0\u40c0"+
+ "\0\u410a\0\u4154\0\u0172\0\u0172\0\u0172\0\u419e\0\u0172\0\u41e8"+
+ "\0\u0172\0\u4232\0\u427c\0\u42c6\0\u0172\0\u4310\0\u0172\0\u0172"+
+ "\0\u0172\0\u435a\0\u43a4\0\u43ee\0\u0172\0\u0172\0\u4438\0\u4482"+
+ "\0\u44cc\0\u4516\0\u4560\0\u0172\0\u0172\0\u45aa\0\u45f4\0\u463e"+
+ "\0\u4688\0\u0172\0\u46d2\0\u471c\0\u0172\0\u4766\0\u47b0\0\u0172"+
+ "\0\u0172\0\u47fa\0\u0172\0\u0172\0\u0172\0\u4844\0\u488e\0\u0172";
+
+ private static int [] zzUnpackRowMap() {
+ int [] result = new int[336];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int high = packed.charAt(i++) << 16;
+ result[j++] = high | packed.charAt(i++);
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static final int [] ZZ_TRANS = zzUnpackTrans();
+
+ private static final String ZZ_TRANS_PACKED_0 =
+ "\1\0\2\2\1\0\1\2\1\3\1\0\1\4\1\5"+
+ "\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"+
+ "\1\16\1\17\1\20\1\21\1\22\4\23\1\24\1\25"+
+ "\1\26\1\27\1\30\1\31\1\32\7\6\1\33\1\0"+
+ "\1\34\1\35\1\6\1\36\1\37\1\40\1\41\1\42"+
+ "\1\43\2\6\1\44\1\6\1\45\1\6\1\46\1\6"+
+ "\1\47\1\50\1\51\1\52\1\6\1\53\1\54\3\6"+
+ "\1\55\1\56\1\57\1\60\115\0\1\2\144\0\1\61"+
+ "\54\0\2\5\1\0\2\5\1\0\2\5\1\62\40\5"+
+ "\1\63\40\5\1\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\31\6\4\0\1\6\35\0\1\64\67\0"+
+ "\1\65\21\0\1\66\54\0\2\67\1\0\2\67\1\0"+
+ "\6\67\1\0\34\67\1\70\40\67\35\0\1\71\74\0"+
+ "\1\72\14\0\1\73\76\0\1\74\12\0\1\75\1\76"+
+ "\76\0\1\77\1\0\5\100\77\0\1\101\4\0\1\102"+
+ "\10\0\1\103\77\0\1\104\1\0\4\105\11\0\1\106"+
+ "\1\107\1\110\1\111\1\0\1\112\4\0\1\113\1\0"+
+ "\1\106\1\0\1\107\1\110\1\107\4\0\1\111\12\0"+
+ "\1\112\32\0\1\104\1\0\5\114\11\0\1\107\1\110"+
+ "\1\111\6\0\1\115\3\0\1\107\1\110\1\107\4\0"+
+ "\1\111\54\0\1\116\113\0\1\117\1\120\111\0\1\121"+
+ "\111\0\1\122\1\123\110\0\1\124\54\0\1\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\125"+
+ "\16\6\1\126\7\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\16\6\1\127\1\6\1\130"+
+ "\6\6\1\131\1\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\1\6\1\132\6\6\1\133"+
+ "\2\6\1\134\2\6\1\135\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\136"+
+ "\10\6\1\137\12\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\13\6\1\140\1\6\1\141"+
+ "\10\6\1\142\2\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\1\6\1\143\7\6\1\144"+
+ "\1\6\1\145\2\6\1\146\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\147"+
+ "\5\6\1\150\1\151\13\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\16\6\1\152\12\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\1\6\1\153\3\6\1\154\15\6\1\155\5\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\1\6\1\156\16\6\1\157\2\6\1\160\5\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\5\6\1\161\23\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\10\6\1\162\11\6"+
+ "\1\163\1\164\1\6\1\165\1\6\1\166\1\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\10\6\1\167\7\6\1\170\10\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\171"+
+ "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\10\6\1\172\20\6\4\0\1\6\35\0"+
+ "\1\173\50\0\1\174\13\0\1\5\3\0\1\5\10\0"+
+ "\4\5\20\0\1\5\4\0\1\5\3\0\1\5\6\0"+
+ "\1\5\2\0\1\5\1\0\1\5\1\175\26\0\1\176"+
+ "\105\0\1\67\3\0\1\67\10\0\3\177\1\200\20\0"+
+ "\1\67\4\0\1\67\3\0\1\67\6\0\1\67\2\0"+
+ "\1\67\1\0\1\67\36\0\1\201\131\0\1\107\1\202"+
+ "\13\0\1\107\1\202\1\107\27\0\17\203\1\204\72\203"+
+ "\2\102\4\0\103\102\26\0\5\100\11\0\1\107\1\202"+
+ "\13\0\1\107\1\202\1\107\54\0\4\105\14\0\1\111"+
+ "\6\0\1\113\12\0\1\111\47\0\2\205\103\0\1\206"+
+ "\1\0\1\206\2\0\5\207\103\0\1\210\1\0\5\211"+
+ "\7\0\4\211\10\0\6\211\54\0\4\105\23\0\1\113"+
+ "\62\0\5\114\13\0\1\111\6\0\1\115\12\0\1\111"+
+ "\47\0\5\114\22\0\1\115\72\0\1\212\111\0\1\213"+
+ "\1\214\53\0\1\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\21\6\1\215\7\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\216"+
+ "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\16\6\1\217\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\220"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\221\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\222"+
+ "\1\223\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\1\6\1\224\27\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+
+ "\1\225\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\15\6\1\226\13\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\6\6"+
+ "\1\227\22\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\23\6\1\230\5\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+
+ "\1\231\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\23\6\1\232\5\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+
+ "\1\233\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\13\6\1\234\15\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\15\6"+
+ "\1\235\13\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\16\6\1\236\12\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\20\6"+
+ "\1\237\10\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\17\6\1\240\11\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+
+ "\1\241\1\242\6\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\15\6\1\243\13\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\22\6\1\244\6\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\25\6\1\245\3\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\13\6\1\246\15\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\3\6\1\247\25\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\11\6\1\250\4\6\1\251\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\2\6\1\252"+
+ "\26\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\253\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\16\6\1\254"+
+ "\12\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\1\6\1\255\16\6\1\256\10\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\17\6\1\257\11\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\11\6\1\260\17\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\15\6\1\261\13\6\4\0\2\6\10\0\1\6\13\0"+
+ "\5\6\7\0\7\6\4\0\11\6\1\262\6\6\1\263"+
+ "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\1\6\1\264\21\6\1\265\3\6\1\266"+
+ "\1\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\11\6\1\267\1\6\1\270\15\6\4\0"+
+ "\2\6\10\0\1\6\13\0\5\6\7\0\7\6\4\0"+
+ "\11\6\1\271\17\6\4\0\1\6\25\0\5\272\7\0"+
+ "\4\272\10\0\6\272\14\0\1\175\26\0\1\176\10\0"+
+ "\4\200\75\0\1\176\10\0\4\67\101\0\1\273\1\0"+
+ "\1\273\2\0\5\274\60\0\17\203\1\275\111\203\1\275"+
+ "\4\203\1\276\65\203\25\0\2\205\16\0\1\111\6\0"+
+ "\1\277\12\0\1\111\47\0\5\207\105\0\5\207\11\0"+
+ "\1\107\10\0\1\300\3\0\1\107\1\0\1\107\54\0"+
+ "\5\301\7\0\4\301\10\0\6\301\52\0\1\302\1\0"+
+ "\5\211\7\0\4\211\1\111\1\202\5\0\1\303\6\211"+
+ "\4\0\1\111\3\0\1\202\53\0\1\304\54\0\1\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+
+ "\1\305\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\5\6\1\306\23\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+
+ "\1\307\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\1\6\1\310\27\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+
+ "\1\311\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\5\6\1\312\23\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+
+ "\1\313\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\314\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\21\6"+
+ "\1\315\7\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\22\6\1\316\6\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+
+ "\1\317\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\2\6\1\320\26\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+
+ "\1\321\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\14\6\1\322\14\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+
+ "\1\323\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\21\6\1\265\7\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+
+ "\1\324\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\1\6\1\325\27\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+
+ "\1\326\2\6\1\327\12\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\22\6\1\330\6\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\5\6\1\331\23\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\7\6\1\332\21\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\11\6\1\333\17\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\13\6\1\334\15\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\12\6\1\335\16\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\24\6\1\336\4\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\22\6\1\337\6\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\13\6\1\340\15\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\23\6\1\341\5\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\20\6\1\342\10\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\22\6\1\343\6\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\11\6\1\344\17\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\5\6\1\345\23\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\22\6\1\346\6\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\3\6\1\347\25\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\21\6\1\350\7\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\16\6\1\351\12\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\15\6\1\352\13\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\5\6\1\353\23\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\4\6\1\354\24\6"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\1\6\1\355\27\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\13\6\1\356\15\6"+
+ "\4\0\1\6\25\0\5\357\7\0\4\357\10\0\6\357"+
+ "\54\0\5\274\105\0\5\274\11\0\1\107\10\0\1\360"+
+ "\3\0\1\107\1\0\1\107\27\0\17\203\1\275\4\203"+
+ "\1\2\65\203\25\0\2\205\25\0\1\277\62\0\5\207"+
+ "\22\0\1\300\62\0\5\301\7\0\4\301\1\0\1\202"+
+ "\5\0\1\361\6\301\10\0\1\202\43\0\5\301\7\0"+
+ "\4\301\1\0\1\202\6\0\6\301\10\0\1\202\43\0"+
+ "\5\211\7\0\4\211\7\0\1\303\6\211\27\0\1\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\20\6"+
+ "\1\362\10\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\363\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+
+ "\1\364\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\12\6\1\365\16\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\10\6"+
+ "\1\366\20\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\21\6\1\367\7\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+
+ "\1\370\17\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\23\6\1\371\5\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+
+ "\1\372\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\15\6\1\373\13\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\13\6"+
+ "\1\374\15\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\22\6\1\375\6\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\5\6"+
+ "\1\376\23\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\377\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+
+ "\1\u0100\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\u0101\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\24\6"+
+ "\1\u0102\4\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\1\6\1\u0103\27\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\1\6"+
+ "\1\u0104\27\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\5\6\1\u0105\23\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\11\6"+
+ "\1\u0106\17\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\u0107\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+
+ "\1\u0108\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\11\6\1\u0109\17\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+
+ "\1\u010a\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\20\6\1\u010b\10\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\3\6"+
+ "\1\u010c\25\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\10\6\1\u010d\20\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\25\6"+
+ "\1\u010e\3\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\21\6\1\u010f\7\6\4\0\2\6"+
+ "\10\0\1\6\13\0\5\6\7\0\7\6\4\0\22\6"+
+ "\1\u0110\6\6\4\0\2\6\10\0\1\6\13\0\5\6"+
+ "\7\0\7\6\4\0\5\6\1\u0111\23\6\4\0\1\6"+
+ "\25\0\5\u0112\7\0\4\u0112\10\0\6\u0112\54\0\5\274"+
+ "\22\0\1\360\62\0\5\301\7\0\4\301\7\0\1\361"+
+ "\6\301\27\0\1\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\1\6\1\u0113\27\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0114"+
+ "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\1\6\1\u0115\27\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0116"+
+ "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\13\6\1\u0117\15\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0118"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\4\6\1\u0119\24\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\13\6\1\u011a"+
+ "\15\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\14\6\1\u011b\14\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u011c"+
+ "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\15\6\1\u011d\13\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\u011e"+
+ "\22\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u011f\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\7\6\1\u0120"+
+ "\21\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\u0121\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0122"+
+ "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\3\6\1\u0123\25\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0124"+
+ "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\3\6\1\u0125\25\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0126"+
+ "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\10\6\1\u0127\20\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\20\6\1\u0128"+
+ "\10\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\21\6\1\u0129\7\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\u012a"+
+ "\17\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\11\6\1\u012b\17\6\4\0\1\6\25\0"+
+ "\5\5\7\0\4\5\10\0\6\5\27\0\1\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u012c"+
+ "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\15\6\1\u012d\13\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\23\6\1\u012e"+
+ "\5\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\u012f\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\u0130"+
+ "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\27\6\1\u0131\1\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0132"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\3\6\1\u0133\25\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\1\6\1\u0134"+
+ "\27\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u0135\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0136"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\u0137\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\6\6\1\u0138"+
+ "\22\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\16\6\1\u0139\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u013a"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\13\6\1\u013b\15\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u013c"+
+ "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u013d\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u013e"+
+ "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u013f\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\3\6\1\u0140"+
+ "\25\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u0141\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\17\6\1\u0142"+
+ "\11\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\15\6\1\u0143\13\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\15\6\1\u0144"+
+ "\13\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\5\6\1\u0145\23\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\22\6\1\u0146"+
+ "\6\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\16\6\1\u0147\12\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\5\6\1\u0148"+
+ "\23\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\4\6\1\u0149\24\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\11\6\1\u014a"+
+ "\17\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\22\6\1\u014b\6\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\21\6\1\u014c"+
+ "\7\6\4\0\2\6\10\0\1\6\13\0\5\6\7\0"+
+ "\7\6\4\0\6\6\1\u014d\22\6\4\0\2\6\10\0"+
+ "\1\6\13\0\5\6\7\0\7\6\4\0\30\6\1\u014e"+
+ "\4\0\2\6\10\0\1\6\13\0\5\6\7\0\7\6"+
+ "\4\0\5\6\1\u014f\23\6\4\0\2\6\10\0\1\6"+
+ "\13\0\5\6\7\0\7\6\4\0\4\6\1\u0150\24\6"+
+ "\4\0\1\6";
+
+ private static int [] zzUnpackTrans() {
+ int [] result = new int[18648];
+ int offset = 0;
+ offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackTrans(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /** Error code for "Unknown internal scanner error". */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ /** Error code for "could not match input". */
+ private static final int ZZ_NO_MATCH = 1;
+ /** Error code for "pushback value was too large". */
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /**
+ * Error messages for {@link #ZZ_UNKNOWN_ERROR}, {@link #ZZ_NO_MATCH}, and
+ * {@link #ZZ_PUSHBACK_2BIG} respectively.
+ */
+ private static final String ZZ_ERROR_MSG[] = {
+ "Unknown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}
+ */
+ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\1\0\1\11\2\1\1\0\3\1\1\0\2\11\2\1"+
+ "\1\11\6\1\1\11\3\1\4\11\20\1\1\11\1\1"+
+ "\4\11\1\0\3\11\2\0\6\11\1\0\1\1\1\0"+
+ "\1\1\1\11\2\1\1\0\1\11\1\0\1\11\2\0"+
+ "\1\1\1\0\1\11\1\0\3\11\1\0\1\11\46\1"+
+ "\2\11\1\0\1\11\2\0\1\11\3\0\1\1\3\0"+
+ "\1\1\2\11\1\0\55\1\2\0\1\1\1\0\1\1"+
+ "\5\0\1\11\52\1\3\0\40\1\1\0\76\1";
+
+ private static int [] zzUnpackAttribute() {
+ int [] result = new int[336];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int [] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /** Input device. */
+ private java.io.Reader zzReader;
+
+ /** Current state of the DFA. */
+ private int zzState;
+
+ /** Current lexical state. */
+ private int zzLexicalState = YYINITIAL;
+
+ /**
+ * This buffer contains the current text to be matched and is the source of the {@link #yytext()}
+ * string.
+ */
+ private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
+
+ /** Text position at the last accepting state. */
+ private int zzMarkedPos;
+
+ /** Current text position in the buffer. */
+ private int zzCurrentPos;
+
+ /** Marks the beginning of the {@link #yytext()} string in the buffer. */
+ private int zzStartRead;
+
+ /** Marks the last character in the buffer, that has been read from input. */
+ private int zzEndRead;
+
+ /**
+ * Whether the scanner is at the end of file.
+ * @see #yyatEOF
+ */
+ private boolean zzAtEOF;
+
+ /**
+ * The number of occupied positions in {@link #zzBuffer} beyond {@link #zzEndRead}.
+ *
+ * When a lead/high surrogate has been read from the input stream into the final
+ * {@link #zzBuffer} position, this will have a value of 1; otherwise, it will have a value of 0.
+ */
+ private int zzFinalHighSurrogate = 0;
+
+ /** Number of newlines encountered up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ private int yyline;
+
+ /** Number of characters from the last newline up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ private int yycolumn;
+
+ /** Number of characters up to the start of the matched text. */
+ @SuppressWarnings("unused")
+ private long yychar;
+
+ /** Whether the scanner is currently at the beginning of a line. */
+ @SuppressWarnings("unused")
+ private boolean zzAtBOL = true;
+
+ /** Whether the user-EOF-code has already been executed. */
+ @SuppressWarnings("unused")
+ private boolean zzEOFDone;
+
+
+ /**
+ * Creates a new scanner
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ public JavaLexer(java.io.Reader in) {
+ this.zzReader = in;
+ }
+
+ /**
+ * Translates raw input code points to DFA table row
+ */
+ private static int zzCMap(int input) {
+ int offset = input & 255;
+ return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];
+ }
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return {@code false} iff there was new input.
+ * @exception java.io.IOException if any I/O-Error occurs
+ */
+ private boolean zzRefill() throws java.io.IOException {
+
+ /* first: make room (if you can) */
+ if (zzStartRead > 0) {
+ zzEndRead += zzFinalHighSurrogate;
+ zzFinalHighSurrogate = 0;
+ System.arraycopy(zzBuffer, zzStartRead,
+ zzBuffer, 0,
+ zzEndRead - zzStartRead);
+
+ /* translate stored positions */
+ zzEndRead -= zzStartRead;
+ zzCurrentPos -= zzStartRead;
+ zzMarkedPos -= zzStartRead;
+ zzStartRead = 0;
+ }
+
+ /* is the buffer big enough? */
+ if (zzCurrentPos >= zzBuffer.length - zzFinalHighSurrogate) {
+ /* if not: blow it up */
+ char newBuffer[] = new char[zzBuffer.length * 2];
+ System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
+ zzBuffer = newBuffer;
+ zzEndRead += zzFinalHighSurrogate;
+ zzFinalHighSurrogate = 0;
+ }
+
+ /* fill the buffer with new input */
+ int requested = zzBuffer.length - zzEndRead;
+ int numRead = zzReader.read(zzBuffer, zzEndRead, requested);
+
+ /* not supposed to occur according to specification of java.io.Reader */
+ if (numRead == 0) {
+ throw new java.io.IOException(
+ "Reader returned 0 characters. See JFlex examples/zero-reader for a workaround.");
+ }
+ if (numRead > 0) {
+ zzEndRead += numRead;
+ if (Character.isHighSurrogate(zzBuffer[zzEndRead - 1])) {
+ if (numRead == requested) { // We requested too few chars to encode a full Unicode character
+ --zzEndRead;
+ zzFinalHighSurrogate = 1;
+ } else { // There is room in the buffer for at least one more char
+ int c = zzReader.read(); // Expecting to read a paired low surrogate char
+ if (c == -1) {
+ return true;
+ } else {
+ zzBuffer[zzEndRead++] = (char)c;
+ }
+ }
+ }
+ /* potentially more input available */
+ return false;
+ }
+
+ /* numRead < 0 ==> end of stream */
+ return true;
+ }
+
+
+ /**
+ * Closes the input reader.
+ *
+ * @throws java.io.IOException if the reader could not be closed.
+ */
+ public final void yyclose() throws java.io.IOException {
+ zzAtEOF = true; // indicate end of file
+ zzEndRead = zzStartRead; // invalidate buffer
+
+ if (zzReader != null) {
+ zzReader.close();
+ }
+ }
+
+
+ /**
+ * Resets the scanner to read from a new input stream.
+ *
+ *
Does not close the old reader.
+ *
+ *
All internal variables are reset, the old input stream cannot be reused (internal
+ * buffer is discarded and lost). Lexical state is set to {@code ZZ_INITIAL}.
+ *
+ *
Internal scan buffer is resized down to its initial length, if it has grown.
+ *
+ * @param reader The new input stream.
+ */
+ public final void yyreset(java.io.Reader reader) {
+ zzReader = reader;
+ zzEOFDone = false;
+ yyResetPosition();
+ zzLexicalState = YYINITIAL;
+ if (zzBuffer.length > ZZ_BUFFERSIZE) {
+ zzBuffer = new char[ZZ_BUFFERSIZE];
+ }
+ }
+
+ /**
+ * Resets the input position.
+ */
+ private final void yyResetPosition() {
+ zzAtBOL = true;
+ zzAtEOF = false;
+ zzCurrentPos = 0;
+ zzMarkedPos = 0;
+ zzStartRead = 0;
+ zzEndRead = 0;
+ zzFinalHighSurrogate = 0;
+ yyline = 0;
+ yycolumn = 0;
+ yychar = 0L;
+ }
+
+
+ /**
+ * Returns whether the scanner has reached the end of the reader it reads from.
+ *
+ * @return whether the scanner has reached EOF.
+ */
+ public final boolean yyatEOF() {
+ return zzAtEOF;
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ *
+ * @return the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state.
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ *
+ * @return the matched text.
+ */
+ public final String yytext() {
+ return new String(zzBuffer, zzStartRead, zzMarkedPos-zzStartRead);
+ }
+
+
+ /**
+ * Returns the character at the given position from the matched text.
+ *
+ *
It is equivalent to {@code yytext().charAt(pos)}, but faster.
+ *
+ * @param position the position of the character to fetch. A value from 0 to {@code yylength()-1}.
+ *
+ * @return the character at {@code position}.
+ */
+ public final char yycharat(int position) {
+ return zzBuffer[zzStartRead + position];
+ }
+
+
+ /**
+ * How many characters were matched.
+ *
+ * @return the length of the matched text region.
+ */
+ public final int yylength() {
+ return zzMarkedPos-zzStartRead;
+ }
+
+
+ /**
+ * Reports an error that occurred while scanning.
+ *
+ *
In a well-formed scanner (no or only correct usage of {@code yypushback(int)} and a
+ * match-all fallback rule) this method will only be called with things that
+ * "Can't Possibly Happen".
+ *
+ *
If this method is called, something is seriously wrong (e.g. a JFlex bug producing a faulty
+ * scanner etc.).
+ *
+ *
Usual syntax/scanner level error handling should be done in error fallback rules.
+ *
+ * @param errorCode the code of the error message to display.
+ */
+ private static void zzScanError(int errorCode) {
+ String message;
+ try {
+ message = ZZ_ERROR_MSG[errorCode];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Error(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ *
They will be read again by then next call of the scanning method.
+ *
+ * @param number the number of characters to be read again. This number must not be greater than
+ * {@link #yylength()}.
+ */
+ public void yypushback(int number) {
+ if ( number > yylength() )
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched, the end of input is encountered
+ * or an I/O-Error occurs.
+ *
+ * @return the next token.
+ * @exception java.io.IOException if any I/O-Error occurs.
+ */
+ public JavaToken yylex() throws java.io.IOException {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char[] zzBufferL = zzBuffer;
+
+ int [] zzTransL = ZZ_TRANS;
+ int [] zzRowMapL = ZZ_ROWMAP;
+ int [] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ }
+
+
+ zzForAction: {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ }
+ else {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL, zzEndReadL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ }
+ int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMap(zzInput) ];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ( (zzAttributes & 1) == 1 ) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ( (zzAttributes & 8) == 8 ) break zzForAction;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ {
+ return JavaToken.EOF;
+ }
+ }
+ else {
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1:
+ {
+ }
+ // fall through
+ case 105: break;
+ case 2:
+ { return JavaToken.EXCLAMATIONMARK;
+ }
+ // fall through
+ case 106: break;
+ case 3:
+ { return JavaToken.ID;
+ }
+ // fall through
+ case 107: break;
+ case 4:
+ { return JavaToken.PERCENT;
+ }
+ // fall through
+ case 108: break;
+ case 5:
+ { return JavaToken.ANDBIT;
+ }
+ // fall through
+ case 109: break;
+ case 6:
+ { return JavaToken.PARENTHLEFT;
+ }
+ // fall through
+ case 110: break;
+ case 7:
+ { return JavaToken.PARENTHRIGHT;
+ }
+ // fall through
+ case 111: break;
+ case 8:
+ { return JavaToken.STAR;
+ }
+ // fall through
+ case 112: break;
+ case 9:
+ { return JavaToken.PLUS;
+ }
+ // fall through
+ case 113: break;
+ case 10:
+ { return JavaToken.COMMA;
+ }
+ // fall through
+ case 114: break;
+ case 11:
+ { return JavaToken.MINUS;
+ }
+ // fall through
+ case 115: break;
+ case 12:
+ { return JavaToken.DOT;
+ }
+ // fall through
+ case 116: break;
+ case 13:
+ { return JavaToken.SLASH;
+ }
+ // fall through
+ case 117: break;
+ case 14:
+ { return JavaToken.INTEGERLIT;
+ }
+ // fall through
+ case 118: break;
+ case 15:
+ { return JavaToken.COLON;
+ }
+ // fall through
+ case 119: break;
+ case 16:
+ { return JavaToken.SEMICOLON;
+ }
+ // fall through
+ case 120: break;
+ case 17:
+ { return JavaToken.LT;
+ }
+ // fall through
+ case 121: break;
+ case 18:
+ { return JavaToken.ASSIGN;
+ }
+ // fall through
+ case 122: break;
+ case 19:
+ { return JavaToken.GT;
+ }
+ // fall through
+ case 123: break;
+ case 20:
+ { return JavaToken.QUESTIONMARK;
+ }
+ // fall through
+ case 124: break;
+ case 21:
+ { return JavaToken.AT;
+ }
+ // fall through
+ case 125: break;
+ case 22:
+ { return JavaToken.BRACKETLEFT;
+ }
+ // fall through
+ case 126: break;
+ case 23:
+ { return JavaToken.BRACKETRIGHT;
+ }
+ // fall through
+ case 127: break;
+ case 24:
+ { return JavaToken.XORBIT;
+ }
+ // fall through
+ case 128: break;
+ case 25:
+ { return JavaToken.CURLYLEFT;
+ }
+ // fall through
+ case 129: break;
+ case 26:
+ { return JavaToken.ORBIT;
+ }
+ // fall through
+ case 130: break;
+ case 27:
+ { return JavaToken.CURLYRIGHT;
+ }
+ // fall through
+ case 131: break;
+ case 28:
+ { return JavaToken.TILDA;
+ }
+ // fall through
+ case 132: break;
+ case 29:
+ { return JavaToken.NOTEQ;
+ }
+ // fall through
+ case 133: break;
+ case 30:
+ { return JavaToken.STRINGLIT;
+ }
+ // fall through
+ case 134: break;
+ case 31:
+ { return JavaToken.PERCENTASSIGN;
+ }
+ // fall through
+ case 135: break;
+ case 32:
+ { return JavaToken.AND;
+ }
+ // fall through
+ case 136: break;
+ case 33:
+ { return JavaToken.ANDASSIGN;
+ }
+ // fall through
+ case 137: break;
+ case 34:
+ { return JavaToken.STARASSIGN;
+ }
+ // fall through
+ case 138: break;
+ case 35:
+ { return JavaToken.PLUSPLUS;
+ }
+ // fall through
+ case 139: break;
+ case 36:
+ { return JavaToken.PLUSASSIGN;
+ }
+ // fall through
+ case 140: break;
+ case 37:
+ { return JavaToken.MINUSMINUS;
+ }
+ // fall through
+ case 141: break;
+ case 38:
+ { return JavaToken.MINUSASSIGN;
+ }
+ // fall through
+ case 142: break;
+ case 39:
+ { return JavaToken.ARROW;
+ }
+ // fall through
+ case 143: break;
+ case 40:
+ { return JavaToken.FLOATINGLIT;
+ }
+ // fall through
+ case 144: break;
+ case 41:
+ { /* DO NOTHING */
+ }
+ // fall through
+ case 145: break;
+ case 42:
+ { return JavaToken.SLASHASSIGN;
+ }
+ // fall through
+ case 146: break;
+ case 43:
+ { return JavaToken.DOUBLECOLON;
+ }
+ // fall through
+ case 147: break;
+ case 44:
+ { return JavaToken.LESSEQ;
+ }
+ // fall through
+ case 148: break;
+ case 45:
+ { return JavaToken.EQ;
+ }
+ // fall through
+ case 149: break;
+ case 46:
+ { return JavaToken.GREATEQ;
+ }
+ // fall through
+ case 150: break;
+ case 47:
+ { return JavaToken.XORASSIGN;
+ }
+ // fall through
+ case 151: break;
+ case 48:
+ { return JavaToken.DO;
+ }
+ // fall through
+ case 152: break;
+ case 49:
+ { return JavaToken.IF;
+ }
+ // fall through
+ case 153: break;
+ case 50:
+ { return JavaToken.ORASSIGN;
+ }
+ // fall through
+ case 154: break;
+ case 51:
+ { return JavaToken.OR;
+ }
+ // fall through
+ case 155: break;
+ case 52:
+ { return JavaToken.CHARLIT;
+ }
+ // fall through
+ case 156: break;
+ case 53:
+ { return JavaToken.ELLIPSIS;
+ }
+ // fall through
+ case 157: break;
+ case 54:
+ { return JavaToken.SHIFTLEFTASSIGN;
+ }
+ // fall through
+ case 158: break;
+ case 55:
+ { return JavaToken.SHIFTRIGHTASSIGN;
+ }
+ // fall through
+ case 159: break;
+ case 56:
+ { return JavaToken.FOR;
+ }
+ // fall through
+ case 160: break;
+ case 57:
+ { return JavaToken.INT;
+ }
+ // fall through
+ case 161: break;
+ case 58:
+ { return JavaToken.NEW;
+ }
+ // fall through
+ case 162: break;
+ case 59:
+ { return JavaToken.TRY;
+ }
+ // fall through
+ case 163: break;
+ case 60:
+ { return JavaToken.USRIGHTSHIFTASSIGN;
+ }
+ // fall through
+ case 164: break;
+ case 61:
+ { return JavaToken.BYTE;
+ }
+ // fall through
+ case 165: break;
+ case 62:
+ { return JavaToken.CASE;
+ }
+ // fall through
+ case 166: break;
+ case 63:
+ { return JavaToken.CHAR;
+ }
+ // fall through
+ case 167: break;
+ case 64:
+ { return JavaToken.ELSE;
+ }
+ // fall through
+ case 168: break;
+ case 65:
+ { return JavaToken.ENUM;
+ }
+ // fall through
+ case 169: break;
+ case 66:
+ { return JavaToken.LONG;
+ }
+ // fall through
+ case 170: break;
+ case 67:
+ { return JavaToken.NULLLIT;
+ }
+ // fall through
+ case 171: break;
+ case 68:
+ { return JavaToken.THIS;
+ }
+ // fall through
+ case 172: break;
+ case 69:
+ { return JavaToken.BOOLEANLIT;
+ }
+ // fall through
+ case 173: break;
+ case 70:
+ { return JavaToken.VOID;
+ }
+ // fall through
+ case 174: break;
+ case 71:
+ { return JavaToken.BREAK;
+ }
+ // fall through
+ case 175: break;
+ case 72:
+ { return JavaToken.CATCH;
+ }
+ // fall through
+ case 176: break;
+ case 73:
+ { return JavaToken.CLASS;
+ }
+ // fall through
+ case 177: break;
+ case 74:
+ { return JavaToken.FINAL;
+ }
+ // fall through
+ case 178: break;
+ case 75:
+ { return JavaToken.FLOAT;
+ }
+ // fall through
+ case 179: break;
+ case 76:
+ { return JavaToken.SHORT;
+ }
+ // fall through
+ case 180: break;
+ case 77:
+ { return JavaToken.SUPER;
+ }
+ // fall through
+ case 181: break;
+ case 78:
+ { return JavaToken.THROW;
+ }
+ // fall through
+ case 182: break;
+ case 79:
+ { return JavaToken.WHILE;
+ }
+ // fall through
+ case 183: break;
+ case 80:
+ { return JavaToken.ASSERT;
+ }
+ // fall through
+ case 184: break;
+ case 81:
+ { return JavaToken.DOUBLE;
+ }
+ // fall through
+ case 185: break;
+ case 82:
+ { return JavaToken.IMPORT;
+ }
+ // fall through
+ case 186: break;
+ case 83:
+ { return JavaToken.NATIVE;
+ }
+ // fall through
+ case 187: break;
+ case 84:
+ { return JavaToken.PUBLIC;
+ }
+ // fall through
+ case 188: break;
+ case 85:
+ { return JavaToken.RETURN;
+ }
+ // fall through
+ case 189: break;
+ case 86:
+ { return JavaToken.STATIC;
+ }
+ // fall through
+ case 190: break;
+ case 87:
+ { return JavaToken.SWITCH;
+ }
+ // fall through
+ case 191: break;
+ case 88:
+ { return JavaToken.THROWS;
+ }
+ // fall through
+ case 192: break;
+ case 89:
+ { return JavaToken.BOOLEAN;
+ }
+ // fall through
+ case 193: break;
+ case 90:
+ { return JavaToken.DEFAULT;
+ }
+ // fall through
+ case 194: break;
+ case 91:
+ { return JavaToken.EXTENDS;
+ }
+ // fall through
+ case 195: break;
+ case 92:
+ { return JavaToken.FINALLY;
+ }
+ // fall through
+ case 196: break;
+ case 93:
+ { return JavaToken.PACKAGE;
+ }
+ // fall through
+ case 197: break;
+ case 94:
+ { return JavaToken.PRIVATE;
+ }
+ // fall through
+ case 198: break;
+ case 95:
+ { return JavaToken.ABSTRACT;
+ }
+ // fall through
+ case 199: break;
+ case 96:
+ { return JavaToken.CONTINUE;
+ }
+ // fall through
+ case 200: break;
+ case 97:
+ { return JavaToken.STRICTFP;
+ }
+ // fall through
+ case 201: break;
+ case 98:
+ { return JavaToken.VOLATILE;
+ }
+ // fall through
+ case 202: break;
+ case 99:
+ { return JavaToken.INTERFACE;
+ }
+ // fall through
+ case 203: break;
+ case 100:
+ { return JavaToken.PROTECTED;
+ }
+ // fall through
+ case 204: break;
+ case 101:
+ { return JavaToken.TRANSIENT;
+ }
+ // fall through
+ case 205: break;
+ case 102:
+ { return JavaToken.IMPLEMENTS;
+ }
+ // fall through
+ case 206: break;
+ case 103:
+ { return JavaToken.INSTANCEOF;
+ }
+ // fall through
+ case 207: break;
+ case 104:
+ { return JavaToken.SYNCHRONIZED;
+ }
+ // fall through
+ case 208: break;
+ default:
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}
diff --git a/benchmarks/src/main/java/org/ucfs/JavaToken.kt b/benchmarks/src/main/java/org/ucfs/JavaToken.kt
new file mode 100644
index 000000000..13c881226
--- /dev/null
+++ b/benchmarks/src/main/java/org/ucfs/JavaToken.kt
@@ -0,0 +1,31 @@
+package org.ucfs
+
+import org.ucfs.parser.ParsingException
+import org.ucfs.rsm.symbol.ITerminal
+
+enum class JavaToken : ITerminal {
+ ID, EOF, INTEGERLIT, FLOATINGLIT, BOOLEANLIT, CHARLIT, STRINGLIT, NULLLIT,
+ BOOLEAN, BYTE, SHORT, INT, LONG, CHAR, FLOAT, DOUBLE, DOT, BRACKETLEFT, BRACKETRIGHT,
+ PARENTHLEFT, PARENTHRIGHT, CURLYLEFT, CURLYRIGHT, EXTENDS, ANDBIT, LT, GT,
+ DIAMOND, SEMICOLON, COLON, DOUBLECOLON, ELLIPSIS, COMMA, QUESTIONMARK, SUPER, PACKAGE,
+ IMPORT, STATIC, STAR, PLUS, MINUS, PERCENT, SLASH, PLUSPLUS, MINUSMINUS, TILDA, EXCLAMATIONMARK,
+ CLASS, PUBLIC, PROTECTED, PRIVATE, FINAL, STRICTFP, IMPLEMENTS, TRANSIENT, VOLATILE, ASSIGN,
+ STARASSIGN, SLASHASSIGN, PLUSASSIGN, MINUSASSIGN, PERCENTASSIGN, XORASSIGN, SHIFTLEFTASSIGN,
+ SHIFTRIGHTASSIGN, USRIGHTSHIFTASSIGN, ANDASSIGN, ORASSIGN, OR, AND, XORBIT, EQ, NOTEQ, LESSEQ,
+ GREATEQ, INSTANCEOF, SYNCHRONIZED, NATIVE, VOID, THIS, THROWS, ENUM, INTERFACE, ABSTRACT, AT, DEFAULT, ASSERT,
+ SWITCH, CASE, WHILE, FOR, IF, ELSE, DO, BREAK, CONTINUE, RETURN, THROW, TRY, CATCH, FINALLY, ORBIT, NEW, ARROW;
+
+ override fun getComparator(): Comparator {
+ return object : Comparator {
+ override fun compare(a: ITerminal, b: ITerminal): Int {
+ if (a !is JavaToken || b !is JavaToken) {
+ throw ParsingException(
+ "used comparator for $javaClass, " +
+ "but got elements of ${a.javaClass}$ and ${b.javaClass}\$"
+ )
+ }
+ return a.ordinal - b.ordinal
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt b/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt
new file mode 100644
index 000000000..8c4934ee9
--- /dev/null
+++ b/benchmarks/src/main/kotlin/org/ucfs/Java8Parser.kt
@@ -0,0 +1,8655 @@
+@file:Suppress("RedundantVisibilityModifier")
+
+package org.ucfs
+
+import java8.Java8
+import java8.JavaToken
+import org.ucfs.descriptors.Descriptor
+import org.ucfs.input.IInputGraph
+import org.ucfs.input.ILabel
+import org.ucfs.parser.GeneratedParser
+import org.ucfs.rsm.symbol.Nonterminal
+import org.ucfs.sppf.node.SppfNode
+
+public class Java8Parser : GeneratedParser()
+ {
+ public val grammar: Java8 = Java8()
+
+ private val CompilationUnit: Nonterminal = grammar.CompilationUnit.nonterm
+
+ private val Identifier: Nonterminal = grammar.Identifier.nonterm
+
+ private val Literal: Nonterminal = grammar.Literal.nonterm
+
+ private val Type: Nonterminal = grammar.Type.nonterm
+
+ private val PrimitiveType: Nonterminal = grammar.PrimitiveType.nonterm
+
+ private val ReferenceType: Nonterminal = grammar.ReferenceType.nonterm
+
+ private val Annotation: Nonterminal = grammar.Annotation.nonterm
+
+ private val NumericType: Nonterminal = grammar.NumericType.nonterm
+
+ private val IntegralType: Nonterminal = grammar.IntegralType.nonterm
+
+ private val FloatingPointType: Nonterminal = grammar.FloatingPointType.nonterm
+
+ private val ClassOrInterfaceType: Nonterminal = grammar.ClassOrInterfaceType.nonterm
+
+ private val TypeVariable: Nonterminal = grammar.TypeVariable.nonterm
+
+ private val ArrayType: Nonterminal = grammar.ArrayType.nonterm
+
+ private val ClassType: Nonterminal = grammar.ClassType.nonterm
+
+ private val InterfaceType: Nonterminal = grammar.InterfaceType.nonterm
+
+ private val TypeArguments: Nonterminal = grammar.TypeArguments.nonterm
+
+ private val Dims: Nonterminal = grammar.Dims.nonterm
+
+ private val TypeParameter: Nonterminal = grammar.TypeParameter.nonterm
+
+ private val TypeParameterModifier: Nonterminal = grammar.TypeParameterModifier.nonterm
+
+ private val TypeBound: Nonterminal = grammar.TypeBound.nonterm
+
+ private val AdditionalBound: Nonterminal = grammar.AdditionalBound.nonterm
+
+ private val TypeArgumentList: Nonterminal = grammar.TypeArgumentList.nonterm
+
+ private val TypeArgument: Nonterminal = grammar.TypeArgument.nonterm
+
+ private val Wildcard: Nonterminal = grammar.Wildcard.nonterm
+
+ private val WildcardBounds: Nonterminal = grammar.WildcardBounds.nonterm
+
+ private val TypeName: Nonterminal = grammar.TypeName.nonterm
+
+ private val PackageOrTypeName: Nonterminal = grammar.PackageOrTypeName.nonterm
+
+ private val ExpressionName: Nonterminal = grammar.ExpressionName.nonterm
+
+ private val AmbiguousName: Nonterminal = grammar.AmbiguousName.nonterm
+
+ private val MethodName: Nonterminal = grammar.MethodName.nonterm
+
+ private val PackageName: Nonterminal = grammar.PackageName.nonterm
+
+ private val Result: Nonterminal = grammar.Result.nonterm
+
+ private val PackageDeclaration: Nonterminal = grammar.PackageDeclaration.nonterm
+
+ private val ImportDeclaration: Nonterminal = grammar.ImportDeclaration.nonterm
+
+ private val TypeDeclaration: Nonterminal = grammar.TypeDeclaration.nonterm
+
+ private val PackageModifier: Nonterminal = grammar.PackageModifier.nonterm
+
+ private val SingleTypeImportDeclaration: Nonterminal = grammar.SingleTypeImportDeclaration.nonterm
+
+ private val TypeImportOnDemandDeclaration: Nonterminal =
+ grammar.TypeImportOnDemandDeclaration.nonterm
+
+ private val SingleStaticImportDeclaration: Nonterminal =
+ grammar.SingleStaticImportDeclaration.nonterm
+
+ private val StaticImportOnDemandDeclaration: Nonterminal =
+ grammar.StaticImportOnDemandDeclaration.nonterm
+
+ private val ClassDeclaration: Nonterminal = grammar.ClassDeclaration.nonterm
+
+ private val InterfaceDeclaration: Nonterminal = grammar.InterfaceDeclaration.nonterm
+
+ private val Throws: Nonterminal = grammar.Throws.nonterm
+
+ private val NormalClassDeclaration: Nonterminal = grammar.NormalClassDeclaration.nonterm
+
+ private val EnumDeclaration: Nonterminal = grammar.EnumDeclaration.nonterm
+
+ private val ClassModifier: Nonterminal = grammar.ClassModifier.nonterm
+
+ private val TypeParameters: Nonterminal = grammar.TypeParameters.nonterm
+
+ private val Superclass: Nonterminal = grammar.Superclass.nonterm
+
+ private val Superinterfaces: Nonterminal = grammar.Superinterfaces.nonterm
+
+ private val ClassBody: Nonterminal = grammar.ClassBody.nonterm
+
+ private val TypeParameterList: Nonterminal = grammar.TypeParameterList.nonterm
+
+ private val InterfaceTypeList: Nonterminal = grammar.InterfaceTypeList.nonterm
+
+ private val ClassBodyDeclaration: Nonterminal = grammar.ClassBodyDeclaration.nonterm
+
+ private val ClassMemberDeclaration: Nonterminal = grammar.ClassMemberDeclaration.nonterm
+
+ private val InstanceInitializer: Nonterminal = grammar.InstanceInitializer.nonterm
+
+ private val StaticInitializer: Nonterminal = grammar.StaticInitializer.nonterm
+
+ private val ConstructorDeclaration: Nonterminal = grammar.ConstructorDeclaration.nonterm
+
+ private val FieldDeclaration: Nonterminal = grammar.FieldDeclaration.nonterm
+
+ private val MethodDeclaration: Nonterminal = grammar.MethodDeclaration.nonterm
+
+ private val FieldModifier: Nonterminal = grammar.FieldModifier.nonterm
+
+ private val UnannType: Nonterminal = grammar.UnannType.nonterm
+
+ private val VariableDeclaratorList: Nonterminal = grammar.VariableDeclaratorList.nonterm
+
+ private val VariableDeclarator: Nonterminal = grammar.VariableDeclarator.nonterm
+
+ private val VariableDeclaratorId: Nonterminal = grammar.VariableDeclaratorId.nonterm
+
+ private val VariableInitializer: Nonterminal = grammar.VariableInitializer.nonterm
+
+ private val Expression: Nonterminal = grammar.Expression.nonterm
+
+ private val ArrayInitializer: Nonterminal = grammar.ArrayInitializer.nonterm
+
+ private val UnannPrimitiveType: Nonterminal = grammar.UnannPrimitiveType.nonterm
+
+ private val UnannReferenceType: Nonterminal = grammar.UnannReferenceType.nonterm
+
+ private val UnannClassOrInterfaceType: Nonterminal = grammar.UnannClassOrInterfaceType.nonterm
+
+ private val UnannTypeVariable: Nonterminal = grammar.UnannTypeVariable.nonterm
+
+ private val UnannArrayType: Nonterminal = grammar.UnannArrayType.nonterm
+
+ private val UnannClassType: Nonterminal = grammar.UnannClassType.nonterm
+
+ private val UnannInterfaceType: Nonterminal = grammar.UnannInterfaceType.nonterm
+
+ private val MethodModifier: Nonterminal = grammar.MethodModifier.nonterm
+
+ private val MethodHeader: Nonterminal = grammar.MethodHeader.nonterm
+
+ private val MethodBody: Nonterminal = grammar.MethodBody.nonterm
+
+ private val MethodDeclarator: Nonterminal = grammar.MethodDeclarator.nonterm
+
+ private val FormalParameterList: Nonterminal = grammar.FormalParameterList.nonterm
+
+ private val ReceiverParameter: Nonterminal = grammar.ReceiverParameter.nonterm
+
+ private val FormalParameters: Nonterminal = grammar.FormalParameters.nonterm
+
+ private val LastFormalParameter: Nonterminal = grammar.LastFormalParameter.nonterm
+
+ private val FormalParameter: Nonterminal = grammar.FormalParameter.nonterm
+
+ private val VariableModifier: Nonterminal = grammar.VariableModifier.nonterm
+
+ private val ExceptionTypeList: Nonterminal = grammar.ExceptionTypeList.nonterm
+
+ private val ExceptionType: Nonterminal = grammar.ExceptionType.nonterm
+
+ private val Block: Nonterminal = grammar.Block.nonterm
+
+ private val ConstructorModifier: Nonterminal = grammar.ConstructorModifier.nonterm
+
+ private val ConstructorDeclarator: Nonterminal = grammar.ConstructorDeclarator.nonterm
+
+ private val ConstructorBody: Nonterminal = grammar.ConstructorBody.nonterm
+
+ private val SimpleTypeName: Nonterminal = grammar.SimpleTypeName.nonterm
+
+ private val ExplicitConstructorInvocation: Nonterminal =
+ grammar.ExplicitConstructorInvocation.nonterm
+
+ private val EnumBody: Nonterminal = grammar.EnumBody.nonterm
+
+ private val EnumConstantList: Nonterminal = grammar.EnumConstantList.nonterm
+
+ private val EnumConstant: Nonterminal = grammar.EnumConstant.nonterm
+
+ private val EnumConstantModifier: Nonterminal = grammar.EnumConstantModifier.nonterm
+
+ private val EnumBodyDeclarations: Nonterminal = grammar.EnumBodyDeclarations.nonterm
+
+ private val BlockStatements: Nonterminal = grammar.BlockStatements.nonterm
+
+ private val ArgumentList: Nonterminal = grammar.ArgumentList.nonterm
+
+ private val Primary: Nonterminal = grammar.Primary.nonterm
+
+ private val NormalInterfaceDeclaration: Nonterminal = grammar.NormalInterfaceDeclaration.nonterm
+
+ private val InterfaceModifier: Nonterminal = grammar.InterfaceModifier.nonterm
+
+ private val ExtendsInterfaces: Nonterminal = grammar.ExtendsInterfaces.nonterm
+
+ private val InterfaceBody: Nonterminal = grammar.InterfaceBody.nonterm
+
+ private val InterfaceMemberDeclaration: Nonterminal = grammar.InterfaceMemberDeclaration.nonterm
+
+ private val ConstantDeclaration: Nonterminal = grammar.ConstantDeclaration.nonterm
+
+ private val ConstantModifier: Nonterminal = grammar.ConstantModifier.nonterm
+
+ private val AnnotationTypeDeclaration: Nonterminal = grammar.AnnotationTypeDeclaration.nonterm
+
+ private val AnnotationTypeBody: Nonterminal = grammar.AnnotationTypeBody.nonterm
+
+ private val AnnotationTypeMemberDeclaration: Nonterminal =
+ grammar.AnnotationTypeMemberDeclaration.nonterm
+
+ private val AnnotationTypeElementDeclaration: Nonterminal =
+ grammar.AnnotationTypeElementDeclaration.nonterm
+
+ private val DefaultValue: Nonterminal = grammar.DefaultValue.nonterm
+
+ private val NormalAnnotation: Nonterminal = grammar.NormalAnnotation.nonterm
+
+ private val ElementValuePairList: Nonterminal = grammar.ElementValuePairList.nonterm
+
+ private val ElementValuePair: Nonterminal = grammar.ElementValuePair.nonterm
+
+ private val ElementValue: Nonterminal = grammar.ElementValue.nonterm
+
+ private val ElementValueArrayInitializer: Nonterminal =
+ grammar.ElementValueArrayInitializer.nonterm
+
+ private val ElementValueList: Nonterminal = grammar.ElementValueList.nonterm
+
+ private val MarkerAnnotation: Nonterminal = grammar.MarkerAnnotation.nonterm
+
+ private val SingleElementAnnotation: Nonterminal = grammar.SingleElementAnnotation.nonterm
+
+ private val InterfaceMethodDeclaration: Nonterminal = grammar.InterfaceMethodDeclaration.nonterm
+
+ private val AnnotationTypeElementModifier: Nonterminal =
+ grammar.AnnotationTypeElementModifier.nonterm
+
+ private val ConditionalExpression: Nonterminal = grammar.ConditionalExpression.nonterm
+
+ private val VariableInitializerList: Nonterminal = grammar.VariableInitializerList.nonterm
+
+ private val BlockStatement: Nonterminal = grammar.BlockStatement.nonterm
+
+ private val LocalVariableDeclarationStatement: Nonterminal =
+ grammar.LocalVariableDeclarationStatement.nonterm
+
+ private val LocalVariableDeclaration: Nonterminal = grammar.LocalVariableDeclaration.nonterm
+
+ private val Statement: Nonterminal = grammar.Statement.nonterm
+
+ private val StatementNoShortIf: Nonterminal = grammar.StatementNoShortIf.nonterm
+
+ private val StatementWithoutTrailingSubstatement: Nonterminal =
+ grammar.StatementWithoutTrailingSubstatement.nonterm
+
+ private val EmptyStatement: Nonterminal = grammar.EmptyStatement.nonterm
+
+ private val LabeledStatement: Nonterminal = grammar.LabeledStatement.nonterm
+
+ private val LabeledStatementNoShortIf: Nonterminal = grammar.LabeledStatementNoShortIf.nonterm
+
+ private val ExpressionStatement: Nonterminal = grammar.ExpressionStatement.nonterm
+
+ private val StatementExpression: Nonterminal = grammar.StatementExpression.nonterm
+
+ private val IfThenStatement: Nonterminal = grammar.IfThenStatement.nonterm
+
+ private val IfThenElseStatement: Nonterminal = grammar.IfThenElseStatement.nonterm
+
+ private val IfThenElseStatementNoShortIf: Nonterminal =
+ grammar.IfThenElseStatementNoShortIf.nonterm
+
+ private val AssertStatement: Nonterminal = grammar.AssertStatement.nonterm
+
+ private val SwitchStatement: Nonterminal = grammar.SwitchStatement.nonterm
+
+ private val SwitchBlock: Nonterminal = grammar.SwitchBlock.nonterm
+
+ private val SwitchBlockStatementGroup: Nonterminal = grammar.SwitchBlockStatementGroup.nonterm
+
+ private val SwitchLabels: Nonterminal = grammar.SwitchLabels.nonterm
+
+ private val SwitchLabel: Nonterminal = grammar.SwitchLabel.nonterm
+
+ private val EnumConstantName: Nonterminal = grammar.EnumConstantName.nonterm
+
+ private val WhileStatement: Nonterminal = grammar.WhileStatement.nonterm
+
+ private val WhileStatementNoShortIf: Nonterminal = grammar.WhileStatementNoShortIf.nonterm
+
+ private val DoStatement: Nonterminal = grammar.DoStatement.nonterm
+
+ private val InterfaceMethodModifier: Nonterminal = grammar.InterfaceMethodModifier.nonterm
+
+ private val ForStatement: Nonterminal = grammar.ForStatement.nonterm
+
+ private val ForStatementNoShortIf: Nonterminal = grammar.ForStatementNoShortIf.nonterm
+
+ private val BasicForStatement: Nonterminal = grammar.BasicForStatement.nonterm
+
+ private val BasicForStatementNoShortIf: Nonterminal = grammar.BasicForStatementNoShortIf.nonterm
+
+ private val ForInit: Nonterminal = grammar.ForInit.nonterm
+
+ private val ForUpdate: Nonterminal = grammar.ForUpdate.nonterm
+
+ private val StatementExpressionList: Nonterminal = grammar.StatementExpressionList.nonterm
+
+ private val EnhancedForStatement: Nonterminal = grammar.EnhancedForStatement.nonterm
+
+ private val EnhancedForStatementNoShortIf: Nonterminal =
+ grammar.EnhancedForStatementNoShortIf.nonterm
+
+ private val BreakStatement: Nonterminal = grammar.BreakStatement.nonterm
+
+ private val ContinueStatement: Nonterminal = grammar.ContinueStatement.nonterm
+
+ private val ReturnStatement: Nonterminal = grammar.ReturnStatement.nonterm
+
+ private val ThrowStatement: Nonterminal = grammar.ThrowStatement.nonterm
+
+ private val SynchronizedStatement: Nonterminal = grammar.SynchronizedStatement.nonterm
+
+ private val TryStatement: Nonterminal = grammar.TryStatement.nonterm
+
+ private val Catches: Nonterminal = grammar.Catches.nonterm
+
+ private val CatchClause: Nonterminal = grammar.CatchClause.nonterm
+
+ private val CatchFormalParameter: Nonterminal = grammar.CatchFormalParameter.nonterm
+
+ private val CatchType: Nonterminal = grammar.CatchType.nonterm
+
+ private val Finally: Nonterminal = grammar.Finally.nonterm
+
+ private val TryWithResourcesStatement: Nonterminal = grammar.TryWithResourcesStatement.nonterm
+
+ private val ResourceSpecification: Nonterminal = grammar.ResourceSpecification.nonterm
+
+ private val ResourceList: Nonterminal = grammar.ResourceList.nonterm
+
+ private val Resource: Nonterminal = grammar.Resource.nonterm
+
+ private val PrimaryNoNewArray: Nonterminal = grammar.PrimaryNoNewArray.nonterm
+
+ private val ClassLiteral: Nonterminal = grammar.ClassLiteral.nonterm
+
+ private val classOrInterfaceTypeToInstantiate: Nonterminal =
+ grammar.classOrInterfaceTypeToInstantiate.nonterm
+
+ private val UnqualifiedClassInstanceCreationExpression: Nonterminal =
+ grammar.UnqualifiedClassInstanceCreationExpression.nonterm
+
+ private val ClassInstanceCreationExpression: Nonterminal =
+ grammar.ClassInstanceCreationExpression.nonterm
+
+ private val FieldAccess: Nonterminal = grammar.FieldAccess.nonterm
+
+ private val TypeArgumentsOrDiamond: Nonterminal = grammar.TypeArgumentsOrDiamond.nonterm
+
+ private val ArrayAccess: Nonterminal = grammar.ArrayAccess.nonterm
+
+ private val MethodInvocation: Nonterminal = grammar.MethodInvocation.nonterm
+
+ private val MethodReference: Nonterminal = grammar.MethodReference.nonterm
+
+ private val ArrayCreationExpression: Nonterminal = grammar.ArrayCreationExpression.nonterm
+
+ private val DimExprs: Nonterminal = grammar.DimExprs.nonterm
+
+ private val DimExpr: Nonterminal = grammar.DimExpr.nonterm
+
+ private val LambdaExpression: Nonterminal = grammar.LambdaExpression.nonterm
+
+ private val LambdaParameters: Nonterminal = grammar.LambdaParameters.nonterm
+
+ private val InferredFormalParameterList: Nonterminal = grammar.InferredFormalParameterList.nonterm
+
+ private val LambdaBody: Nonterminal = grammar.LambdaBody.nonterm
+
+ private val AssignmentExpression: Nonterminal = grammar.AssignmentExpression.nonterm
+
+ private val Assignment: Nonterminal = grammar.Assignment.nonterm
+
+ private val LeftHandSide: Nonterminal = grammar.LeftHandSide.nonterm
+
+ private val AssignmentOperator: Nonterminal = grammar.AssignmentOperator.nonterm
+
+ private val ConditionalOrExpression: Nonterminal = grammar.ConditionalOrExpression.nonterm
+
+ private val ConditionalAndExpression: Nonterminal = grammar.ConditionalAndExpression.nonterm
+
+ private val InclusiveOrExpression: Nonterminal = grammar.InclusiveOrExpression.nonterm
+
+ private val ExclusiveOrExpression: Nonterminal = grammar.ExclusiveOrExpression.nonterm
+
+ private val AndExpression: Nonterminal = grammar.AndExpression.nonterm
+
+ private val EqualityExpression: Nonterminal = grammar.EqualityExpression.nonterm
+
+ private val RelationalExpression: Nonterminal = grammar.RelationalExpression.nonterm
+
+ private val ShiftExpression: Nonterminal = grammar.ShiftExpression.nonterm
+
+ private val AdditiveExpression: Nonterminal = grammar.AdditiveExpression.nonterm
+
+ private val MultiplicativeExpression: Nonterminal = grammar.MultiplicativeExpression.nonterm
+
+ private val PreIncrementExpression: Nonterminal = grammar.PreIncrementExpression.nonterm
+
+ private val PreDecrementExpression: Nonterminal = grammar.PreDecrementExpression.nonterm
+
+ private val UnaryExpressionNotPlusMinus: Nonterminal = grammar.UnaryExpressionNotPlusMinus.nonterm
+
+ private val UnaryExpression: Nonterminal = grammar.UnaryExpression.nonterm
+
+ private val PostfixExpression: Nonterminal = grammar.PostfixExpression.nonterm
+
+ private val PostIncrementExpression: Nonterminal = grammar.PostIncrementExpression.nonterm
+
+ private val PostDecrementExpression: Nonterminal = grammar.PostDecrementExpression.nonterm
+
+ private val CastExpression: Nonterminal = grammar.CastExpression.nonterm
+
+ private val ConstantExpression: Nonterminal = grammar.ConstantExpression.nonterm
+
+ override fun callNtFuncs(
+ nt: Nonterminal,
+ descriptor: Descriptor,
+ curSppfNode: SppfNode?,
+ ) {
+ when(nt.name) {
+ "CompilationUnit" -> parseCompilationUnit(descriptor, curSppfNode)
+ "Identifier" -> parseIdentifier(descriptor, curSppfNode)
+ "Literal" -> parseLiteral(descriptor, curSppfNode)
+ "Type" -> parseType(descriptor, curSppfNode)
+ "PrimitiveType" -> parsePrimitiveType(descriptor, curSppfNode)
+ "ReferenceType" -> parseReferenceType(descriptor, curSppfNode)
+ "Annotation" -> parseAnnotation(descriptor, curSppfNode)
+ "NumericType" -> parseNumericType(descriptor, curSppfNode)
+ "IntegralType" -> parseIntegralType(descriptor, curSppfNode)
+ "FloatingPointType" -> parseFloatingPointType(descriptor, curSppfNode)
+ "ClassOrInterfaceType" -> parseClassOrInterfaceType(descriptor, curSppfNode)
+ "TypeVariable" -> parseTypeVariable(descriptor, curSppfNode)
+ "ArrayType" -> parseArrayType(descriptor, curSppfNode)
+ "ClassType" -> parseClassType(descriptor, curSppfNode)
+ "InterfaceType" -> parseInterfaceType(descriptor, curSppfNode)
+ "TypeArguments" -> parseTypeArguments(descriptor, curSppfNode)
+ "Dims" -> parseDims(descriptor, curSppfNode)
+ "TypeParameter" -> parseTypeParameter(descriptor, curSppfNode)
+ "TypeParameterModifier" -> parseTypeParameterModifier(descriptor, curSppfNode)
+ "TypeBound" -> parseTypeBound(descriptor, curSppfNode)
+ "AdditionalBound" -> parseAdditionalBound(descriptor, curSppfNode)
+ "TypeArgumentList" -> parseTypeArgumentList(descriptor, curSppfNode)
+ "TypeArgument" -> parseTypeArgument(descriptor, curSppfNode)
+ "Wildcard" -> parseWildcard(descriptor, curSppfNode)
+ "WildcardBounds" -> parseWildcardBounds(descriptor, curSppfNode)
+ "TypeName" -> parseTypeName(descriptor, curSppfNode)
+ "PackageOrTypeName" -> parsePackageOrTypeName(descriptor, curSppfNode)
+ "ExpressionName" -> parseExpressionName(descriptor, curSppfNode)
+ "AmbiguousName" -> parseAmbiguousName(descriptor, curSppfNode)
+ "MethodName" -> parseMethodName(descriptor, curSppfNode)
+ "PackageName" -> parsePackageName(descriptor, curSppfNode)
+ "Result" -> parseResult(descriptor, curSppfNode)
+ "PackageDeclaration" -> parsePackageDeclaration(descriptor, curSppfNode)
+ "ImportDeclaration" -> parseImportDeclaration(descriptor, curSppfNode)
+ "TypeDeclaration" -> parseTypeDeclaration(descriptor, curSppfNode)
+ "PackageModifier" -> parsePackageModifier(descriptor, curSppfNode)
+ "SingleTypeImportDeclaration" -> parseSingleTypeImportDeclaration(descriptor, curSppfNode)
+ "TypeImportOnDemandDeclaration" -> parseTypeImportOnDemandDeclaration(descriptor, curSppfNode)
+ "SingleStaticImportDeclaration" -> parseSingleStaticImportDeclaration(descriptor, curSppfNode)
+ "StaticImportOnDemandDeclaration" -> parseStaticImportOnDemandDeclaration(descriptor,
+ curSppfNode)
+ "ClassDeclaration" -> parseClassDeclaration(descriptor, curSppfNode)
+ "InterfaceDeclaration" -> parseInterfaceDeclaration(descriptor, curSppfNode)
+ "Throws" -> parseThrows(descriptor, curSppfNode)
+ "NormalClassDeclaration" -> parseNormalClassDeclaration(descriptor, curSppfNode)
+ "EnumDeclaration" -> parseEnumDeclaration(descriptor, curSppfNode)
+ "ClassModifier" -> parseClassModifier(descriptor, curSppfNode)
+ "TypeParameters" -> parseTypeParameters(descriptor, curSppfNode)
+ "Superclass" -> parseSuperclass(descriptor, curSppfNode)
+ "Superinterfaces" -> parseSuperinterfaces(descriptor, curSppfNode)
+ "ClassBody" -> parseClassBody(descriptor, curSppfNode)
+ "TypeParameterList" -> parseTypeParameterList(descriptor, curSppfNode)
+ "InterfaceTypeList" -> parseInterfaceTypeList(descriptor, curSppfNode)
+ "ClassBodyDeclaration" -> parseClassBodyDeclaration(descriptor, curSppfNode)
+ "ClassMemberDeclaration" -> parseClassMemberDeclaration(descriptor, curSppfNode)
+ "InstanceInitializer" -> parseInstanceInitializer(descriptor, curSppfNode)
+ "StaticInitializer" -> parseStaticInitializer(descriptor, curSppfNode)
+ "ConstructorDeclaration" -> parseConstructorDeclaration(descriptor, curSppfNode)
+ "FieldDeclaration" -> parseFieldDeclaration(descriptor, curSppfNode)
+ "MethodDeclaration" -> parseMethodDeclaration(descriptor, curSppfNode)
+ "FieldModifier" -> parseFieldModifier(descriptor, curSppfNode)
+ "UnannType" -> parseUnannType(descriptor, curSppfNode)
+ "VariableDeclaratorList" -> parseVariableDeclaratorList(descriptor, curSppfNode)
+ "VariableDeclarator" -> parseVariableDeclarator(descriptor, curSppfNode)
+ "VariableDeclaratorId" -> parseVariableDeclaratorId(descriptor, curSppfNode)
+ "VariableInitializer" -> parseVariableInitializer(descriptor, curSppfNode)
+ "Expression" -> parseExpression(descriptor, curSppfNode)
+ "ArrayInitializer" -> parseArrayInitializer(descriptor, curSppfNode)
+ "UnannPrimitiveType" -> parseUnannPrimitiveType(descriptor, curSppfNode)
+ "UnannReferenceType" -> parseUnannReferenceType(descriptor, curSppfNode)
+ "UnannClassOrInterfaceType" -> parseUnannClassOrInterfaceType(descriptor, curSppfNode)
+ "UnannTypeVariable" -> parseUnannTypeVariable(descriptor, curSppfNode)
+ "UnannArrayType" -> parseUnannArrayType(descriptor, curSppfNode)
+ "UnannClassType" -> parseUnannClassType(descriptor, curSppfNode)
+ "UnannInterfaceType" -> parseUnannInterfaceType(descriptor, curSppfNode)
+ "MethodModifier" -> parseMethodModifier(descriptor, curSppfNode)
+ "MethodHeader" -> parseMethodHeader(descriptor, curSppfNode)
+ "MethodBody" -> parseMethodBody(descriptor, curSppfNode)
+ "MethodDeclarator" -> parseMethodDeclarator(descriptor, curSppfNode)
+ "FormalParameterList" -> parseFormalParameterList(descriptor, curSppfNode)
+ "ReceiverParameter" -> parseReceiverParameter(descriptor, curSppfNode)
+ "FormalParameters" -> parseFormalParameters(descriptor, curSppfNode)
+ "LastFormalParameter" -> parseLastFormalParameter(descriptor, curSppfNode)
+ "FormalParameter" -> parseFormalParameter(descriptor, curSppfNode)
+ "VariableModifier" -> parseVariableModifier(descriptor, curSppfNode)
+ "ExceptionTypeList" -> parseExceptionTypeList(descriptor, curSppfNode)
+ "ExceptionType" -> parseExceptionType(descriptor, curSppfNode)
+ "Block" -> parseBlock(descriptor, curSppfNode)
+ "ConstructorModifier" -> parseConstructorModifier(descriptor, curSppfNode)
+ "ConstructorDeclarator" -> parseConstructorDeclarator(descriptor, curSppfNode)
+ "ConstructorBody" -> parseConstructorBody(descriptor, curSppfNode)
+ "SimpleTypeName" -> parseSimpleTypeName(descriptor, curSppfNode)
+ "ExplicitConstructorInvocation" -> parseExplicitConstructorInvocation(descriptor, curSppfNode)
+ "EnumBody" -> parseEnumBody(descriptor, curSppfNode)
+ "EnumConstantList" -> parseEnumConstantList(descriptor, curSppfNode)
+ "EnumConstant" -> parseEnumConstant(descriptor, curSppfNode)
+ "EnumConstantModifier" -> parseEnumConstantModifier(descriptor, curSppfNode)
+ "EnumBodyDeclarations" -> parseEnumBodyDeclarations(descriptor, curSppfNode)
+ "BlockStatements" -> parseBlockStatements(descriptor, curSppfNode)
+ "ArgumentList" -> parseArgumentList(descriptor, curSppfNode)
+ "Primary" -> parsePrimary(descriptor, curSppfNode)
+ "NormalInterfaceDeclaration" -> parseNormalInterfaceDeclaration(descriptor, curSppfNode)
+ "InterfaceModifier" -> parseInterfaceModifier(descriptor, curSppfNode)
+ "ExtendsInterfaces" -> parseExtendsInterfaces(descriptor, curSppfNode)
+ "InterfaceBody" -> parseInterfaceBody(descriptor, curSppfNode)
+ "InterfaceMemberDeclaration" -> parseInterfaceMemberDeclaration(descriptor, curSppfNode)
+ "ConstantDeclaration" -> parseConstantDeclaration(descriptor, curSppfNode)
+ "ConstantModifier" -> parseConstantModifier(descriptor, curSppfNode)
+ "AnnotationTypeDeclaration" -> parseAnnotationTypeDeclaration(descriptor, curSppfNode)
+ "AnnotationTypeBody" -> parseAnnotationTypeBody(descriptor, curSppfNode)
+ "AnnotationTypeMemberDeclaration" -> parseAnnotationTypeMemberDeclaration(descriptor,
+ curSppfNode)
+ "AnnotationTypeElementDeclaration" -> parseAnnotationTypeElementDeclaration(descriptor,
+ curSppfNode)
+ "DefaultValue" -> parseDefaultValue(descriptor, curSppfNode)
+ "NormalAnnotation" -> parseNormalAnnotation(descriptor, curSppfNode)
+ "ElementValuePairList" -> parseElementValuePairList(descriptor, curSppfNode)
+ "ElementValuePair" -> parseElementValuePair(descriptor, curSppfNode)
+ "ElementValue" -> parseElementValue(descriptor, curSppfNode)
+ "ElementValueArrayInitializer" -> parseElementValueArrayInitializer(descriptor, curSppfNode)
+ "ElementValueList" -> parseElementValueList(descriptor, curSppfNode)
+ "MarkerAnnotation" -> parseMarkerAnnotation(descriptor, curSppfNode)
+ "SingleElementAnnotation" -> parseSingleElementAnnotation(descriptor, curSppfNode)
+ "InterfaceMethodDeclaration" -> parseInterfaceMethodDeclaration(descriptor, curSppfNode)
+ "AnnotationTypeElementModifier" -> parseAnnotationTypeElementModifier(descriptor, curSppfNode)
+ "ConditionalExpression" -> parseConditionalExpression(descriptor, curSppfNode)
+ "VariableInitializerList" -> parseVariableInitializerList(descriptor, curSppfNode)
+ "BlockStatement" -> parseBlockStatement(descriptor, curSppfNode)
+ "LocalVariableDeclarationStatement" -> parseLocalVariableDeclarationStatement(descriptor,
+ curSppfNode)
+ "LocalVariableDeclaration" -> parseLocalVariableDeclaration(descriptor, curSppfNode)
+ "Statement" -> parseStatement(descriptor, curSppfNode)
+ "StatementNoShortIf" -> parseStatementNoShortIf(descriptor, curSppfNode)
+ "StatementWithoutTrailingSubstatement" ->
+ parseStatementWithoutTrailingSubstatement(descriptor, curSppfNode)
+ "EmptyStatement" -> parseEmptyStatement(descriptor, curSppfNode)
+ "LabeledStatement" -> parseLabeledStatement(descriptor, curSppfNode)
+ "LabeledStatementNoShortIf" -> parseLabeledStatementNoShortIf(descriptor, curSppfNode)
+ "ExpressionStatement" -> parseExpressionStatement(descriptor, curSppfNode)
+ "StatementExpression" -> parseStatementExpression(descriptor, curSppfNode)
+ "IfThenStatement" -> parseIfThenStatement(descriptor, curSppfNode)
+ "IfThenElseStatement" -> parseIfThenElseStatement(descriptor, curSppfNode)
+ "IfThenElseStatementNoShortIf" -> parseIfThenElseStatementNoShortIf(descriptor, curSppfNode)
+ "AssertStatement" -> parseAssertStatement(descriptor, curSppfNode)
+ "SwitchStatement" -> parseSwitchStatement(descriptor, curSppfNode)
+ "SwitchBlock" -> parseSwitchBlock(descriptor, curSppfNode)
+ "SwitchBlockStatementGroup" -> parseSwitchBlockStatementGroup(descriptor, curSppfNode)
+ "SwitchLabels" -> parseSwitchLabels(descriptor, curSppfNode)
+ "SwitchLabel" -> parseSwitchLabel(descriptor, curSppfNode)
+ "EnumConstantName" -> parseEnumConstantName(descriptor, curSppfNode)
+ "WhileStatement" -> parseWhileStatement(descriptor, curSppfNode)
+ "WhileStatementNoShortIf" -> parseWhileStatementNoShortIf(descriptor, curSppfNode)
+ "DoStatement" -> parseDoStatement(descriptor, curSppfNode)
+ "InterfaceMethodModifier" -> parseInterfaceMethodModifier(descriptor, curSppfNode)
+ "ForStatement" -> parseForStatement(descriptor, curSppfNode)
+ "ForStatementNoShortIf" -> parseForStatementNoShortIf(descriptor, curSppfNode)
+ "BasicForStatement" -> parseBasicForStatement(descriptor, curSppfNode)
+ "BasicForStatementNoShortIf" -> parseBasicForStatementNoShortIf(descriptor, curSppfNode)
+ "ForInit" -> parseForInit(descriptor, curSppfNode)
+ "ForUpdate" -> parseForUpdate(descriptor, curSppfNode)
+ "StatementExpressionList" -> parseStatementExpressionList(descriptor, curSppfNode)
+ "EnhancedForStatement" -> parseEnhancedForStatement(descriptor, curSppfNode)
+ "EnhancedForStatementNoShortIf" -> parseEnhancedForStatementNoShortIf(descriptor, curSppfNode)
+ "BreakStatement" -> parseBreakStatement(descriptor, curSppfNode)
+ "ContinueStatement" -> parseContinueStatement(descriptor, curSppfNode)
+ "ReturnStatement" -> parseReturnStatement(descriptor, curSppfNode)
+ "ThrowStatement" -> parseThrowStatement(descriptor, curSppfNode)
+ "SynchronizedStatement" -> parseSynchronizedStatement(descriptor, curSppfNode)
+ "TryStatement" -> parseTryStatement(descriptor, curSppfNode)
+ "Catches" -> parseCatches(descriptor, curSppfNode)
+ "CatchClause" -> parseCatchClause(descriptor, curSppfNode)
+ "CatchFormalParameter" -> parseCatchFormalParameter(descriptor, curSppfNode)
+ "CatchType" -> parseCatchType(descriptor, curSppfNode)
+ "Finally" -> parseFinally(descriptor, curSppfNode)
+ "TryWithResourcesStatement" -> parseTryWithResourcesStatement(descriptor, curSppfNode)
+ "ResourceSpecification" -> parseResourceSpecification(descriptor, curSppfNode)
+ "ResourceList" -> parseResourceList(descriptor, curSppfNode)
+ "Resource" -> parseResource(descriptor, curSppfNode)
+ "PrimaryNoNewArray" -> parsePrimaryNoNewArray(descriptor, curSppfNode)
+ "ClassLiteral" -> parseClassLiteral(descriptor, curSppfNode)
+ "classOrInterfaceTypeToInstantiate" -> parseclassOrInterfaceTypeToInstantiate(descriptor,
+ curSppfNode)
+ "UnqualifiedClassInstanceCreationExpression" ->
+ parseUnqualifiedClassInstanceCreationExpression(descriptor, curSppfNode)
+ "ClassInstanceCreationExpression" -> parseClassInstanceCreationExpression(descriptor,
+ curSppfNode)
+ "FieldAccess" -> parseFieldAccess(descriptor, curSppfNode)
+ "TypeArgumentsOrDiamond" -> parseTypeArgumentsOrDiamond(descriptor, curSppfNode)
+ "ArrayAccess" -> parseArrayAccess(descriptor, curSppfNode)
+ "MethodInvocation" -> parseMethodInvocation(descriptor, curSppfNode)
+ "MethodReference" -> parseMethodReference(descriptor, curSppfNode)
+ "ArrayCreationExpression" -> parseArrayCreationExpression(descriptor, curSppfNode)
+ "DimExprs" -> parseDimExprs(descriptor, curSppfNode)
+ "DimExpr" -> parseDimExpr(descriptor, curSppfNode)
+ "LambdaExpression" -> parseLambdaExpression(descriptor, curSppfNode)
+ "LambdaParameters" -> parseLambdaParameters(descriptor, curSppfNode)
+ "InferredFormalParameterList" -> parseInferredFormalParameterList(descriptor, curSppfNode)
+ "LambdaBody" -> parseLambdaBody(descriptor, curSppfNode)
+ "AssignmentExpression" -> parseAssignmentExpression(descriptor, curSppfNode)
+ "Assignment" -> parseAssignment(descriptor, curSppfNode)
+ "LeftHandSide" -> parseLeftHandSide(descriptor, curSppfNode)
+ "AssignmentOperator" -> parseAssignmentOperator(descriptor, curSppfNode)
+ "ConditionalOrExpression" -> parseConditionalOrExpression(descriptor, curSppfNode)
+ "ConditionalAndExpression" -> parseConditionalAndExpression(descriptor, curSppfNode)
+ "InclusiveOrExpression" -> parseInclusiveOrExpression(descriptor, curSppfNode)
+ "ExclusiveOrExpression" -> parseExclusiveOrExpression(descriptor, curSppfNode)
+ "AndExpression" -> parseAndExpression(descriptor, curSppfNode)
+ "EqualityExpression" -> parseEqualityExpression(descriptor, curSppfNode)
+ "RelationalExpression" -> parseRelationalExpression(descriptor, curSppfNode)
+ "ShiftExpression" -> parseShiftExpression(descriptor, curSppfNode)
+ "AdditiveExpression" -> parseAdditiveExpression(descriptor, curSppfNode)
+ "MultiplicativeExpression" -> parseMultiplicativeExpression(descriptor, curSppfNode)
+ "PreIncrementExpression" -> parsePreIncrementExpression(descriptor, curSppfNode)
+ "PreDecrementExpression" -> parsePreDecrementExpression(descriptor, curSppfNode)
+ "UnaryExpressionNotPlusMinus" -> parseUnaryExpressionNotPlusMinus(descriptor, curSppfNode)
+ "UnaryExpression" -> parseUnaryExpression(descriptor, curSppfNode)
+ "PostfixExpression" -> parsePostfixExpression(descriptor, curSppfNode)
+ "PostIncrementExpression" -> parsePostIncrementExpression(descriptor, curSppfNode)
+ "PostDecrementExpression" -> parsePostDecrementExpression(descriptor, curSppfNode)
+ "CastExpression" -> parseCastExpression(descriptor, curSppfNode)
+ "ConstantExpression" -> parseConstantExpression(descriptor, curSppfNode)
+ }
+ }
+
+ private fun parseCompilationUnit(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ImportDeclaration,
+ state.nonterminalEdges[ImportDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, TypeDeclaration,
+ state.nonterminalEdges[TypeDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, PackageDeclaration,
+ state.nonterminalEdges[PackageDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ImportDeclaration,
+ state.nonterminalEdges[ImportDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, TypeDeclaration,
+ state.nonterminalEdges[TypeDeclaration]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeDeclaration,
+ state.nonterminalEdges[TypeDeclaration]!!, curSppfNode)
+ }
+ }
+ }
+
+ private fun parseIdentifier(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.ID ->
+ handleTerminal(JavaToken.ID, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseLiteral(descriptor: Descriptor, curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.CHARLIT ->
+ handleTerminal(JavaToken.CHARLIT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.NULLLIT ->
+ handleTerminal(JavaToken.NULLLIT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.BOOLEANLIT ->
+ handleTerminal(JavaToken.BOOLEANLIT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.INTEGERLIT ->
+ handleTerminal(JavaToken.INTEGERLIT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.STRINGLIT ->
+ handleTerminal(JavaToken.STRINGLIT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.FLOATINGLIT ->
+ handleTerminal(JavaToken.FLOATINGLIT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseType(descriptor: Descriptor, curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parsePrimitiveType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.BOOLEAN ->
+ handleTerminal(JavaToken.BOOLEAN, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, NumericType, state.nonterminalEdges[NumericType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseReferenceType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ArrayType, state.nonterminalEdges[ArrayType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ClassOrInterfaceType,
+ state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseAnnotation(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, MarkerAnnotation,
+ state.nonterminalEdges[MarkerAnnotation]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, SingleElementAnnotation,
+ state.nonterminalEdges[SingleElementAnnotation]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, NormalAnnotation,
+ state.nonterminalEdges[NormalAnnotation]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseNumericType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, IntegralType, state.nonterminalEdges[IntegralType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, FloatingPointType,
+ state.nonterminalEdges[FloatingPointType]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseIntegralType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.BYTE ->
+ handleTerminal(JavaToken.BYTE, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.SHORT ->
+ handleTerminal(JavaToken.SHORT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.INT ->
+ handleTerminal(JavaToken.INT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.LONG ->
+ handleTerminal(JavaToken.LONG, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.CHAR ->
+ handleTerminal(JavaToken.CHAR, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseFloatingPointType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.FLOAT ->
+ handleTerminal(JavaToken.FLOAT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.DOUBLE ->
+ handleTerminal(JavaToken.DOUBLE, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassOrInterfaceType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeVariable(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseArrayType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, PrimitiveType, state.nonterminalEdges[PrimitiveType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ClassOrInterfaceType,
+ state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Dims, state.nonterminalEdges[Dims]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ClassOrInterfaceType,
+ state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeArguments, state.nonterminalEdges[TypeArguments]!!,
+ curSppfNode)
+ }
+ 3 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 4 ->
+ {
+ }
+ }
+ }
+
+ private fun parseInterfaceType(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeArguments(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.LT ->
+ handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeArgumentList,
+ state.nonterminalEdges[TypeArgumentList]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.GT ->
+ handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseDims(descriptor: Descriptor, curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.BRACKETLEFT ->
+ handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.BRACKETRIGHT ->
+ handleTerminal(JavaToken.BRACKETRIGHT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.BRACKETLEFT ->
+ handleTerminal(JavaToken.BRACKETLEFT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parseTypeParameter(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, TypeParameterModifier,
+ state.nonterminalEdges[TypeParameterModifier]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeBound, state.nonterminalEdges[TypeBound]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeParameterModifier(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeBound(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.EXTENDS ->
+ handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeVariable, state.nonterminalEdges[TypeVariable]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, ClassOrInterfaceType,
+ state.nonterminalEdges[ClassOrInterfaceType]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, AdditionalBound,
+ state.nonterminalEdges[AdditionalBound]!!, curSppfNode)
+ }
+ }
+ }
+
+ private fun parseAdditionalBound(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.ANDBIT ->
+ handleTerminal(JavaToken.ANDBIT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeArgumentList(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeArgument, state.nonterminalEdges[TypeArgument]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.COMMA ->
+ handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ }
+ }
+
+ private fun parseTypeArgument(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Wildcard, state.nonterminalEdges[Wildcard]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseWildcard(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.QUESTIONMARK ->
+ handleTerminal(JavaToken.QUESTIONMARK, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, WildcardBounds, state.nonterminalEdges[WildcardBounds]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseWildcardBounds(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.EXTENDS ->
+ handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.SUPER ->
+ handleTerminal(JavaToken.SUPER, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ReferenceType, state.nonterminalEdges[ReferenceType]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, PackageOrTypeName,
+ state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parsePackageOrTypeName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, PackageOrTypeName,
+ state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parseExpressionName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parseAmbiguousName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, AmbiguousName, state.nonterminalEdges[AmbiguousName]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parseMethodName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parsePackageName(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, PackageName, state.nonterminalEdges[PackageName]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ }
+ }
+
+ private fun parseResult(descriptor: Descriptor, curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.VOID ->
+ handleTerminal(JavaToken.VOID, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parsePackageDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.PACKAGE ->
+ handleTerminal(JavaToken.PACKAGE, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, PackageModifier,
+ state.nonterminalEdges[PackageModifier]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseImportDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeImportOnDemandDeclaration,
+ state.nonterminalEdges[TypeImportOnDemandDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, SingleTypeImportDeclaration,
+ state.nonterminalEdges[SingleTypeImportDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, SingleStaticImportDeclaration,
+ state.nonterminalEdges[SingleStaticImportDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, StaticImportOnDemandDeclaration,
+ state.nonterminalEdges[StaticImportOnDemandDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassDeclaration,
+ state.nonterminalEdges[ClassDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, InterfaceDeclaration,
+ state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parsePackageModifier(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseSingleTypeImportDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.IMPORT ->
+ handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeImportOnDemandDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.IMPORT ->
+ handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, PackageOrTypeName,
+ state.nonterminalEdges[PackageOrTypeName]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STAR ->
+ handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 4 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 5 ->
+ {
+ }
+ }
+ }
+
+ private fun parseSingleStaticImportDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.IMPORT ->
+ handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STATIC ->
+ handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode)
+ }
+ 3 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 4 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 5 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 6 ->
+ {
+ }
+ }
+ }
+
+ private fun parseStaticImportOnDemandDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.IMPORT ->
+ handleTerminal(JavaToken.IMPORT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STATIC ->
+ handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeName, state.nonterminalEdges[TypeName]!!, curSppfNode)
+ }
+ 3 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.DOT ->
+ handleTerminal(JavaToken.DOT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 4 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STAR ->
+ handleTerminal(JavaToken.STAR, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 5 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 6 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, NormalClassDeclaration,
+ state.nonterminalEdges[NormalClassDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, EnumDeclaration,
+ state.nonterminalEdges[EnumDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseInterfaceDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, AnnotationTypeDeclaration,
+ state.nonterminalEdges[AnnotationTypeDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, NormalInterfaceDeclaration,
+ state.nonterminalEdges[NormalInterfaceDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseThrows(descriptor: Descriptor, curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.THROWS ->
+ handleTerminal(JavaToken.THROWS, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ExceptionTypeList,
+ state.nonterminalEdges[ExceptionTypeList]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseNormalClassDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.CLASS ->
+ handleTerminal(JavaToken.CLASS, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, TypeParameters, state.nonterminalEdges[TypeParameters]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, Superinterfaces,
+ state.nonterminalEdges[Superinterfaces]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!,
+ curSppfNode)
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Superclass, state.nonterminalEdges[Superclass]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, Superinterfaces,
+ state.nonterminalEdges[Superinterfaces]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!,
+ curSppfNode)
+ }
+ 4 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Superinterfaces,
+ state.nonterminalEdges[Superinterfaces]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!,
+ curSppfNode)
+ }
+ 5 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassBody, state.nonterminalEdges[ClassBody]!!,
+ curSppfNode)
+ }
+ 6 ->
+ {
+ }
+ }
+ }
+
+ private fun parseEnumDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.ENUM ->
+ handleTerminal(JavaToken.ENUM, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassModifier, state.nonterminalEdges[ClassModifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Identifier, state.nonterminalEdges[Identifier]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, Superinterfaces,
+ state.nonterminalEdges[Superinterfaces]!!, curSppfNode)
+ }
+ 3 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, EnumBody, state.nonterminalEdges[EnumBody]!!, curSppfNode)
+ }
+ 4 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassModifier(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STRICTFP ->
+ handleTerminal(JavaToken.STRICTFP, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.PRIVATE ->
+ handleTerminal(JavaToken.PRIVATE, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.ABSTRACT ->
+ handleTerminal(JavaToken.ABSTRACT, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.FINAL ->
+ handleTerminal(JavaToken.FINAL, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.STATIC ->
+ handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.PUBLIC ->
+ handleTerminal(JavaToken.PUBLIC, state, inputEdge, descriptor, curSppfNode)
+ JavaToken.PROTECTED ->
+ handleTerminal(JavaToken.PROTECTED, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Annotation, state.nonterminalEdges[Annotation]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeParameters(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.LT ->
+ handleTerminal(JavaToken.LT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeParameterList,
+ state.nonterminalEdges[TypeParameterList]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.GT ->
+ handleTerminal(JavaToken.GT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseSuperclass(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.EXTENDS ->
+ handleTerminal(JavaToken.EXTENDS, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassType, state.nonterminalEdges[ClassType]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseSuperinterfaces(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.IMPLEMENTS ->
+ handleTerminal(JavaToken.IMPLEMENTS, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, InterfaceTypeList,
+ state.nonterminalEdges[InterfaceTypeList]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassBody(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.CURLYLEFT ->
+ handleTerminal(JavaToken.CURLYLEFT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.CURLYRIGHT ->
+ handleTerminal(JavaToken.CURLYRIGHT, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassBodyDeclaration,
+ state.nonterminalEdges[ClassBodyDeclaration]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseTypeParameterList(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, TypeParameter, state.nonterminalEdges[TypeParameter]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.COMMA ->
+ handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ }
+ }
+
+ private fun parseInterfaceTypeList(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, InterfaceType, state.nonterminalEdges[InterfaceType]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.COMMA ->
+ handleTerminal(JavaToken.COMMA, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ }
+ }
+
+ private fun parseClassBodyDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, StaticInitializer,
+ state.nonterminalEdges[StaticInitializer]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ConstructorDeclaration,
+ state.nonterminalEdges[ConstructorDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, InstanceInitializer,
+ state.nonterminalEdges[InstanceInitializer]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ClassMemberDeclaration,
+ state.nonterminalEdges[ClassMemberDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseClassMemberDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ClassDeclaration,
+ state.nonterminalEdges[ClassDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, MethodDeclaration,
+ state.nonterminalEdges[MethodDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, InterfaceDeclaration,
+ state.nonterminalEdges[InterfaceDeclaration]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, FieldDeclaration,
+ state.nonterminalEdges[FieldDeclaration]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseInstanceInitializer(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ }
+ }
+ }
+
+ private fun parseStaticInitializer(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.STATIC ->
+ handleTerminal(JavaToken.STATIC, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, Block, state.nonterminalEdges[Block]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseConstructorDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ConstructorDeclarator,
+ state.nonterminalEdges[ConstructorDeclarator]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, ConstructorModifier,
+ state.nonterminalEdges[ConstructorModifier]!!, curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ConstructorBody,
+ state.nonterminalEdges[ConstructorBody]!!, curSppfNode)
+ handleNonterminalEdge(descriptor, Throws, state.nonterminalEdges[Throws]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, ConstructorBody,
+ state.nonterminalEdges[ConstructorBody]!!, curSppfNode)
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseFieldDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ val pos = descriptor.inputPosition
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, UnannType, state.nonterminalEdges[UnannType]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, FieldModifier, state.nonterminalEdges[FieldModifier]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, VariableDeclaratorList,
+ state.nonterminalEdges[VariableDeclaratorList]!!, curSppfNode)
+ }
+ 2 ->
+ {
+ // handle terminal edges
+ for (inputEdge in ctx.input.getEdges(pos)) {
+ when(inputEdge.label.terminal) {
+ JavaToken.SEMICOLON ->
+ handleTerminal(JavaToken.SEMICOLON, state, inputEdge, descriptor, curSppfNode)
+ else -> {}
+ }
+ }
+ }
+ 3 ->
+ {
+ }
+ }
+ }
+
+ private fun parseMethodDeclaration(descriptor: Descriptor,
+ curSppfNode: SppfNode?) {
+ val state = descriptor.rsmState
+ when(state.numId) {
+ 0 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, MethodModifier, state.nonterminalEdges[MethodModifier]!!,
+ curSppfNode)
+ handleNonterminalEdge(descriptor, MethodHeader, state.nonterminalEdges[MethodHeader]!!,
+ curSppfNode)
+ }
+ 1 ->
+ {
+ // handle nonterminal edges
+ handleNonterminalEdge(descriptor, MethodBody, state.nonterminalEdges[MethodBody]!!,
+ curSppfNode)
+ }
+ 2 ->
+ {
+ }
+ }
+ }
+
+ private fun parseFieldModifier(descriptor: Descriptor