// Generated from C:/Users/ruben/IdeaProjects/JavaCompilerCore/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 by ANTLR 4.13.1
import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link Java17Parser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface Java17ParserVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by the {@code srcfile}
	 * labeled alternative in {@link Java17Parser#sourceFile}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSrcfile(Java17Parser.SrcfileContext ctx);
	/**
	 * Visit a parse tree produced by the {@code moduledecl}
	 * labeled alternative in {@link Java17Parser#sourceFile}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitModuledecl(Java17Parser.ModuledeclContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#packageDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPackageDeclaration(Java17Parser.PackageDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#importDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitImportDeclaration(Java17Parser.ImportDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classorinterfacedecl}
	 * labeled alternative in {@link Java17Parser#classOrInterface}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassorinterfacedecl(Java17Parser.ClassorinterfacedeclContext ctx);
	/**
	 * Visit a parse tree produced by the {@code noclassorinterface}
	 * labeled alternative in {@link Java17Parser#classOrInterface}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNoclassorinterface(Java17Parser.NoclassorinterfaceContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#modifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitModifier(Java17Parser.ModifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classOrInterfaceModifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassOrInterfaceModifier(Java17Parser.ClassOrInterfaceModifierContext ctx);
	/**
	 * Visit a parse tree produced by the {@code finalvarmod}
	 * labeled alternative in {@link Java17Parser#variableModifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFinalvarmod(Java17Parser.FinalvarmodContext ctx);
	/**
	 * Visit a parse tree produced by the {@code annotationvarmod}
	 * labeled alternative in {@link Java17Parser#variableModifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationvarmod(Java17Parser.AnnotationvarmodContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassDeclaration(Java17Parser.ClassDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#genericDeclarationList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericDeclarationList(Java17Parser.GenericDeclarationListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#genericTypeVar}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericTypeVar(Java17Parser.GenericTypeVarContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeBound}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeBound(Java17Parser.TypeBoundContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#enumDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnumDeclaration(Java17Parser.EnumDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#enumConstants}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnumConstants(Java17Parser.EnumConstantsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#enumConstant}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnumConstant(Java17Parser.EnumConstantContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#enumBodyDeclarations}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnumBodyDeclarations(Java17Parser.EnumBodyDeclarationsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#interfaceDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceDeclaration(Java17Parser.InterfaceDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassBody(Java17Parser.ClassBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#interfaceBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceBody(Java17Parser.InterfaceBodyContext ctx);
	/**
	 * Visit a parse tree produced by the {@code emptyclassbody}
	 * labeled alternative in {@link Java17Parser#classBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEmptyclassbody(Java17Parser.EmptyclassbodyContext ctx);
	/**
	 * Visit a parse tree produced by the {@code classblock}
	 * labeled alternative in {@link Java17Parser#classBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassblock(Java17Parser.ClassblockContext ctx);
	/**
	 * Visit a parse tree produced by the {@code memberdecl}
	 * labeled alternative in {@link Java17Parser#classBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMemberdecl(Java17Parser.MemberdeclContext ctx);
	/**
	 * Visit a parse tree produced by the {@code memberclassorinterface}
	 * labeled alternative in {@link Java17Parser#memberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMemberclassorinterface(Java17Parser.MemberclassorinterfaceContext ctx);
	/**
	 * Visit a parse tree produced by the {@code memberfield}
	 * labeled alternative in {@link Java17Parser#memberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMemberfield(Java17Parser.MemberfieldContext ctx);
	/**
	 * Visit a parse tree produced by the {@code membermethod}
	 * labeled alternative in {@link Java17Parser#memberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMembermethod(Java17Parser.MembermethodContext ctx);
	/**
	 * Visit a parse tree produced by the {@code memberconstructor}
	 * labeled alternative in {@link Java17Parser#memberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMemberconstructor(Java17Parser.MemberconstructorContext ctx);
	/**
	 * Visit a parse tree produced by the {@code methoddecl}
	 * labeled alternative in {@link Java17Parser#method}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethoddecl(Java17Parser.MethoddeclContext ctx);
	/**
	 * Visit a parse tree produced by the {@code genericmethod}
	 * labeled alternative in {@link Java17Parser#method}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericmethod(Java17Parser.GenericmethodContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#methodDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodDeclaration(Java17Parser.MethodDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#methodHeader}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodHeader(Java17Parser.MethodHeaderContext ctx);
	/**
	 * Visit a parse tree produced by the {@code methodblock}
	 * labeled alternative in {@link Java17Parser#methodBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodblock(Java17Parser.MethodblockContext ctx);
	/**
	 * Visit a parse tree produced by the {@code emptymethod}
	 * labeled alternative in {@link Java17Parser#methodBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEmptymethod(Java17Parser.EmptymethodContext ctx);
	/**
	 * Visit a parse tree produced by the {@code refType2}
	 * labeled alternative in {@link Java17Parser#refType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRefType2(Java17Parser.RefType2Context ctx);
	/**
	 * Visit a parse tree produced by the {@code refvoid}
	 * labeled alternative in {@link Java17Parser#refType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRefvoid(Java17Parser.RefvoidContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#genericMethodDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericMethodDeclaration(Java17Parser.GenericMethodDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by the {@code genericconstructor}
	 * labeled alternative in {@link Java17Parser#constructor}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericconstructor(Java17Parser.GenericconstructorContext ctx);
	/**
	 * Visit a parse tree produced by the {@code constructordecl}
	 * labeled alternative in {@link Java17Parser#constructor}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstructordecl(Java17Parser.ConstructordeclContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#genericConstructorDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericConstructorDeclaration(Java17Parser.GenericConstructorDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#constructorDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstructorDeclaration(Java17Parser.ConstructorDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#fieldDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFieldDeclaration(Java17Parser.FieldDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by the {@code interfacemember}
	 * labeled alternative in {@link Java17Parser#interfaceBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfacemember(Java17Parser.InterfacememberContext ctx);
	/**
	 * Visit a parse tree produced by the {@code emptyinterface}
	 * labeled alternative in {@link Java17Parser#interfaceBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEmptyinterface(Java17Parser.EmptyinterfaceContext ctx);
	/**
	 * Visit a parse tree produced by the {@code interfaceconst}
	 * labeled alternative in {@link Java17Parser#interfaceMemberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceconst(Java17Parser.InterfaceconstContext ctx);
	/**
	 * Visit a parse tree produced by the {@code interfacemethod}
	 * labeled alternative in {@link Java17Parser#interfaceMemberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfacemethod(Java17Parser.InterfacemethodContext ctx);
	/**
	 * Visit a parse tree produced by the {@code genericinterfacemethod}
	 * labeled alternative in {@link Java17Parser#interfaceMemberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericinterfacemethod(Java17Parser.GenericinterfacemethodContext ctx);
	/**
	 * Visit a parse tree produced by the {@code subclassorinterface}
	 * labeled alternative in {@link Java17Parser#interfaceMemberDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSubclassorinterface(Java17Parser.SubclassorinterfaceContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#constDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstDeclaration(Java17Parser.ConstDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#constantDeclarator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConstantDeclarator(Java17Parser.ConstantDeclaratorContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#interfaceMethodDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceMethodDeclaration(Java17Parser.InterfaceMethodDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#interfaceMethodModifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceMethodModifier(Java17Parser.InterfaceMethodModifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#genericInterfaceMethodDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGenericInterfaceMethodDeclaration(Java17Parser.GenericInterfaceMethodDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#interfaceCommonBodyDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInterfaceCommonBodyDeclaration(Java17Parser.InterfaceCommonBodyDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#variableDeclarators}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVariableDeclarators(Java17Parser.VariableDeclaratorsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#variableDeclarator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVariableDeclarator(Java17Parser.VariableDeclaratorContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#variableDeclaratorId}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVariableDeclaratorId(Java17Parser.VariableDeclaratorIdContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#variableInitializer}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitVariableInitializer(Java17Parser.VariableInitializerContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#arrayInitializer}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayInitializer(Java17Parser.ArrayInitializerContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classOrInterfaceType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassOrInterfaceType(Java17Parser.ClassOrInterfaceTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeArgument}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeArgument(Java17Parser.TypeArgumentContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#wildcardType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWildcardType(Java17Parser.WildcardTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#extendsWildcardType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExtendsWildcardType(Java17Parser.ExtendsWildcardTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#superWildcardType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSuperWildcardType(Java17Parser.SuperWildcardTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#qualifiedNameList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitQualifiedNameList(Java17Parser.QualifiedNameListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#exceptionList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExceptionList(Java17Parser.ExceptionListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#formalParameters}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFormalParameters(Java17Parser.FormalParametersContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#receiverParameter}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReceiverParameter(Java17Parser.ReceiverParameterContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#formalParameterList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFormalParameterList(Java17Parser.FormalParameterListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#formalParameter}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFormalParameter(Java17Parser.FormalParameterContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lastFormalParameter}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLastFormalParameter(Java17Parser.LastFormalParameterContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lambdaLVTIList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaLVTIList(Java17Parser.LambdaLVTIListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lambdaLVTIParameter}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaLVTIParameter(Java17Parser.LambdaLVTIParameterContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#qualifiedName}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitQualifiedName(Java17Parser.QualifiedNameContext ctx);
	/**
	 * Visit a parse tree produced by the {@code intLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIntLiteral(Java17Parser.IntLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code fltLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFltLiteral(Java17Parser.FltLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code charLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCharLiteral(Java17Parser.CharLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code stringLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStringLiteral(Java17Parser.StringLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code boolLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBoolLiteral(Java17Parser.BoolLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code nullLiteral}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNullLiteral(Java17Parser.NullLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code textBlock}
	 * labeled alternative in {@link Java17Parser#literal}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTextBlock(Java17Parser.TextBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#integerLiteral}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIntegerLiteral(Java17Parser.IntegerLiteralContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#floatLiteral}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFloatLiteral(Java17Parser.FloatLiteralContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#altAnnotationQualifiedName}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAltAnnotationQualifiedName(Java17Parser.AltAnnotationQualifiedNameContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotation}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotation(Java17Parser.AnnotationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#elementValuePairs}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElementValuePairs(Java17Parser.ElementValuePairsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#elementValuePair}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElementValuePair(Java17Parser.ElementValuePairContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#elementValue}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElementValue(Java17Parser.ElementValueContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#elementValueArrayInitializer}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElementValueArrayInitializer(Java17Parser.ElementValueArrayInitializerContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationTypeDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationTypeDeclaration(Java17Parser.AnnotationTypeDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationTypeBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationTypeBody(Java17Parser.AnnotationTypeBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationTypeElementDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationTypeElementDeclaration(Java17Parser.AnnotationTypeElementDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationTypeElementRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationTypeElementRest(Java17Parser.AnnotationTypeElementRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationMethodOrConstantRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationMethodOrConstantRest(Java17Parser.AnnotationMethodOrConstantRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationMethodRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationMethodRest(Java17Parser.AnnotationMethodRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#annotationConstantRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAnnotationConstantRest(Java17Parser.AnnotationConstantRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#defaultValue}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDefaultValue(Java17Parser.DefaultValueContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#moduleDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitModuleDeclaration(Java17Parser.ModuleDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#moduleBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitModuleBody(Java17Parser.ModuleBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#moduleDirective}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitModuleDirective(Java17Parser.ModuleDirectiveContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#requiresModifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRequiresModifier(Java17Parser.RequiresModifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordDeclaration(Java17Parser.RecordDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordHeader}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordHeader(Java17Parser.RecordHeaderContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordComponentList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordComponentList(Java17Parser.RecordComponentListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordComponent}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordComponent(Java17Parser.RecordComponentContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordBody(Java17Parser.RecordBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#block}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlock(Java17Parser.BlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#blockStatement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlockStatement(Java17Parser.BlockStatementContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#localVariableDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLocalVariableDeclaration(Java17Parser.LocalVariableDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#identifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIdentifier(Java17Parser.IdentifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeIdentifier}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeIdentifier(Java17Parser.TypeIdentifierContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#localTypeDeclaration}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLocalTypeDeclaration(Java17Parser.LocalTypeDeclarationContext ctx);
	/**
	 * Visit a parse tree produced by the {@code blockstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBlockstmt(Java17Parser.BlockstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code assertstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssertstmt(Java17Parser.AssertstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code conditionalstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalstmt(Java17Parser.ConditionalstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code forloop}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForloop(Java17Parser.ForloopContext ctx);
	/**
	 * Visit a parse tree produced by the {@code whileloop}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileloop(Java17Parser.WhileloopContext ctx);
	/**
	 * Visit a parse tree produced by the {@code dowhileloop}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDowhileloop(Java17Parser.DowhileloopContext ctx);
	/**
	 * Visit a parse tree produced by the {@code trycatchblock}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTrycatchblock(Java17Parser.TrycatchblockContext ctx);
	/**
	 * Visit a parse tree produced by the {@code trycatchresource}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTrycatchresource(Java17Parser.TrycatchresourceContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchstmt(Java17Parser.SwitchstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code synchronizedstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSynchronizedstmt(Java17Parser.SynchronizedstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code returnstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitReturnstmt(Java17Parser.ReturnstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code throwstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitThrowstmt(Java17Parser.ThrowstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code breakstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBreakstmt(Java17Parser.BreakstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code continuestmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitContinuestmt(Java17Parser.ContinuestmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code yieldstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitYieldstmt(Java17Parser.YieldstmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code semistmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSemistmt(Java17Parser.SemistmtContext ctx);
	/**
	 * Visit a parse tree produced by the {@code stmtexpression}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitStmtexpression(Java17Parser.StmtexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code labeledstmt}
	 * labeled alternative in {@link Java17Parser#statement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabeledstmt(Java17Parser.LabeledstmtContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#catchClause}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCatchClause(Java17Parser.CatchClauseContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#catchType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCatchType(Java17Parser.CatchTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#finallyBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFinallyBlock(Java17Parser.FinallyBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#resourceSpecification}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitResourceSpecification(Java17Parser.ResourceSpecificationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#resources}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitResources(Java17Parser.ResourcesContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#resource}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitResource(Java17Parser.ResourceContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#switchBlockStatementGroup}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchBlockStatementGroup(Java17Parser.SwitchBlockStatementGroupContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchLabelConst}
	 * labeled alternative in {@link Java17Parser#switchLabel}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchLabelConst(Java17Parser.SwitchLabelConstContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchLabelEnum}
	 * labeled alternative in {@link Java17Parser#switchLabel}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchLabelEnum(Java17Parser.SwitchLabelEnumContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchLabelPattern}
	 * labeled alternative in {@link Java17Parser#switchLabel}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchLabelPattern(Java17Parser.SwitchLabelPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchLabelDefault}
	 * labeled alternative in {@link Java17Parser#switchLabel}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchLabelDefault(Java17Parser.SwitchLabelDefaultContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#forControl}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForControl(Java17Parser.ForControlContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#forInit}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForInit(Java17Parser.ForInitContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#enhancedForControl}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnhancedForControl(Java17Parser.EnhancedForControlContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#parExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitParExpression(Java17Parser.ParExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#expressionList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpressionList(Java17Parser.ExpressionListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#methodCall}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodCall(Java17Parser.MethodCallContext ctx);
	/**
	 * Visit a parse tree produced by the {@code castexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCastexpression(Java17Parser.CastexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code arrayaccessexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayaccessexpression(Java17Parser.ArrayaccessexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code newinstanceexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNewinstanceexpression(Java17Parser.NewinstanceexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code bitwiseandexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBitwiseandexpression(Java17Parser.BitwiseandexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryExpression2}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryExpression2(Java17Parser.PrimaryExpression2Context ctx);
	/**
	 * Visit a parse tree produced by the {@code methodcallexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodcallexpression(Java17Parser.MethodcallexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code conditionalassignexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionalassignexpression(Java17Parser.ConditionalassignexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code methodorcreatorreferenceexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodorcreatorreferenceexpression(Java17Parser.MethodorcreatorreferenceexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code shiftexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitShiftexpression(Java17Parser.ShiftexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code switchExpression2}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchExpression2(Java17Parser.SwitchExpression2Context ctx);
	/**
	 * Visit a parse tree produced by the {@code mathaddsubexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMathaddsubexpression(Java17Parser.MathaddsubexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code dottedexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDottedexpression(Java17Parser.DottedexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code orexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitOrexpression(Java17Parser.OrexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code andexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAndexpression(Java17Parser.AndexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code assignexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignexpression(Java17Parser.AssignexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code mathmuldivmodexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMathmuldivmodexpression(Java17Parser.MathmuldivmodexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code equalityexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEqualityexpression(Java17Parser.EqualityexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code postfixexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPostfixexpression(Java17Parser.PostfixexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code prefixexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrefixexpression(Java17Parser.PrefixexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code bitwiseorexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBitwiseorexpression(Java17Parser.BitwiseorexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code creatorreferenceexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCreatorreferenceexpression(Java17Parser.CreatorreferenceexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code lambdaExpression2}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaExpression2(Java17Parser.LambdaExpression2Context ctx);
	/**
	 * Visit a parse tree produced by the {@code bitwisexorexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBitwisexorexpression(Java17Parser.BitwisexorexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code relationalexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRelationalexpression(Java17Parser.RelationalexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code instanceofexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInstanceofexpression(Java17Parser.InstanceofexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code methodreferenceexpression}
	 * labeled alternative in {@link Java17Parser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitMethodreferenceexpression(Java17Parser.MethodreferenceexpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code pPattern}
	 * labeled alternative in {@link Java17Parser#pattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPPattern(Java17Parser.PPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code gPattern}
	 * labeled alternative in {@link Java17Parser#pattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGPattern(Java17Parser.GPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code tPattern}
	 * labeled alternative in {@link Java17Parser#primaryPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTPattern(Java17Parser.TPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code rPattern}
	 * labeled alternative in {@link Java17Parser#primaryPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRPattern(Java17Parser.RPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code enclosedPattern}
	 * labeled alternative in {@link Java17Parser#primaryPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitEnclosedPattern(Java17Parser.EnclosedPatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code lPattern}
	 * labeled alternative in {@link Java17Parser#primaryPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLPattern(Java17Parser.LPatternContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordPattern(Java17Parser.RecordPatternContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typePattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypePattern(Java17Parser.TypePatternContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordStructurePattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordStructurePattern(Java17Parser.RecordStructurePatternContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordComponentPatternElement}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordComponentPatternElement(Java17Parser.RecordComponentPatternElementContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#recordComponentPatternList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitRecordComponentPatternList(Java17Parser.RecordComponentPatternListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lambdaExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaExpression(Java17Parser.LambdaExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lambdaParameters}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaParameters(Java17Parser.LambdaParametersContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#lambdaBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLambdaBody(Java17Parser.LambdaBodyContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryExpression}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryExpression(Java17Parser.PrimaryExpressionContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryThis}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryThis(Java17Parser.PrimaryThisContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primarySuper}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimarySuper(Java17Parser.PrimarySuperContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryLiteral}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryLiteral(Java17Parser.PrimaryLiteralContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryIdentifier}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryIdentifier(Java17Parser.PrimaryIdentifierContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryClassref}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryClassref(Java17Parser.PrimaryClassrefContext ctx);
	/**
	 * Visit a parse tree produced by the {@code primaryInvocation}
	 * labeled alternative in {@link Java17Parser#primary}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimaryInvocation(Java17Parser.PrimaryInvocationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#switchExpression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchExpression(Java17Parser.SwitchExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#switchLabeledRule}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchLabeledRule(Java17Parser.SwitchLabeledRuleContext ctx);
	/**
	 * Visit a parse tree produced by the {@code labeledRuleNull}
	 * labeled alternative in {@link Java17Parser#switchLabelCase}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabeledRuleNull(Java17Parser.LabeledRuleNullContext ctx);
	/**
	 * Visit a parse tree produced by the {@code labeledRulePattern}
	 * labeled alternative in {@link Java17Parser#switchLabelCase}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabeledRulePattern(Java17Parser.LabeledRulePatternContext ctx);
	/**
	 * Visit a parse tree produced by the {@code labeledRuleDefault}
	 * labeled alternative in {@link Java17Parser#switchLabelCase}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabeledRuleDefault(Java17Parser.LabeledRuleDefaultContext ctx);
	/**
	 * Visit a parse tree produced by the {@code labeledRuleExprList}
	 * labeled alternative in {@link Java17Parser#switchLabelCase}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitLabeledRuleExprList(Java17Parser.LabeledRuleExprListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#guardedPattern}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitGuardedPattern(Java17Parser.GuardedPatternContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#switchRuleOutcome}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSwitchRuleOutcome(Java17Parser.SwitchRuleOutcomeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassType(Java17Parser.ClassTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#creator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCreator(Java17Parser.CreatorContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#createdName}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCreatedName(Java17Parser.CreatedNameContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#innerCreator}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitInnerCreator(Java17Parser.InnerCreatorContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#arrayCreatorRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArrayCreatorRest(Java17Parser.ArrayCreatorRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#classCreatorRest}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitClassCreatorRest(Java17Parser.ClassCreatorRestContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#explicitGenericInvocation}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExplicitGenericInvocation(Java17Parser.ExplicitGenericInvocationContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeArgumentsOrDiamond}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeArgumentsOrDiamond(Java17Parser.TypeArgumentsOrDiamondContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#nonWildcardTypeArgumentsOrDiamond}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNonWildcardTypeArgumentsOrDiamond(Java17Parser.NonWildcardTypeArgumentsOrDiamondContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#nonWildcardTypeArguments}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitNonWildcardTypeArguments(Java17Parser.NonWildcardTypeArgumentsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeList}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeList(Java17Parser.TypeListContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeType(Java17Parser.TypeTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#primitiveType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitPrimitiveType(Java17Parser.PrimitiveTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#typeArguments}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitTypeArguments(Java17Parser.TypeArgumentsContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#superSuffix}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitSuperSuffix(Java17Parser.SuperSuffixContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#explicitGenericInvocationSuffix}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExplicitGenericInvocationSuffix(Java17Parser.ExplicitGenericInvocationSuffixContext ctx);
	/**
	 * Visit a parse tree produced by {@link Java17Parser#arguments}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitArguments(Java17Parser.ArgumentsContext ctx);
}