// Generated from src/antlr-grammar/CypherCmdParser.g4 by ANTLR 4.13.0
// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols

import {
	ATN,
	ATNDeserializer, DecisionState, DFA, FailedPredicateException,
	RecognitionException, NoViableAltException, BailErrorStrategy,
	Parser, ParserATNSimulator,
	RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache,
	TerminalNode, RuleNode,
	Token, TokenStream,
	Interval, IntervalSet
} from 'antlr4';
import CypherCmdParserListener from "./CypherCmdParserListener.js";
import CypherCmdParserVisitor from "./CypherCmdParserVisitor.js";

// for running tests with parameters, TODO: discuss strategy for typed parameters in CI
// eslint-disable-next-line no-unused-vars
type int = number;

export default class CypherCmdParser extends Parser {
	public static readonly PARAM = 1;
	public static readonly CLEAR = 2;
	public static readonly HISTORY = 3;
	public static readonly EXPLAIN = 4;
	public static readonly PROFILE = 5;
	public static readonly SPACE = 6;
	public static readonly SINGLE_LINE_COMMENT = 7;
	public static readonly MULTI_LINE_COMMENT = 8;
	public static readonly DECIMAL_DOUBLE = 9;
	public static readonly UNSIGNED_DECIMAL_INTEGER = 10;
	public static readonly UNSIGNED_HEX_INTEGER = 11;
	public static readonly UNSIGNED_OCTAL_INTEGER = 12;
	public static readonly STRING_LITERAL1 = 13;
	public static readonly STRING_LITERAL2 = 14;
	public static readonly ESCAPED_SYMBOLIC_NAME = 15;
	public static readonly ACCESS = 16;
	public static readonly ACTIVE = 17;
	public static readonly ADMIN = 18;
	public static readonly ADMINISTRATOR = 19;
	public static readonly ALIAS = 20;
	public static readonly ALIASES = 21;
	public static readonly ALL_SHORTEST_PATHS = 22;
	public static readonly ALL = 23;
	public static readonly ALTER = 24;
	public static readonly AND = 25;
	public static readonly ANY = 26;
	public static readonly ARRAY = 27;
	public static readonly AS = 28;
	public static readonly ASC = 29;
	public static readonly ASCENDING = 30;
	public static readonly ASSERT = 31;
	public static readonly ASSIGN = 32;
	public static readonly AT = 33;
	public static readonly BAR = 34;
	public static readonly BINDINGS = 35;
	public static readonly BOOL = 36;
	public static readonly BOOLEAN = 37;
	public static readonly BOOSTED = 38;
	public static readonly BOTH = 39;
	public static readonly BREAK = 40;
	public static readonly BRIEF = 41;
	public static readonly BTREE = 42;
	public static readonly BUILT = 43;
	public static readonly BY = 44;
	public static readonly CALL = 45;
	public static readonly CASE = 46;
	public static readonly CHANGE = 47;
	public static readonly CIDR = 48;
	public static readonly COLLECT = 49;
	public static readonly COLON = 50;
	public static readonly COLONCOLON = 51;
	public static readonly COMMA = 52;
	public static readonly COMMAND = 53;
	public static readonly COMMANDS = 54;
	public static readonly COMMIT = 55;
	public static readonly COMPOSITE = 56;
	public static readonly CONCURRENT = 57;
	public static readonly CONSTRAINT = 58;
	public static readonly CONSTRAINTS = 59;
	public static readonly CONTAINS = 60;
	public static readonly COPY = 61;
	public static readonly CONTINUE = 62;
	public static readonly COUNT = 63;
	public static readonly CREATE = 64;
	public static readonly CSV = 65;
	public static readonly CURRENT = 66;
	public static readonly DATA = 67;
	public static readonly DATABASE = 68;
	public static readonly DATABASES = 69;
	public static readonly DATE = 70;
	public static readonly DATETIME = 71;
	public static readonly DBMS = 72;
	public static readonly DEALLOCATE = 73;
	public static readonly DEFAULT = 74;
	public static readonly DEFINED = 75;
	public static readonly DELETE = 76;
	public static readonly DENY = 77;
	public static readonly DESC = 78;
	public static readonly DESCENDING = 79;
	public static readonly DESTROY = 80;
	public static readonly DETACH = 81;
	public static readonly DIFFERENT = 82;
	public static readonly DOLLAR = 83;
	public static readonly DISTINCT = 84;
	public static readonly DIVIDE = 85;
	public static readonly DOT = 86;
	public static readonly DOTDOT = 87;
	public static readonly DOUBLEBAR = 88;
	public static readonly DRIVER = 89;
	public static readonly DROP = 90;
	public static readonly DRYRUN = 91;
	public static readonly DUMP = 92;
	public static readonly DURATION = 93;
	public static readonly EACH = 94;
	public static readonly EDGE = 95;
	public static readonly ENABLE = 96;
	public static readonly ELEMENT = 97;
	public static readonly ELEMENTS = 98;
	public static readonly ELSE = 99;
	public static readonly ENCRYPTED = 100;
	public static readonly END = 101;
	public static readonly ENDS = 102;
	public static readonly EQ = 103;
	public static readonly EXECUTABLE = 104;
	public static readonly EXECUTE = 105;
	public static readonly EXIST = 106;
	public static readonly EXISTENCE = 107;
	public static readonly EXISTS = 108;
	public static readonly ERROR = 109;
	public static readonly FAIL = 110;
	public static readonly FALSE = 111;
	public static readonly FIELDTERMINATOR = 112;
	public static readonly FINISH = 113;
	public static readonly FLOAT = 114;
	public static readonly FOR = 115;
	public static readonly FOREACH = 116;
	public static readonly FROM = 117;
	public static readonly FULLTEXT = 118;
	public static readonly FUNCTION = 119;
	public static readonly FUNCTIONS = 120;
	public static readonly GE = 121;
	public static readonly GRANT = 122;
	public static readonly GRAPH = 123;
	public static readonly GRAPHS = 124;
	public static readonly GROUP = 125;
	public static readonly GROUPS = 126;
	public static readonly GT = 127;
	public static readonly HEADERS = 128;
	public static readonly HOME = 129;
	public static readonly IF = 130;
	public static readonly IMPERSONATE = 131;
	public static readonly IMMUTABLE = 132;
	public static readonly IN = 133;
	public static readonly INDEX = 134;
	public static readonly INDEXES = 135;
	public static readonly INF = 136;
	public static readonly INFINITY = 137;
	public static readonly INSERT = 138;
	public static readonly INT = 139;
	public static readonly INTEGER = 140;
	public static readonly IS = 141;
	public static readonly JOIN = 142;
	public static readonly KEY = 143;
	public static readonly LABEL = 144;
	public static readonly LABELS = 145;
	public static readonly AMPERSAND = 146;
	public static readonly EXCLAMATION_MARK = 147;
	public static readonly LBRACKET = 148;
	public static readonly LCURLY = 149;
	public static readonly LE = 150;
	public static readonly LEADING = 151;
	public static readonly LIMITROWS = 152;
	public static readonly LIST = 153;
	public static readonly LOAD = 154;
	public static readonly LOCAL = 155;
	public static readonly LOOKUP = 156;
	public static readonly LPAREN = 157;
	public static readonly LT = 158;
	public static readonly MANAGEMENT = 159;
	public static readonly MAP = 160;
	public static readonly MATCH = 161;
	public static readonly MERGE = 162;
	public static readonly MINUS = 163;
	public static readonly PERCENT = 164;
	public static readonly INVALID_NEQ = 165;
	public static readonly NEQ = 166;
	public static readonly NAME = 167;
	public static readonly NAMES = 168;
	public static readonly NAN = 169;
	public static readonly NFC = 170;
	public static readonly NFD = 171;
	public static readonly NFKC = 172;
	public static readonly NFKD = 173;
	public static readonly NEW = 174;
	public static readonly NODE = 175;
	public static readonly NODETACH = 176;
	public static readonly NODES = 177;
	public static readonly NONE = 178;
	public static readonly NORMALIZE = 179;
	public static readonly NORMALIZED = 180;
	public static readonly NOT = 181;
	public static readonly NOTHING = 182;
	public static readonly NOWAIT = 183;
	public static readonly NULL = 184;
	public static readonly OF = 185;
	public static readonly ON = 186;
	public static readonly ONLY = 187;
	public static readonly OPTIONAL = 188;
	public static readonly OPTIONS = 189;
	public static readonly OPTION = 190;
	public static readonly OR = 191;
	public static readonly ORDER = 192;
	public static readonly OUTPUT = 193;
	public static readonly PASSWORD = 194;
	public static readonly PASSWORDS = 195;
	public static readonly PATH = 196;
	public static readonly PATHS = 197;
	public static readonly PERIODIC = 198;
	public static readonly PLAINTEXT = 199;
	public static readonly PLUS = 200;
	public static readonly PLUSEQUAL = 201;
	public static readonly POINT = 202;
	public static readonly POPULATED = 203;
	public static readonly POW = 204;
	public static readonly PRIMARY = 205;
	public static readonly PRIMARIES = 206;
	public static readonly PRIVILEGE = 207;
	public static readonly PRIVILEGES = 208;
	public static readonly PROCEDURE = 209;
	public static readonly PROCEDURES = 210;
	public static readonly PROPERTIES = 211;
	public static readonly PROPERTY = 212;
	public static readonly QUESTION = 213;
	public static readonly RANGE = 214;
	public static readonly RBRACKET = 215;
	public static readonly RCURLY = 216;
	public static readonly READ = 217;
	public static readonly REALLOCATE = 218;
	public static readonly REDUCE = 219;
	public static readonly RENAME = 220;
	public static readonly REGEQ = 221;
	public static readonly REL = 222;
	public static readonly RELATIONSHIP = 223;
	public static readonly RELATIONSHIPS = 224;
	public static readonly REMOVE = 225;
	public static readonly REPEATABLE = 226;
	public static readonly REPLACE = 227;
	public static readonly REPORT = 228;
	public static readonly REQUIRE = 229;
	public static readonly REQUIRED = 230;
	public static readonly RETURN = 231;
	public static readonly REVOKE = 232;
	public static readonly ROLE = 233;
	public static readonly ROLES = 234;
	public static readonly ROW = 235;
	public static readonly ROWS = 236;
	public static readonly RPAREN = 237;
	public static readonly SCAN = 238;
	public static readonly SEC = 239;
	public static readonly SECOND = 240;
	public static readonly SECONDARY = 241;
	public static readonly SECONDARIES = 242;
	public static readonly SECONDS = 243;
	public static readonly SEEK = 244;
	public static readonly SEMICOLON = 245;
	public static readonly SERVER = 246;
	public static readonly SERVERS = 247;
	public static readonly SET = 248;
	public static readonly SETTING = 249;
	public static readonly SETTINGS = 250;
	public static readonly SHORTEST_PATH = 251;
	public static readonly SHORTEST = 252;
	public static readonly SHOW = 253;
	public static readonly SIGNED = 254;
	public static readonly SINGLE = 255;
	public static readonly SKIPROWS = 256;
	public static readonly START = 257;
	public static readonly STARTS = 258;
	public static readonly STATUS = 259;
	public static readonly STOP = 260;
	public static readonly STRING = 261;
	public static readonly SUPPORTED = 262;
	public static readonly SUSPENDED = 263;
	public static readonly TARGET = 264;
	public static readonly TERMINATE = 265;
	public static readonly TEXT = 266;
	public static readonly THEN = 267;
	public static readonly TIME = 268;
	public static readonly TIMES = 269;
	public static readonly TIMESTAMP = 270;
	public static readonly TIMEZONE = 271;
	public static readonly TO = 272;
	public static readonly TOPOLOGY = 273;
	public static readonly TRAILING = 274;
	public static readonly TRANSACTION = 275;
	public static readonly TRANSACTIONS = 276;
	public static readonly TRAVERSE = 277;
	public static readonly TRIM = 278;
	public static readonly TRUE = 279;
	public static readonly TYPE = 280;
	public static readonly TYPED = 281;
	public static readonly TYPES = 282;
	public static readonly UNION = 283;
	public static readonly UNIQUE = 284;
	public static readonly UNIQUENESS = 285;
	public static readonly UNWIND = 286;
	public static readonly URL = 287;
	public static readonly USE = 288;
	public static readonly USER = 289;
	public static readonly USERS = 290;
	public static readonly USING = 291;
	public static readonly VALUE = 292;
	public static readonly VARCHAR = 293;
	public static readonly VECTOR = 294;
	public static readonly VERBOSE = 295;
	public static readonly VERTEX = 296;
	public static readonly WAIT = 297;
	public static readonly WHEN = 298;
	public static readonly WHERE = 299;
	public static readonly WITH = 300;
	public static readonly WITHOUT = 301;
	public static readonly WRITE = 302;
	public static readonly XOR = 303;
	public static readonly YIELD = 304;
	public static readonly ZONED = 305;
	public static readonly IDENTIFIER = 306;
	public static readonly ARROW_LINE = 307;
	public static readonly ARROW_LEFT_HEAD = 308;
	public static readonly ARROW_RIGHT_HEAD = 309;
	public static readonly ErrorChar = 310;
	public static readonly EOF = Token.EOF;
	public static readonly RULE_statementsOrCommands = 0;
	public static readonly RULE_statementOrCommand = 1;
	public static readonly RULE_consoleCommand = 2;
	public static readonly RULE_paramsCmd = 3;
	public static readonly RULE_paramsArgs = 4;
	public static readonly RULE_lambda = 5;
	public static readonly RULE_clearCmd = 6;
	public static readonly RULE_historyCmd = 7;
	public static readonly RULE_useCmd = 8;
	public static readonly RULE_listCompletionRule = 9;
	public static readonly RULE_useCompletionRule = 10;
	public static readonly RULE_preparsedStatement = 11;
	public static readonly RULE_preparserOption = 12;
	public static readonly RULE_statements = 13;
	public static readonly RULE_statement = 14;
	public static readonly RULE_periodicCommitQueryHintFailure = 15;
	public static readonly RULE_regularQuery = 16;
	public static readonly RULE_singleQuery = 17;
	public static readonly RULE_clause = 18;
	public static readonly RULE_useClause = 19;
	public static readonly RULE_graphReference = 20;
	public static readonly RULE_finishClause = 21;
	public static readonly RULE_returnClause = 22;
	public static readonly RULE_returnBody = 23;
	public static readonly RULE_returnItem = 24;
	public static readonly RULE_returnItems = 25;
	public static readonly RULE_orderItem = 26;
	public static readonly RULE_ascToken = 27;
	public static readonly RULE_descToken = 28;
	public static readonly RULE_orderBy = 29;
	public static readonly RULE_skip = 30;
	public static readonly RULE_limit = 31;
	public static readonly RULE_whereClause = 32;
	public static readonly RULE_withClause = 33;
	public static readonly RULE_createClause = 34;
	public static readonly RULE_insertClause = 35;
	public static readonly RULE_setClause = 36;
	public static readonly RULE_setItem = 37;
	public static readonly RULE_removeClause = 38;
	public static readonly RULE_removeItem = 39;
	public static readonly RULE_deleteClause = 40;
	public static readonly RULE_matchClause = 41;
	public static readonly RULE_matchMode = 42;
	public static readonly RULE_hint = 43;
	public static readonly RULE_mergeClause = 44;
	public static readonly RULE_mergeAction = 45;
	public static readonly RULE_unwindClause = 46;
	public static readonly RULE_callClause = 47;
	public static readonly RULE_procedureName = 48;
	public static readonly RULE_procedureArgument = 49;
	public static readonly RULE_procedureResultItem = 50;
	public static readonly RULE_loadCSVClause = 51;
	public static readonly RULE_foreachClause = 52;
	public static readonly RULE_subqueryClause = 53;
	public static readonly RULE_subqueryInTransactionsParameters = 54;
	public static readonly RULE_subqueryInTransactionsBatchParameters = 55;
	public static readonly RULE_subqueryInTransactionsErrorParameters = 56;
	public static readonly RULE_subqueryInTransactionsReportParameters = 57;
	public static readonly RULE_patternList = 58;
	public static readonly RULE_insertPatternList = 59;
	public static readonly RULE_pattern = 60;
	public static readonly RULE_insertPattern = 61;
	public static readonly RULE_quantifier = 62;
	public static readonly RULE_anonymousPattern = 63;
	public static readonly RULE_shortestPathPattern = 64;
	public static readonly RULE_patternElement = 65;
	public static readonly RULE_selector = 66;
	public static readonly RULE_groupToken = 67;
	public static readonly RULE_pathToken = 68;
	public static readonly RULE_pathPatternNonEmpty = 69;
	public static readonly RULE_nodePattern = 70;
	public static readonly RULE_insertNodePattern = 71;
	public static readonly RULE_parenthesizedPath = 72;
	public static readonly RULE_nodeLabels = 73;
	public static readonly RULE_nodeLabelsIs = 74;
	public static readonly RULE_labelType = 75;
	public static readonly RULE_relType = 76;
	public static readonly RULE_labelOrRelType = 77;
	public static readonly RULE_properties = 78;
	public static readonly RULE_relationshipPattern = 79;
	public static readonly RULE_insertRelationshipPattern = 80;
	public static readonly RULE_leftArrow = 81;
	public static readonly RULE_arrowLine = 82;
	public static readonly RULE_rightArrow = 83;
	public static readonly RULE_pathLength = 84;
	public static readonly RULE_labelExpression = 85;
	public static readonly RULE_labelExpression4 = 86;
	public static readonly RULE_labelExpression4Is = 87;
	public static readonly RULE_labelExpression3 = 88;
	public static readonly RULE_labelExpression3Is = 89;
	public static readonly RULE_labelExpression2 = 90;
	public static readonly RULE_labelExpression2Is = 91;
	public static readonly RULE_labelExpression1 = 92;
	public static readonly RULE_labelExpression1Is = 93;
	public static readonly RULE_insertNodeLabelExpression = 94;
	public static readonly RULE_insertRelationshipLabelExpression = 95;
	public static readonly RULE_expression = 96;
	public static readonly RULE_expression11 = 97;
	public static readonly RULE_expression10 = 98;
	public static readonly RULE_expression9 = 99;
	public static readonly RULE_expression8 = 100;
	public static readonly RULE_expression7 = 101;
	public static readonly RULE_comparisonExpression6 = 102;
	public static readonly RULE_normalForm = 103;
	public static readonly RULE_expression6 = 104;
	public static readonly RULE_expression5 = 105;
	public static readonly RULE_expression4 = 106;
	public static readonly RULE_expression3 = 107;
	public static readonly RULE_expression2 = 108;
	public static readonly RULE_postFix = 109;
	public static readonly RULE_property = 110;
	public static readonly RULE_propertyExpression = 111;
	public static readonly RULE_expression1 = 112;
	public static readonly RULE_literal = 113;
	public static readonly RULE_caseExpression = 114;
	public static readonly RULE_caseAlternative = 115;
	public static readonly RULE_extendedCaseExpression = 116;
	public static readonly RULE_extendedCaseAlternative = 117;
	public static readonly RULE_extendedWhen = 118;
	public static readonly RULE_listComprehension = 119;
	public static readonly RULE_patternComprehension = 120;
	public static readonly RULE_reduceExpression = 121;
	public static readonly RULE_listItemsPredicate = 122;
	public static readonly RULE_normalizeFunction = 123;
	public static readonly RULE_trimFunction = 124;
	public static readonly RULE_patternExpression = 125;
	public static readonly RULE_shortestPathExpression = 126;
	public static readonly RULE_parenthesizedExpression = 127;
	public static readonly RULE_mapProjection = 128;
	public static readonly RULE_mapProjectionElement = 129;
	public static readonly RULE_countStar = 130;
	public static readonly RULE_existsExpression = 131;
	public static readonly RULE_countExpression = 132;
	public static readonly RULE_collectExpression = 133;
	public static readonly RULE_numberLiteral = 134;
	public static readonly RULE_signedIntegerLiteral = 135;
	public static readonly RULE_listLiteral = 136;
	public static readonly RULE_propertyKeyName = 137;
	public static readonly RULE_parameter = 138;
	public static readonly RULE_parameterName = 139;
	public static readonly RULE_functionInvocation = 140;
	public static readonly RULE_functionArgument = 141;
	public static readonly RULE_functionName = 142;
	public static readonly RULE_namespace = 143;
	public static readonly RULE_variable = 144;
	public static readonly RULE_nonEmptyNameList = 145;
	public static readonly RULE_command = 146;
	public static readonly RULE_createCommand = 147;
	public static readonly RULE_dropCommand = 148;
	public static readonly RULE_alterCommand = 149;
	public static readonly RULE_renameCommand = 150;
	public static readonly RULE_showCommand = 151;
	public static readonly RULE_showCommandYield = 152;
	public static readonly RULE_yieldItem = 153;
	public static readonly RULE_yieldSkip = 154;
	public static readonly RULE_yieldLimit = 155;
	public static readonly RULE_yieldClause = 156;
	public static readonly RULE_showBriefAndYield = 157;
	public static readonly RULE_showIndexCommand = 158;
	public static readonly RULE_showIndexesAllowBrief = 159;
	public static readonly RULE_showIndexesNoBrief = 160;
	public static readonly RULE_showConstraintCommand = 161;
	public static readonly RULE_constraintAllowYieldType = 162;
	public static readonly RULE_constraintExistType = 163;
	public static readonly RULE_constraintBriefAndYieldType = 164;
	public static readonly RULE_showConstraintsAllowBriefAndYield = 165;
	public static readonly RULE_showConstraintsAllowBrief = 166;
	public static readonly RULE_showConstraintsAllowYield = 167;
	public static readonly RULE_showProcedures = 168;
	public static readonly RULE_showFunctions = 169;
	public static readonly RULE_functionToken = 170;
	public static readonly RULE_executableBy = 171;
	public static readonly RULE_showFunctionsType = 172;
	public static readonly RULE_showTransactions = 173;
	public static readonly RULE_terminateCommand = 174;
	public static readonly RULE_terminateTransactions = 175;
	public static readonly RULE_showSettings = 176;
	public static readonly RULE_settingToken = 177;
	public static readonly RULE_namesAndClauses = 178;
	public static readonly RULE_composableCommandClauses = 179;
	public static readonly RULE_composableShowCommandClauses = 180;
	public static readonly RULE_stringsOrExpression = 181;
	public static readonly RULE_type = 182;
	public static readonly RULE_typePart = 183;
	public static readonly RULE_typeName = 184;
	public static readonly RULE_typeNullability = 185;
	public static readonly RULE_typeListSuffix = 186;
	public static readonly RULE_commandNodePattern = 187;
	public static readonly RULE_commandRelPattern = 188;
	public static readonly RULE_createConstraint = 189;
	public static readonly RULE_constraintType = 190;
	public static readonly RULE_dropConstraint = 191;
	public static readonly RULE_createIndex = 192;
	public static readonly RULE_oldCreateIndex = 193;
	public static readonly RULE_createIndex_ = 194;
	public static readonly RULE_createFulltextIndex = 195;
	public static readonly RULE_fulltextNodePattern = 196;
	public static readonly RULE_fulltextRelPattern = 197;
	public static readonly RULE_createLookupIndex = 198;
	public static readonly RULE_lookupIndexNodePattern = 199;
	public static readonly RULE_lookupIndexRelPattern = 200;
	public static readonly RULE_dropIndex = 201;
	public static readonly RULE_propertyList = 202;
	public static readonly RULE_enableServerCommand = 203;
	public static readonly RULE_alterServer = 204;
	public static readonly RULE_renameServer = 205;
	public static readonly RULE_dropServer = 206;
	public static readonly RULE_showServers = 207;
	public static readonly RULE_allocationCommand = 208;
	public static readonly RULE_deallocateDatabaseFromServers = 209;
	public static readonly RULE_reallocateDatabases = 210;
	public static readonly RULE_createRole = 211;
	public static readonly RULE_dropRole = 212;
	public static readonly RULE_renameRole = 213;
	public static readonly RULE_showRoles = 214;
	public static readonly RULE_roleToken = 215;
	public static readonly RULE_createUser = 216;
	public static readonly RULE_dropUser = 217;
	public static readonly RULE_renameUser = 218;
	public static readonly RULE_alterCurrentUser = 219;
	public static readonly RULE_alterUser = 220;
	public static readonly RULE_password = 221;
	public static readonly RULE_passwordExpression = 222;
	public static readonly RULE_passwordChangeRequired = 223;
	public static readonly RULE_userStatus = 224;
	public static readonly RULE_homeDatabase = 225;
	public static readonly RULE_showUsers = 226;
	public static readonly RULE_showCurrentUser = 227;
	public static readonly RULE_showPrivileges = 228;
	public static readonly RULE_showSupportedPrivileges = 229;
	public static readonly RULE_showRolePrivileges = 230;
	public static readonly RULE_showUserPrivileges = 231;
	public static readonly RULE_privilegeAsCommand = 232;
	public static readonly RULE_privilegeToken = 233;
	public static readonly RULE_grantCommand = 234;
	public static readonly RULE_grantRole = 235;
	public static readonly RULE_userNames = 236;
	public static readonly RULE_roleNames = 237;
	public static readonly RULE_denyCommand = 238;
	public static readonly RULE_revokeCommand = 239;
	public static readonly RULE_revokeRole = 240;
	public static readonly RULE_privilege = 241;
	public static readonly RULE_allPrivilege = 242;
	public static readonly RULE_allPrivilegeType = 243;
	public static readonly RULE_allPrivilegeTarget = 244;
	public static readonly RULE_createPrivilege = 245;
	public static readonly RULE_createPrivilegeForDatabase = 246;
	public static readonly RULE_createNodePrivilegeToken = 247;
	public static readonly RULE_createRelPrivilegeToken = 248;
	public static readonly RULE_createPropertyPrivilegeToken = 249;
	public static readonly RULE_actionForDBMS = 250;
	public static readonly RULE_dropPrivilege = 251;
	public static readonly RULE_loadPrivilege = 252;
	public static readonly RULE_showPrivilege = 253;
	public static readonly RULE_setPrivilege = 254;
	public static readonly RULE_passwordToken = 255;
	public static readonly RULE_removePrivilege = 256;
	public static readonly RULE_writePrivilege = 257;
	public static readonly RULE_databasePrivilege = 258;
	public static readonly RULE_dbmsPrivilege = 259;
	public static readonly RULE_dbmsPrivilegeExecute = 260;
	public static readonly RULE_adminToken = 261;
	public static readonly RULE_procedureToken = 262;
	public static readonly RULE_indexToken = 263;
	public static readonly RULE_constraintToken = 264;
	public static readonly RULE_transactionToken = 265;
	public static readonly RULE_userQualifier = 266;
	public static readonly RULE_executeFunctionQualifier = 267;
	public static readonly RULE_executeProcedureQualifier = 268;
	public static readonly RULE_settingQualifier = 269;
	public static readonly RULE_globs = 270;
	public static readonly RULE_qualifiedGraphPrivilegesWithProperty = 271;
	public static readonly RULE_qualifiedGraphPrivileges = 272;
	public static readonly RULE_labelsResource = 273;
	public static readonly RULE_propertiesResource = 274;
	public static readonly RULE_nonEmptyStringList = 275;
	public static readonly RULE_graphQualifier = 276;
	public static readonly RULE_graphQualifierToken = 277;
	public static readonly RULE_relToken = 278;
	public static readonly RULE_elementToken = 279;
	public static readonly RULE_nodeToken = 280;
	public static readonly RULE_createCompositeDatabase = 281;
	public static readonly RULE_createDatabase = 282;
	public static readonly RULE_primaryTopology = 283;
	public static readonly RULE_primaryToken = 284;
	public static readonly RULE_secondaryTopology = 285;
	public static readonly RULE_secondaryToken = 286;
	public static readonly RULE_dropDatabase = 287;
	public static readonly RULE_alterDatabase = 288;
	public static readonly RULE_alterDatabaseAccess = 289;
	public static readonly RULE_alterDatabaseTopology = 290;
	public static readonly RULE_alterDatabaseOption = 291;
	public static readonly RULE_startDatabase = 292;
	public static readonly RULE_stopDatabase = 293;
	public static readonly RULE_waitClause = 294;
	public static readonly RULE_secondsToken = 295;
	public static readonly RULE_showDatabase = 296;
	public static readonly RULE_databaseScope = 297;
	public static readonly RULE_graphScope = 298;
	public static readonly RULE_commandOptions = 299;
	public static readonly RULE_commandNameExpression = 300;
	public static readonly RULE_symbolicNameOrStringParameter = 301;
	public static readonly RULE_createAlias = 302;
	public static readonly RULE_dropAlias = 303;
	public static readonly RULE_alterAlias = 304;
	public static readonly RULE_alterAliasTarget = 305;
	public static readonly RULE_alterAliasUser = 306;
	public static readonly RULE_alterAliasPassword = 307;
	public static readonly RULE_alterAliasDriver = 308;
	public static readonly RULE_alterAliasProperties = 309;
	public static readonly RULE_showAliases = 310;
	public static readonly RULE_symbolicAliasNameList = 311;
	public static readonly RULE_symbolicAliasNameOrParameter = 312;
	public static readonly RULE_symbolicAliasName = 313;
	public static readonly RULE_symbolicNameOrStringParameterList = 314;
	public static readonly RULE_glob = 315;
	public static readonly RULE_globRecursive = 316;
	public static readonly RULE_globPart = 317;
	public static readonly RULE_stringList = 318;
	public static readonly RULE_stringLiteral = 319;
	public static readonly RULE_stringOrParameter = 320;
	public static readonly RULE_mapOrParameter = 321;
	public static readonly RULE_map = 322;
	public static readonly RULE_symbolicNameString = 323;
	public static readonly RULE_escapedSymbolicNameString = 324;
	public static readonly RULE_unescapedSymbolicNameString = 325;
	public static readonly RULE_symbolicLabelNameString = 326;
	public static readonly RULE_unescapedLabelSymbolicNameString = 327;
	public static readonly RULE_endOfFile = 328;
	public static readonly literalNames: (string | null)[] = [ null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            "'|'", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            "':'", "'::'", 
                                                            "','", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'$'", 
                                                            null, "'/'", 
                                                            "'.'", "'..'", 
                                                            "'||'", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'='", 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'>='", 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'>'", 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            "'&'", "'!'", 
                                                            "'['", "'{'", 
                                                            "'<='", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'('", 
                                                            "'<'", null, 
                                                            null, null, 
                                                            null, "'-'", 
                                                            "'%'", "'!='", 
                                                            "'<>'", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            "'+'", "'+='", 
                                                            null, null, 
                                                            "'^'", null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'?'", 
                                                            null, "']'", 
                                                            "'}'", null, 
                                                            null, null, 
                                                            null, "'=~'", 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "')'", 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "';'", 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, null, 
                                                            null, "'*'" ];
	public static readonly symbolicNames: (string | null)[] = [ null, "PARAM", 
                                                             "CLEAR", "HISTORY", 
                                                             "EXPLAIN", 
                                                             "PROFILE", 
                                                             "SPACE", "SINGLE_LINE_COMMENT", 
                                                             "MULTI_LINE_COMMENT", 
                                                             "DECIMAL_DOUBLE", 
                                                             "UNSIGNED_DECIMAL_INTEGER", 
                                                             "UNSIGNED_HEX_INTEGER", 
                                                             "UNSIGNED_OCTAL_INTEGER", 
                                                             "STRING_LITERAL1", 
                                                             "STRING_LITERAL2", 
                                                             "ESCAPED_SYMBOLIC_NAME", 
                                                             "ACCESS", "ACTIVE", 
                                                             "ADMIN", "ADMINISTRATOR", 
                                                             "ALIAS", "ALIASES", 
                                                             "ALL_SHORTEST_PATHS", 
                                                             "ALL", "ALTER", 
                                                             "AND", "ANY", 
                                                             "ARRAY", "AS", 
                                                             "ASC", "ASCENDING", 
                                                             "ASSERT", "ASSIGN", 
                                                             "AT", "BAR", 
                                                             "BINDINGS", 
                                                             "BOOL", "BOOLEAN", 
                                                             "BOOSTED", 
                                                             "BOTH", "BREAK", 
                                                             "BRIEF", "BTREE", 
                                                             "BUILT", "BY", 
                                                             "CALL", "CASE", 
                                                             "CHANGE", "CIDR", 
                                                             "COLLECT", 
                                                             "COLON", "COLONCOLON", 
                                                             "COMMA", "COMMAND", 
                                                             "COMMANDS", 
                                                             "COMMIT", "COMPOSITE", 
                                                             "CONCURRENT", 
                                                             "CONSTRAINT", 
                                                             "CONSTRAINTS", 
                                                             "CONTAINS", 
                                                             "COPY", "CONTINUE", 
                                                             "COUNT", "CREATE", 
                                                             "CSV", "CURRENT", 
                                                             "DATA", "DATABASE", 
                                                             "DATABASES", 
                                                             "DATE", "DATETIME", 
                                                             "DBMS", "DEALLOCATE", 
                                                             "DEFAULT", 
                                                             "DEFINED", 
                                                             "DELETE", "DENY", 
                                                             "DESC", "DESCENDING", 
                                                             "DESTROY", 
                                                             "DETACH", "DIFFERENT", 
                                                             "DOLLAR", "DISTINCT", 
                                                             "DIVIDE", "DOT", 
                                                             "DOTDOT", "DOUBLEBAR", 
                                                             "DRIVER", "DROP", 
                                                             "DRYRUN", "DUMP", 
                                                             "DURATION", 
                                                             "EACH", "EDGE", 
                                                             "ENABLE", "ELEMENT", 
                                                             "ELEMENTS", 
                                                             "ELSE", "ENCRYPTED", 
                                                             "END", "ENDS", 
                                                             "EQ", "EXECUTABLE", 
                                                             "EXECUTE", 
                                                             "EXIST", "EXISTENCE", 
                                                             "EXISTS", "ERROR", 
                                                             "FAIL", "FALSE", 
                                                             "FIELDTERMINATOR", 
                                                             "FINISH", "FLOAT", 
                                                             "FOR", "FOREACH", 
                                                             "FROM", "FULLTEXT", 
                                                             "FUNCTION", 
                                                             "FUNCTIONS", 
                                                             "GE", "GRANT", 
                                                             "GRAPH", "GRAPHS", 
                                                             "GROUP", "GROUPS", 
                                                             "GT", "HEADERS", 
                                                             "HOME", "IF", 
                                                             "IMPERSONATE", 
                                                             "IMMUTABLE", 
                                                             "IN", "INDEX", 
                                                             "INDEXES", 
                                                             "INF", "INFINITY", 
                                                             "INSERT", "INT", 
                                                             "INTEGER", 
                                                             "IS", "JOIN", 
                                                             "KEY", "LABEL", 
                                                             "LABELS", "AMPERSAND", 
                                                             "EXCLAMATION_MARK", 
                                                             "LBRACKET", 
                                                             "LCURLY", "LE", 
                                                             "LEADING", 
                                                             "LIMITROWS", 
                                                             "LIST", "LOAD", 
                                                             "LOCAL", "LOOKUP", 
                                                             "LPAREN", "LT", 
                                                             "MANAGEMENT", 
                                                             "MAP", "MATCH", 
                                                             "MERGE", "MINUS", 
                                                             "PERCENT", 
                                                             "INVALID_NEQ", 
                                                             "NEQ", "NAME", 
                                                             "NAMES", "NAN", 
                                                             "NFC", "NFD", 
                                                             "NFKC", "NFKD", 
                                                             "NEW", "NODE", 
                                                             "NODETACH", 
                                                             "NODES", "NONE", 
                                                             "NORMALIZE", 
                                                             "NORMALIZED", 
                                                             "NOT", "NOTHING", 
                                                             "NOWAIT", "NULL", 
                                                             "OF", "ON", 
                                                             "ONLY", "OPTIONAL", 
                                                             "OPTIONS", 
                                                             "OPTION", "OR", 
                                                             "ORDER", "OUTPUT", 
                                                             "PASSWORD", 
                                                             "PASSWORDS", 
                                                             "PATH", "PATHS", 
                                                             "PERIODIC", 
                                                             "PLAINTEXT", 
                                                             "PLUS", "PLUSEQUAL", 
                                                             "POINT", "POPULATED", 
                                                             "POW", "PRIMARY", 
                                                             "PRIMARIES", 
                                                             "PRIVILEGE", 
                                                             "PRIVILEGES", 
                                                             "PROCEDURE", 
                                                             "PROCEDURES", 
                                                             "PROPERTIES", 
                                                             "PROPERTY", 
                                                             "QUESTION", 
                                                             "RANGE", "RBRACKET", 
                                                             "RCURLY", "READ", 
                                                             "REALLOCATE", 
                                                             "REDUCE", "RENAME", 
                                                             "REGEQ", "REL", 
                                                             "RELATIONSHIP", 
                                                             "RELATIONSHIPS", 
                                                             "REMOVE", "REPEATABLE", 
                                                             "REPLACE", 
                                                             "REPORT", "REQUIRE", 
                                                             "REQUIRED", 
                                                             "RETURN", "REVOKE", 
                                                             "ROLE", "ROLES", 
                                                             "ROW", "ROWS", 
                                                             "RPAREN", "SCAN", 
                                                             "SEC", "SECOND", 
                                                             "SECONDARY", 
                                                             "SECONDARIES", 
                                                             "SECONDS", 
                                                             "SEEK", "SEMICOLON", 
                                                             "SERVER", "SERVERS", 
                                                             "SET", "SETTING", 
                                                             "SETTINGS", 
                                                             "SHORTEST_PATH", 
                                                             "SHORTEST", 
                                                             "SHOW", "SIGNED", 
                                                             "SINGLE", "SKIPROWS", 
                                                             "START", "STARTS", 
                                                             "STATUS", "STOP", 
                                                             "STRING", "SUPPORTED", 
                                                             "SUSPENDED", 
                                                             "TARGET", "TERMINATE", 
                                                             "TEXT", "THEN", 
                                                             "TIME", "TIMES", 
                                                             "TIMESTAMP", 
                                                             "TIMEZONE", 
                                                             "TO", "TOPOLOGY", 
                                                             "TRAILING", 
                                                             "TRANSACTION", 
                                                             "TRANSACTIONS", 
                                                             "TRAVERSE", 
                                                             "TRIM", "TRUE", 
                                                             "TYPE", "TYPED", 
                                                             "TYPES", "UNION", 
                                                             "UNIQUE", "UNIQUENESS", 
                                                             "UNWIND", "URL", 
                                                             "USE", "USER", 
                                                             "USERS", "USING", 
                                                             "VALUE", "VARCHAR", 
                                                             "VECTOR", "VERBOSE", 
                                                             "VERTEX", "WAIT", 
                                                             "WHEN", "WHERE", 
                                                             "WITH", "WITHOUT", 
                                                             "WRITE", "XOR", 
                                                             "YIELD", "ZONED", 
                                                             "IDENTIFIER", 
                                                             "ARROW_LINE", 
                                                             "ARROW_LEFT_HEAD", 
                                                             "ARROW_RIGHT_HEAD", 
                                                             "ErrorChar" ];
	// tslint:disable:no-trailing-whitespace
	public static readonly ruleNames: string[] = [
		"statementsOrCommands", "statementOrCommand", "consoleCommand", "paramsCmd", 
		"paramsArgs", "lambda", "clearCmd", "historyCmd", "useCmd", "listCompletionRule", 
		"useCompletionRule", "preparsedStatement", "preparserOption", "statements", 
		"statement", "periodicCommitQueryHintFailure", "regularQuery", "singleQuery", 
		"clause", "useClause", "graphReference", "finishClause", "returnClause", 
		"returnBody", "returnItem", "returnItems", "orderItem", "ascToken", "descToken", 
		"orderBy", "skip", "limit", "whereClause", "withClause", "createClause", 
		"insertClause", "setClause", "setItem", "removeClause", "removeItem", 
		"deleteClause", "matchClause", "matchMode", "hint", "mergeClause", "mergeAction", 
		"unwindClause", "callClause", "procedureName", "procedureArgument", "procedureResultItem", 
		"loadCSVClause", "foreachClause", "subqueryClause", "subqueryInTransactionsParameters", 
		"subqueryInTransactionsBatchParameters", "subqueryInTransactionsErrorParameters", 
		"subqueryInTransactionsReportParameters", "patternList", "insertPatternList", 
		"pattern", "insertPattern", "quantifier", "anonymousPattern", "shortestPathPattern", 
		"patternElement", "selector", "groupToken", "pathToken", "pathPatternNonEmpty", 
		"nodePattern", "insertNodePattern", "parenthesizedPath", "nodeLabels", 
		"nodeLabelsIs", "labelType", "relType", "labelOrRelType", "properties", 
		"relationshipPattern", "insertRelationshipPattern", "leftArrow", "arrowLine", 
		"rightArrow", "pathLength", "labelExpression", "labelExpression4", "labelExpression4Is", 
		"labelExpression3", "labelExpression3Is", "labelExpression2", "labelExpression2Is", 
		"labelExpression1", "labelExpression1Is", "insertNodeLabelExpression", 
		"insertRelationshipLabelExpression", "expression", "expression11", "expression10", 
		"expression9", "expression8", "expression7", "comparisonExpression6", 
		"normalForm", "expression6", "expression5", "expression4", "expression3", 
		"expression2", "postFix", "property", "propertyExpression", "expression1", 
		"literal", "caseExpression", "caseAlternative", "extendedCaseExpression", 
		"extendedCaseAlternative", "extendedWhen", "listComprehension", "patternComprehension", 
		"reduceExpression", "listItemsPredicate", "normalizeFunction", "trimFunction", 
		"patternExpression", "shortestPathExpression", "parenthesizedExpression", 
		"mapProjection", "mapProjectionElement", "countStar", "existsExpression", 
		"countExpression", "collectExpression", "numberLiteral", "signedIntegerLiteral", 
		"listLiteral", "propertyKeyName", "parameter", "parameterName", "functionInvocation", 
		"functionArgument", "functionName", "namespace", "variable", "nonEmptyNameList", 
		"command", "createCommand", "dropCommand", "alterCommand", "renameCommand", 
		"showCommand", "showCommandYield", "yieldItem", "yieldSkip", "yieldLimit", 
		"yieldClause", "showBriefAndYield", "showIndexCommand", "showIndexesAllowBrief", 
		"showIndexesNoBrief", "showConstraintCommand", "constraintAllowYieldType", 
		"constraintExistType", "constraintBriefAndYieldType", "showConstraintsAllowBriefAndYield", 
		"showConstraintsAllowBrief", "showConstraintsAllowYield", "showProcedures", 
		"showFunctions", "functionToken", "executableBy", "showFunctionsType", 
		"showTransactions", "terminateCommand", "terminateTransactions", "showSettings", 
		"settingToken", "namesAndClauses", "composableCommandClauses", "composableShowCommandClauses", 
		"stringsOrExpression", "type", "typePart", "typeName", "typeNullability", 
		"typeListSuffix", "commandNodePattern", "commandRelPattern", "createConstraint", 
		"constraintType", "dropConstraint", "createIndex", "oldCreateIndex", "createIndex_", 
		"createFulltextIndex", "fulltextNodePattern", "fulltextRelPattern", "createLookupIndex", 
		"lookupIndexNodePattern", "lookupIndexRelPattern", "dropIndex", "propertyList", 
		"enableServerCommand", "alterServer", "renameServer", "dropServer", "showServers", 
		"allocationCommand", "deallocateDatabaseFromServers", "reallocateDatabases", 
		"createRole", "dropRole", "renameRole", "showRoles", "roleToken", "createUser", 
		"dropUser", "renameUser", "alterCurrentUser", "alterUser", "password", 
		"passwordExpression", "passwordChangeRequired", "userStatus", "homeDatabase", 
		"showUsers", "showCurrentUser", "showPrivileges", "showSupportedPrivileges", 
		"showRolePrivileges", "showUserPrivileges", "privilegeAsCommand", "privilegeToken", 
		"grantCommand", "grantRole", "userNames", "roleNames", "denyCommand", 
		"revokeCommand", "revokeRole", "privilege", "allPrivilege", "allPrivilegeType", 
		"allPrivilegeTarget", "createPrivilege", "createPrivilegeForDatabase", 
		"createNodePrivilegeToken", "createRelPrivilegeToken", "createPropertyPrivilegeToken", 
		"actionForDBMS", "dropPrivilege", "loadPrivilege", "showPrivilege", "setPrivilege", 
		"passwordToken", "removePrivilege", "writePrivilege", "databasePrivilege", 
		"dbmsPrivilege", "dbmsPrivilegeExecute", "adminToken", "procedureToken", 
		"indexToken", "constraintToken", "transactionToken", "userQualifier", 
		"executeFunctionQualifier", "executeProcedureQualifier", "settingQualifier", 
		"globs", "qualifiedGraphPrivilegesWithProperty", "qualifiedGraphPrivileges", 
		"labelsResource", "propertiesResource", "nonEmptyStringList", "graphQualifier", 
		"graphQualifierToken", "relToken", "elementToken", "nodeToken", "createCompositeDatabase", 
		"createDatabase", "primaryTopology", "primaryToken", "secondaryTopology", 
		"secondaryToken", "dropDatabase", "alterDatabase", "alterDatabaseAccess", 
		"alterDatabaseTopology", "alterDatabaseOption", "startDatabase", "stopDatabase", 
		"waitClause", "secondsToken", "showDatabase", "databaseScope", "graphScope", 
		"commandOptions", "commandNameExpression", "symbolicNameOrStringParameter", 
		"createAlias", "dropAlias", "alterAlias", "alterAliasTarget", "alterAliasUser", 
		"alterAliasPassword", "alterAliasDriver", "alterAliasProperties", "showAliases", 
		"symbolicAliasNameList", "symbolicAliasNameOrParameter", "symbolicAliasName", 
		"symbolicNameOrStringParameterList", "glob", "globRecursive", "globPart", 
		"stringList", "stringLiteral", "stringOrParameter", "mapOrParameter", 
		"map", "symbolicNameString", "escapedSymbolicNameString", "unescapedSymbolicNameString", 
		"symbolicLabelNameString", "unescapedLabelSymbolicNameString", "endOfFile",
	];
	public get grammarFileName(): string { return "CypherCmdParser.g4"; }
	public get literalNames(): (string | null)[] { return CypherCmdParser.literalNames; }
	public get symbolicNames(): (string | null)[] { return CypherCmdParser.symbolicNames; }
	public get ruleNames(): string[] { return CypherCmdParser.ruleNames; }
	public get serializedATN(): number[] { return CypherCmdParser._serializedATN; }

	protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException {
		return new FailedPredicateException(this, predicate, message);
	}

	constructor(input: TokenStream) {
		super(input);
		this._interp = new ParserATNSimulator(this, CypherCmdParser._ATN, CypherCmdParser.DecisionsToDFA, new PredictionContextCache());
	}
	// @RuleVersion(0)
	public statementsOrCommands(): StatementsOrCommandsContext {
		let localctx: StatementsOrCommandsContext = new StatementsOrCommandsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 0, CypherCmdParser.RULE_statementsOrCommands);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 658;
			this.statementOrCommand();
			this.state = 663;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 0, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 659;
					this.match(CypherCmdParser.SEMICOLON);
					this.state = 660;
					this.statementOrCommand();
					}
					}
				}
				this.state = 665;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 0, this._ctx);
			}
			this.state = 667;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===245) {
				{
				this.state = 666;
				this.match(CypherCmdParser.SEMICOLON);
				}
			}

			this.state = 669;
			this.match(CypherCmdParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public statementOrCommand(): StatementOrCommandContext {
		let localctx: StatementOrCommandContext = new StatementOrCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 2, CypherCmdParser.RULE_statementOrCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 673;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 4:
			case 5:
			case 24:
			case 45:
			case 64:
			case 73:
			case 76:
			case 77:
			case 81:
			case 90:
			case 91:
			case 96:
			case 113:
			case 116:
			case 122:
			case 138:
			case 154:
			case 161:
			case 162:
			case 176:
			case 188:
			case 218:
			case 220:
			case 225:
			case 231:
			case 232:
			case 248:
			case 253:
			case 257:
			case 260:
			case 265:
			case 286:
			case 288:
			case 291:
			case 300:
				{
				this.state = 671;
				this.preparsedStatement();
				}
				break;
			case 50:
				{
				this.state = 672;
				this.consoleCommand();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public consoleCommand(): ConsoleCommandContext {
		let localctx: ConsoleCommandContext = new ConsoleCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 4, CypherCmdParser.RULE_consoleCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 675;
			this.match(CypherCmdParser.COLON);
			this.state = 680;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 2:
				{
				this.state = 676;
				this.clearCmd();
				}
				break;
			case 3:
				{
				this.state = 677;
				this.historyCmd();
				}
				break;
			case 288:
				{
				this.state = 678;
				this.useCmd();
				}
				break;
			case 1:
				{
				this.state = 679;
				this.paramsCmd();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public paramsCmd(): ParamsCmdContext {
		let localctx: ParamsCmdContext = new ParamsCmdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 6, CypherCmdParser.RULE_paramsCmd);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 682;
			this.match(CypherCmdParser.PARAM);
			this.state = 684;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294901764) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2678325247) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 683;
				this.paramsArgs();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public paramsArgs(): ParamsArgsContext {
		let localctx: ParamsArgsContext = new ParamsArgsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 8, CypherCmdParser.RULE_paramsArgs);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 690;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 5, this._ctx) ) {
			case 1:
				{
				this.state = 686;
				this.match(CypherCmdParser.CLEAR);
				}
				break;
			case 2:
				{
				this.state = 687;
				this.listCompletionRule();
				}
				break;
			case 3:
				{
				this.state = 688;
				this.map();
				}
				break;
			case 4:
				{
				this.state = 689;
				this.lambda();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lambda(): LambdaContext {
		let localctx: LambdaContext = new LambdaContext(this, this._ctx, this.state);
		this.enterRule(localctx, 10, CypherCmdParser.RULE_lambda);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 692;
			this.unescapedSymbolicNameString();
			this.state = 693;
			this.match(CypherCmdParser.EQ);
			this.state = 694;
			this.match(CypherCmdParser.GT);
			this.state = 695;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public clearCmd(): ClearCmdContext {
		let localctx: ClearCmdContext = new ClearCmdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 12, CypherCmdParser.RULE_clearCmd);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 697;
			this.match(CypherCmdParser.CLEAR);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public historyCmd(): HistoryCmdContext {
		let localctx: HistoryCmdContext = new HistoryCmdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 14, CypherCmdParser.RULE_historyCmd);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 699;
			this.match(CypherCmdParser.HISTORY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public useCmd(): UseCmdContext {
		let localctx: UseCmdContext = new UseCmdContext(this, this._ctx, this.state);
		this.enterRule(localctx, 16, CypherCmdParser.RULE_useCmd);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 701;
			this.useCompletionRule();
			this.state = 703;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294934528) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 702;
				this.symbolicAliasName();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public listCompletionRule(): ListCompletionRuleContext {
		let localctx: ListCompletionRuleContext = new ListCompletionRuleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 18, CypherCmdParser.RULE_listCompletionRule);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 705;
			this.match(CypherCmdParser.LIST);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public useCompletionRule(): UseCompletionRuleContext {
		let localctx: UseCompletionRuleContext = new UseCompletionRuleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 20, CypherCmdParser.RULE_useCompletionRule);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 707;
			this.match(CypherCmdParser.USE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public preparsedStatement(): PreparsedStatementContext {
		let localctx: PreparsedStatementContext = new PreparsedStatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 22, CypherCmdParser.RULE_preparsedStatement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 710;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===4 || _la===5) {
				{
				this.state = 709;
				this.preparserOption();
				}
			}

			this.state = 712;
			this.statement();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public preparserOption(): PreparserOptionContext {
		let localctx: PreparserOptionContext = new PreparserOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 24, CypherCmdParser.RULE_preparserOption);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 714;
			_la = this._input.LA(1);
			if(!(_la===4 || _la===5)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public statements(): StatementsContext {
		let localctx: StatementsContext = new StatementsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 26, CypherCmdParser.RULE_statements);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 716;
			this.statement();
			this.state = 721;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 8, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 717;
					this.match(CypherCmdParser.SEMICOLON);
					this.state = 718;
					this.statement();
					}
					}
				}
				this.state = 723;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 8, this._ctx);
			}
			this.state = 725;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===245) {
				{
				this.state = 724;
				this.match(CypherCmdParser.SEMICOLON);
				}
			}

			this.state = 727;
			this.match(CypherCmdParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public statement(): StatementContext {
		let localctx: StatementContext = new StatementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 28, CypherCmdParser.RULE_statement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 730;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===291) {
				{
				this.state = 729;
				this.periodicCommitQueryHintFailure();
				}
			}

			this.state = 734;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 11, this._ctx) ) {
			case 1:
				{
				this.state = 732;
				this.command();
				}
				break;
			case 2:
				{
				this.state = 733;
				this.regularQuery();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public periodicCommitQueryHintFailure(): PeriodicCommitQueryHintFailureContext {
		let localctx: PeriodicCommitQueryHintFailureContext = new PeriodicCommitQueryHintFailureContext(this, this._ctx, this.state);
		this.enterRule(localctx, 30, CypherCmdParser.RULE_periodicCommitQueryHintFailure);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 736;
			this.match(CypherCmdParser.USING);
			this.state = 737;
			this.match(CypherCmdParser.PERIODIC);
			this.state = 738;
			this.match(CypherCmdParser.COMMIT);
			this.state = 740;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===10) {
				{
				this.state = 739;
				this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public regularQuery(): RegularQueryContext {
		let localctx: RegularQueryContext = new RegularQueryContext(this, this._ctx, this.state);
		this.enterRule(localctx, 32, CypherCmdParser.RULE_regularQuery);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 742;
			this.singleQuery();
			this.state = 750;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===283) {
				{
				{
				this.state = 743;
				this.match(CypherCmdParser.UNION);
				this.state = 745;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===23 || _la===84) {
					{
					this.state = 744;
					_la = this._input.LA(1);
					if(!(_la===23 || _la===84)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 747;
				this.singleQuery();
				}
				}
				this.state = 752;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public singleQuery(): SingleQueryContext {
		let localctx: SingleQueryContext = new SingleQueryContext(this, this._ctx, this.state);
		this.enterRule(localctx, 34, CypherCmdParser.RULE_singleQuery);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 754;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 753;
				this.clause();
				}
				}
				this.state = 756;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 2148007937) !== 0) || _la===81 || ((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 33554441) !== 0) || ((((_la - 154)) & ~0x1F) === 0 && ((1 << (_la - 154)) & 4194689) !== 0) || _la===188 || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 8388673) !== 0) || ((((_la - 286)) & ~0x1F) === 0 && ((1 << (_la - 286)) & 16389) !== 0));
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public clause(): ClauseContext {
		let localctx: ClauseContext = new ClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 36, CypherCmdParser.RULE_clause);
		try {
			this.state = 774;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 16, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 758;
				this.useClause();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 759;
				this.finishClause();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 760;
				this.returnClause();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 761;
				this.createClause();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 762;
				this.insertClause();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 763;
				this.deleteClause();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 764;
				this.setClause();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 765;
				this.removeClause();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 766;
				this.matchClause();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 767;
				this.mergeClause();
				}
				break;
			case 11:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 768;
				this.withClause();
				}
				break;
			case 12:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 769;
				this.unwindClause();
				}
				break;
			case 13:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 770;
				this.callClause();
				}
				break;
			case 14:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 771;
				this.subqueryClause();
				}
				break;
			case 15:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 772;
				this.loadCSVClause();
				}
				break;
			case 16:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 773;
				this.foreachClause();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public useClause(): UseClauseContext {
		let localctx: UseClauseContext = new UseClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 38, CypherCmdParser.RULE_useClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 776;
			this.match(CypherCmdParser.USE);
			this.state = 778;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 17, this._ctx) ) {
			case 1:
				{
				this.state = 777;
				this.match(CypherCmdParser.GRAPH);
				}
				break;
			}
			this.state = 780;
			this.graphReference();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public graphReference(): GraphReferenceContext {
		let localctx: GraphReferenceContext = new GraphReferenceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 40, CypherCmdParser.RULE_graphReference);
		try {
			this.state = 788;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 18, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 782;
				this.match(CypherCmdParser.LPAREN);
				this.state = 783;
				this.graphReference();
				this.state = 784;
				this.match(CypherCmdParser.RPAREN);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 786;
				this.functionInvocation();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 787;
				this.symbolicAliasName();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public finishClause(): FinishClauseContext {
		let localctx: FinishClauseContext = new FinishClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 42, CypherCmdParser.RULE_finishClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 790;
			this.match(CypherCmdParser.FINISH);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public returnClause(): ReturnClauseContext {
		let localctx: ReturnClauseContext = new ReturnClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 44, CypherCmdParser.RULE_returnClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 792;
			this.match(CypherCmdParser.RETURN);
			this.state = 793;
			this.returnBody();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public returnBody(): ReturnBodyContext {
		let localctx: ReturnBodyContext = new ReturnBodyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 46, CypherCmdParser.RULE_returnBody);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 796;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 19, this._ctx) ) {
			case 1:
				{
				this.state = 795;
				this.match(CypherCmdParser.DISTINCT);
				}
				break;
			}
			this.state = 798;
			this.returnItems();
			this.state = 800;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===192) {
				{
				this.state = 799;
				this.orderBy();
				}
			}

			this.state = 803;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===256) {
				{
				this.state = 802;
				this.skip();
				}
			}

			this.state = 806;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===152) {
				{
				this.state = 805;
				this.limit();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public returnItem(): ReturnItemContext {
		let localctx: ReturnItemContext = new ReturnItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 48, CypherCmdParser.RULE_returnItem);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 808;
			this.expression();
			this.state = 811;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 809;
				this.match(CypherCmdParser.AS);
				this.state = 810;
				this.variable();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public returnItems(): ReturnItemsContext {
		let localctx: ReturnItemsContext = new ReturnItemsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 50, CypherCmdParser.RULE_returnItems);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 815;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 269:
				{
				this.state = 813;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 9:
			case 10:
			case 11:
			case 12:
			case 13:
			case 14:
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 83:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 148:
			case 149:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 157:
			case 159:
			case 160:
			case 161:
			case 162:
			case 163:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 200:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				{
				this.state = 814;
				this.returnItem();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 821;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 817;
				this.match(CypherCmdParser.COMMA);
				this.state = 818;
				this.returnItem();
				}
				}
				this.state = 823;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public orderItem(): OrderItemContext {
		let localctx: OrderItemContext = new OrderItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 52, CypherCmdParser.RULE_orderItem);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 824;
			this.expression();
			this.state = 827;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 29:
			case 30:
				{
				this.state = 825;
				this.ascToken();
				}
				break;
			case 78:
			case 79:
				{
				this.state = 826;
				this.descToken();
				}
				break;
			case -1:
			case 45:
			case 52:
			case 64:
			case 76:
			case 81:
			case 113:
			case 116:
			case 138:
			case 152:
			case 154:
			case 161:
			case 162:
			case 176:
			case 188:
			case 216:
			case 225:
			case 231:
			case 237:
			case 245:
			case 248:
			case 253:
			case 256:
			case 265:
			case 283:
			case 286:
			case 288:
			case 299:
			case 300:
				break;
			default:
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public ascToken(): AscTokenContext {
		let localctx: AscTokenContext = new AscTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 54, CypherCmdParser.RULE_ascToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 829;
			_la = this._input.LA(1);
			if(!(_la===29 || _la===30)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public descToken(): DescTokenContext {
		let localctx: DescTokenContext = new DescTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 56, CypherCmdParser.RULE_descToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 831;
			_la = this._input.LA(1);
			if(!(_la===78 || _la===79)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public orderBy(): OrderByContext {
		let localctx: OrderByContext = new OrderByContext(this, this._ctx, this.state);
		this.enterRule(localctx, 58, CypherCmdParser.RULE_orderBy);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 833;
			this.match(CypherCmdParser.ORDER);
			this.state = 834;
			this.match(CypherCmdParser.BY);
			this.state = 835;
			this.orderItem();
			this.state = 840;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 836;
				this.match(CypherCmdParser.COMMA);
				this.state = 837;
				this.orderItem();
				}
				}
				this.state = 842;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public skip(): SkipContext {
		let localctx: SkipContext = new SkipContext(this, this._ctx, this.state);
		this.enterRule(localctx, 60, CypherCmdParser.RULE_skip);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 843;
			this.match(CypherCmdParser.SKIPROWS);
			this.state = 844;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public limit(): LimitContext {
		let localctx: LimitContext = new LimitContext(this, this._ctx, this.state);
		this.enterRule(localctx, 62, CypherCmdParser.RULE_limit);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 846;
			this.match(CypherCmdParser.LIMITROWS);
			this.state = 847;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public whereClause(): WhereClauseContext {
		let localctx: WhereClauseContext = new WhereClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 64, CypherCmdParser.RULE_whereClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 849;
			this.match(CypherCmdParser.WHERE);
			this.state = 850;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public withClause(): WithClauseContext {
		let localctx: WithClauseContext = new WithClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 66, CypherCmdParser.RULE_withClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 852;
			this.match(CypherCmdParser.WITH);
			this.state = 853;
			this.returnBody();
			this.state = 855;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 854;
				this.whereClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createClause(): CreateClauseContext {
		let localctx: CreateClauseContext = new CreateClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 68, CypherCmdParser.RULE_createClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 857;
			this.match(CypherCmdParser.CREATE);
			this.state = 858;
			this.patternList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertClause(): InsertClauseContext {
		let localctx: InsertClauseContext = new InsertClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 70, CypherCmdParser.RULE_insertClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 860;
			this.match(CypherCmdParser.INSERT);
			this.state = 861;
			this.insertPatternList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public setClause(): SetClauseContext {
		let localctx: SetClauseContext = new SetClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 72, CypherCmdParser.RULE_setClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 863;
			this.match(CypherCmdParser.SET);
			this.state = 864;
			this.setItem();
			this.state = 869;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 865;
				this.match(CypherCmdParser.COMMA);
				this.state = 866;
				this.setItem();
				}
				}
				this.state = 871;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public setItem(): SetItemContext {
		let localctx: SetItemContext = new SetItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 74, CypherCmdParser.RULE_setItem);
		try {
			this.state = 890;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 30, this._ctx) ) {
			case 1:
				localctx = new SetPropContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 872;
				this.propertyExpression();
				this.state = 873;
				this.match(CypherCmdParser.EQ);
				this.state = 874;
				this.expression();
				}
				break;
			case 2:
				localctx = new SetPropsContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 876;
				this.variable();
				this.state = 877;
				this.match(CypherCmdParser.EQ);
				this.state = 878;
				this.expression();
				}
				break;
			case 3:
				localctx = new AddPropContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 880;
				this.variable();
				this.state = 881;
				this.match(CypherCmdParser.PLUSEQUAL);
				this.state = 882;
				this.expression();
				}
				break;
			case 4:
				localctx = new SetLabelsContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 884;
				this.variable();
				this.state = 885;
				this.nodeLabels();
				}
				break;
			case 5:
				localctx = new SetLabelsIsContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 887;
				this.variable();
				this.state = 888;
				this.nodeLabelsIs();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public removeClause(): RemoveClauseContext {
		let localctx: RemoveClauseContext = new RemoveClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 76, CypherCmdParser.RULE_removeClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 892;
			this.match(CypherCmdParser.REMOVE);
			this.state = 893;
			this.removeItem();
			this.state = 898;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 894;
				this.match(CypherCmdParser.COMMA);
				this.state = 895;
				this.removeItem();
				}
				}
				this.state = 900;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public removeItem(): RemoveItemContext {
		let localctx: RemoveItemContext = new RemoveItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 78, CypherCmdParser.RULE_removeItem);
		try {
			this.state = 908;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 32, this._ctx) ) {
			case 1:
				localctx = new RemovePropContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 901;
				this.propertyExpression();
				}
				break;
			case 2:
				localctx = new RemoveLabelsContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 902;
				this.variable();
				this.state = 903;
				this.nodeLabels();
				}
				break;
			case 3:
				localctx = new RemoveLabelsIsContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 905;
				this.variable();
				this.state = 906;
				this.nodeLabelsIs();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public deleteClause(): DeleteClauseContext {
		let localctx: DeleteClauseContext = new DeleteClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 80, CypherCmdParser.RULE_deleteClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 911;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===81 || _la===176) {
				{
				this.state = 910;
				_la = this._input.LA(1);
				if(!(_la===81 || _la===176)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 913;
			this.match(CypherCmdParser.DELETE);
			this.state = 914;
			this.expression();
			this.state = 919;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 915;
				this.match(CypherCmdParser.COMMA);
				this.state = 916;
				this.expression();
				}
				}
				this.state = 921;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public matchClause(): MatchClauseContext {
		let localctx: MatchClauseContext = new MatchClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 82, CypherCmdParser.RULE_matchClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 923;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===188) {
				{
				this.state = 922;
				this.match(CypherCmdParser.OPTIONAL);
				}
			}

			this.state = 925;
			this.match(CypherCmdParser.MATCH);
			this.state = 927;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 36, this._ctx) ) {
			case 1:
				{
				this.state = 926;
				this.matchMode();
				}
				break;
			}
			this.state = 929;
			this.patternList();
			this.state = 933;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===291) {
				{
				{
				this.state = 930;
				this.hint();
				}
				}
				this.state = 935;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 937;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 936;
				this.whereClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public matchMode(): MatchModeContext {
		let localctx: MatchModeContext = new MatchModeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 84, CypherCmdParser.RULE_matchMode);
		try {
			this.state = 955;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 226:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 939;
				this.match(CypherCmdParser.REPEATABLE);
				this.state = 945;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 97:
					{
					this.state = 940;
					this.match(CypherCmdParser.ELEMENT);
					this.state = 942;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 39, this._ctx) ) {
					case 1:
						{
						this.state = 941;
						this.match(CypherCmdParser.BINDINGS);
						}
						break;
					}
					}
					break;
				case 98:
					{
					this.state = 944;
					this.match(CypherCmdParser.ELEMENTS);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 82:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 947;
				this.match(CypherCmdParser.DIFFERENT);
				this.state = 953;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 223:
					{
					this.state = 948;
					this.match(CypherCmdParser.RELATIONSHIP);
					this.state = 950;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 41, this._ctx) ) {
					case 1:
						{
						this.state = 949;
						this.match(CypherCmdParser.BINDINGS);
						}
						break;
					}
					}
					break;
				case 224:
					{
					this.state = 952;
					this.match(CypherCmdParser.RELATIONSHIPS);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public hint(): HintContext {
		let localctx: HintContext = new HintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 86, CypherCmdParser.RULE_hint);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 957;
			this.match(CypherCmdParser.USING);
			this.state = 985;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 42:
			case 134:
			case 202:
			case 214:
			case 266:
				{
				{
				this.state = 967;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 134:
					{
					this.state = 958;
					this.match(CypherCmdParser.INDEX);
					}
					break;
				case 42:
					{
					this.state = 959;
					this.match(CypherCmdParser.BTREE);
					this.state = 960;
					this.match(CypherCmdParser.INDEX);
					}
					break;
				case 266:
					{
					this.state = 961;
					this.match(CypherCmdParser.TEXT);
					this.state = 962;
					this.match(CypherCmdParser.INDEX);
					}
					break;
				case 214:
					{
					this.state = 963;
					this.match(CypherCmdParser.RANGE);
					this.state = 964;
					this.match(CypherCmdParser.INDEX);
					}
					break;
				case 202:
					{
					this.state = 965;
					this.match(CypherCmdParser.POINT);
					this.state = 966;
					this.match(CypherCmdParser.INDEX);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 970;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 45, this._ctx) ) {
				case 1:
					{
					this.state = 969;
					this.match(CypherCmdParser.SEEK);
					}
					break;
				}
				this.state = 972;
				this.variable();
				this.state = 973;
				this.labelOrRelType();
				this.state = 974;
				this.match(CypherCmdParser.LPAREN);
				this.state = 975;
				this.nonEmptyNameList();
				this.state = 976;
				this.match(CypherCmdParser.RPAREN);
				}
				}
				break;
			case 142:
				{
				this.state = 978;
				this.match(CypherCmdParser.JOIN);
				this.state = 979;
				this.match(CypherCmdParser.ON);
				this.state = 980;
				this.nonEmptyNameList();
				}
				break;
			case 238:
				{
				this.state = 981;
				this.match(CypherCmdParser.SCAN);
				this.state = 982;
				this.variable();
				this.state = 983;
				this.labelOrRelType();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public mergeClause(): MergeClauseContext {
		let localctx: MergeClauseContext = new MergeClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 88, CypherCmdParser.RULE_mergeClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 987;
			this.match(CypherCmdParser.MERGE);
			this.state = 988;
			this.pattern();
			this.state = 992;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===186) {
				{
				{
				this.state = 989;
				this.mergeAction();
				}
				}
				this.state = 994;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public mergeAction(): MergeActionContext {
		let localctx: MergeActionContext = new MergeActionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 90, CypherCmdParser.RULE_mergeAction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 995;
			this.match(CypherCmdParser.ON);
			this.state = 996;
			_la = this._input.LA(1);
			if(!(_la===64 || _la===161)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 997;
			this.setClause();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public unwindClause(): UnwindClauseContext {
		let localctx: UnwindClauseContext = new UnwindClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 92, CypherCmdParser.RULE_unwindClause);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 999;
			this.match(CypherCmdParser.UNWIND);
			this.state = 1000;
			this.expression();
			this.state = 1001;
			this.match(CypherCmdParser.AS);
			this.state = 1002;
			this.variable();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public callClause(): CallClauseContext {
		let localctx: CallClauseContext = new CallClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 94, CypherCmdParser.RULE_callClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1004;
			this.match(CypherCmdParser.CALL);
			this.state = 1005;
			this.procedureName();
			this.state = 1018;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===157) {
				{
				this.state = 1006;
				this.match(CypherCmdParser.LPAREN);
				this.state = 1015;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294966784) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4263510015) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 3216244735) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967183) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828799) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
					{
					this.state = 1007;
					this.procedureArgument();
					this.state = 1012;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===52) {
						{
						{
						this.state = 1008;
						this.match(CypherCmdParser.COMMA);
						this.state = 1009;
						this.procedureArgument();
						}
						}
						this.state = 1014;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 1017;
				this.match(CypherCmdParser.RPAREN);
				}
			}

			this.state = 1035;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===304) {
				{
				this.state = 1020;
				this.match(CypherCmdParser.YIELD);
				this.state = 1033;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 1021;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 1022;
					this.procedureResultItem();
					this.state = 1027;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===52) {
						{
						{
						this.state = 1023;
						this.match(CypherCmdParser.COMMA);
						this.state = 1024;
						this.procedureResultItem();
						}
						}
						this.state = 1029;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					this.state = 1031;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===299) {
						{
						this.state = 1030;
						this.whereClause();
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public procedureName(): ProcedureNameContext {
		let localctx: ProcedureNameContext = new ProcedureNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 96, CypherCmdParser.RULE_procedureName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1037;
			this.namespace();
			this.state = 1038;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public procedureArgument(): ProcedureArgumentContext {
		let localctx: ProcedureArgumentContext = new ProcedureArgumentContext(this, this._ctx, this.state);
		this.enterRule(localctx, 98, CypherCmdParser.RULE_procedureArgument);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1040;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public procedureResultItem(): ProcedureResultItemContext {
		let localctx: ProcedureResultItemContext = new ProcedureResultItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 100, CypherCmdParser.RULE_procedureResultItem);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1042;
			this.symbolicNameString();
			this.state = 1045;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 1043;
				this.match(CypherCmdParser.AS);
				this.state = 1044;
				this.variable();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public loadCSVClause(): LoadCSVClauseContext {
		let localctx: LoadCSVClauseContext = new LoadCSVClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 102, CypherCmdParser.RULE_loadCSVClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1047;
			this.match(CypherCmdParser.LOAD);
			this.state = 1048;
			this.match(CypherCmdParser.CSV);
			this.state = 1051;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===300) {
				{
				this.state = 1049;
				this.match(CypherCmdParser.WITH);
				this.state = 1050;
				this.match(CypherCmdParser.HEADERS);
				}
			}

			this.state = 1053;
			this.match(CypherCmdParser.FROM);
			this.state = 1054;
			this.expression();
			this.state = 1055;
			this.match(CypherCmdParser.AS);
			this.state = 1056;
			this.variable();
			this.state = 1059;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===112) {
				{
				this.state = 1057;
				this.match(CypherCmdParser.FIELDTERMINATOR);
				this.state = 1058;
				this.stringLiteral();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public foreachClause(): ForeachClauseContext {
		let localctx: ForeachClauseContext = new ForeachClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 104, CypherCmdParser.RULE_foreachClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1061;
			this.match(CypherCmdParser.FOREACH);
			this.state = 1062;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1063;
			this.variable();
			this.state = 1064;
			this.match(CypherCmdParser.IN);
			this.state = 1065;
			this.expression();
			this.state = 1066;
			this.match(CypherCmdParser.BAR);
			this.state = 1068;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 1067;
				this.clause();
				}
				}
				this.state = 1070;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 2148007937) !== 0) || _la===81 || ((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 33554441) !== 0) || ((((_la - 154)) & ~0x1F) === 0 && ((1 << (_la - 154)) & 4194689) !== 0) || _la===188 || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 8388673) !== 0) || ((((_la - 286)) & ~0x1F) === 0 && ((1 << (_la - 286)) & 16389) !== 0));
			this.state = 1072;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subqueryClause(): SubqueryClauseContext {
		let localctx: SubqueryClauseContext = new SubqueryClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 106, CypherCmdParser.RULE_subqueryClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1074;
			this.match(CypherCmdParser.CALL);
			this.state = 1075;
			this.match(CypherCmdParser.LCURLY);
			this.state = 1076;
			this.regularQuery();
			this.state = 1077;
			this.match(CypherCmdParser.RCURLY);
			this.state = 1079;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===133) {
				{
				this.state = 1078;
				this.subqueryInTransactionsParameters();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subqueryInTransactionsParameters(): SubqueryInTransactionsParametersContext {
		let localctx: SubqueryInTransactionsParametersContext = new SubqueryInTransactionsParametersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 108, CypherCmdParser.RULE_subqueryInTransactionsParameters);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1081;
			this.match(CypherCmdParser.IN);
			this.state = 1086;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 61, this._ctx) ) {
			case 1:
				{
				this.state = 1083;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 60, this._ctx) ) {
				case 1:
					{
					this.state = 1082;
					this.expression();
					}
					break;
				}
				this.state = 1085;
				this.match(CypherCmdParser.CONCURRENT);
				}
				break;
			}
			this.state = 1088;
			this.match(CypherCmdParser.TRANSACTIONS);
			this.state = 1094;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===185 || _la===186 || _la===228) {
				{
				this.state = 1092;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 185:
					{
					this.state = 1089;
					this.subqueryInTransactionsBatchParameters();
					}
					break;
				case 186:
					{
					this.state = 1090;
					this.subqueryInTransactionsErrorParameters();
					}
					break;
				case 228:
					{
					this.state = 1091;
					this.subqueryInTransactionsReportParameters();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				this.state = 1096;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subqueryInTransactionsBatchParameters(): SubqueryInTransactionsBatchParametersContext {
		let localctx: SubqueryInTransactionsBatchParametersContext = new SubqueryInTransactionsBatchParametersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 110, CypherCmdParser.RULE_subqueryInTransactionsBatchParameters);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1097;
			this.match(CypherCmdParser.OF);
			this.state = 1098;
			this.expression();
			this.state = 1099;
			_la = this._input.LA(1);
			if(!(_la===235 || _la===236)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subqueryInTransactionsErrorParameters(): SubqueryInTransactionsErrorParametersContext {
		let localctx: SubqueryInTransactionsErrorParametersContext = new SubqueryInTransactionsErrorParametersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 112, CypherCmdParser.RULE_subqueryInTransactionsErrorParameters);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1101;
			this.match(CypherCmdParser.ON);
			this.state = 1102;
			this.match(CypherCmdParser.ERROR);
			this.state = 1103;
			_la = this._input.LA(1);
			if(!(_la===40 || _la===62 || _la===110)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public subqueryInTransactionsReportParameters(): SubqueryInTransactionsReportParametersContext {
		let localctx: SubqueryInTransactionsReportParametersContext = new SubqueryInTransactionsReportParametersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 114, CypherCmdParser.RULE_subqueryInTransactionsReportParameters);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1105;
			this.match(CypherCmdParser.REPORT);
			this.state = 1106;
			this.match(CypherCmdParser.STATUS);
			this.state = 1107;
			this.match(CypherCmdParser.AS);
			this.state = 1108;
			this.variable();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public patternList(): PatternListContext {
		let localctx: PatternListContext = new PatternListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 116, CypherCmdParser.RULE_patternList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1110;
			this.pattern();
			this.state = 1115;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 1111;
				this.match(CypherCmdParser.COMMA);
				this.state = 1112;
				this.pattern();
				}
				}
				this.state = 1117;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertPatternList(): InsertPatternListContext {
		let localctx: InsertPatternListContext = new InsertPatternListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 118, CypherCmdParser.RULE_insertPatternList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1118;
			this.insertPattern();
			this.state = 1123;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 1119;
				this.match(CypherCmdParser.COMMA);
				this.state = 1120;
				this.insertPattern();
				}
				}
				this.state = 1125;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public pattern(): PatternContext {
		let localctx: PatternContext = new PatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 120, CypherCmdParser.RULE_pattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1129;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 66, this._ctx) ) {
			case 1:
				{
				this.state = 1126;
				this.variable();
				this.state = 1127;
				this.match(CypherCmdParser.EQ);
				}
				break;
			}
			this.state = 1132;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===23 || _la===26 || _la===252) {
				{
				this.state = 1131;
				this.selector();
				}
			}

			this.state = 1134;
			this.anonymousPattern();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertPattern(): InsertPatternContext {
		let localctx: InsertPatternContext = new InsertPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 122, CypherCmdParser.RULE_insertPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1139;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294934528) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 1136;
				this.symbolicNameString();
				this.state = 1137;
				this.match(CypherCmdParser.EQ);
				}
			}

			this.state = 1141;
			this.insertNodePattern();
			this.state = 1147;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===158 || _la===163 || _la===307 || _la===308) {
				{
				{
				this.state = 1142;
				this.insertRelationshipPattern();
				this.state = 1143;
				this.insertNodePattern();
				}
				}
				this.state = 1149;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public quantifier(): QuantifierContext {
		let localctx: QuantifierContext = new QuantifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 124, CypherCmdParser.RULE_quantifier);
		let _la: number;
		try {
			this.state = 1164;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 72, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1150;
				this.match(CypherCmdParser.LCURLY);
				this.state = 1151;
				this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
				this.state = 1152;
				this.match(CypherCmdParser.RCURLY);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1153;
				this.match(CypherCmdParser.LCURLY);
				this.state = 1155;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1154;
					localctx._from_ = this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				this.state = 1157;
				this.match(CypherCmdParser.COMMA);
				this.state = 1159;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1158;
					localctx._to = this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				this.state = 1161;
				this.match(CypherCmdParser.RCURLY);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1162;
				this.match(CypherCmdParser.PLUS);
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1163;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public anonymousPattern(): AnonymousPatternContext {
		let localctx: AnonymousPatternContext = new AnonymousPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 126, CypherCmdParser.RULE_anonymousPattern);
		try {
			this.state = 1168;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 22:
			case 251:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1166;
				this.shortestPathPattern();
				}
				break;
			case 157:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1167;
				this.patternElement();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public shortestPathPattern(): ShortestPathPatternContext {
		let localctx: ShortestPathPatternContext = new ShortestPathPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 128, CypherCmdParser.RULE_shortestPathPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1170;
			_la = this._input.LA(1);
			if(!(_la===22 || _la===251)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1171;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1172;
			this.patternElement();
			this.state = 1173;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public patternElement(): PatternElementContext {
		let localctx: PatternElementContext = new PatternElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 130, CypherCmdParser.RULE_patternElement);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1188;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				this.state = 1188;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 76, this._ctx) ) {
				case 1:
					{
					this.state = 1175;
					this.nodePattern();
					this.state = 1184;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===158 || _la===163 || _la===307 || _la===308) {
						{
						{
						this.state = 1176;
						this.relationshipPattern();
						this.state = 1178;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===149 || _la===200 || _la===269) {
							{
							this.state = 1177;
							this.quantifier();
							}
						}

						this.state = 1180;
						this.nodePattern();
						}
						}
						this.state = 1186;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
					break;
				case 2:
					{
					this.state = 1187;
					this.parenthesizedPath();
					}
					break;
				}
				}
				this.state = 1190;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===157);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public selector(): SelectorContext {
		let localctx: SelectorContext = new SelectorContext(this, this._ctx, this.state);
		this.enterRule(localctx, 132, CypherCmdParser.RULE_selector);
		let _la: number;
		try {
			this.state = 1226;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 86, this._ctx) ) {
			case 1:
				localctx = new AnyShortestPathContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1192;
				this.match(CypherCmdParser.ANY);
				this.state = 1193;
				this.match(CypherCmdParser.SHORTEST);
				this.state = 1195;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1194;
					this.pathToken();
					}
				}

				}
				break;
			case 2:
				localctx = new AllShortestPathContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1197;
				this.match(CypherCmdParser.ALL);
				this.state = 1198;
				this.match(CypherCmdParser.SHORTEST);
				this.state = 1200;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1199;
					this.pathToken();
					}
				}

				}
				break;
			case 3:
				localctx = new AnyPathContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1202;
				this.match(CypherCmdParser.ANY);
				this.state = 1204;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1203;
					this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				this.state = 1207;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1206;
					this.pathToken();
					}
				}

				}
				break;
			case 4:
				localctx = new AllPathContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1209;
				this.match(CypherCmdParser.ALL);
				this.state = 1211;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1210;
					this.pathToken();
					}
				}

				}
				break;
			case 5:
				localctx = new ShortestGroupContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1213;
				this.match(CypherCmdParser.SHORTEST);
				this.state = 1215;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1214;
					this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				this.state = 1218;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1217;
					this.pathToken();
					}
				}

				this.state = 1220;
				this.groupToken();
				}
				break;
			case 6:
				localctx = new AnyShortestPathContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1221;
				this.match(CypherCmdParser.SHORTEST);
				this.state = 1222;
				this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
				this.state = 1224;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===196 || _la===197) {
					{
					this.state = 1223;
					this.pathToken();
					}
				}

				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public groupToken(): GroupTokenContext {
		let localctx: GroupTokenContext = new GroupTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 134, CypherCmdParser.RULE_groupToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1228;
			_la = this._input.LA(1);
			if(!(_la===125 || _la===126)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public pathToken(): PathTokenContext {
		let localctx: PathTokenContext = new PathTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 136, CypherCmdParser.RULE_pathToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1230;
			_la = this._input.LA(1);
			if(!(_la===196 || _la===197)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public pathPatternNonEmpty(): PathPatternNonEmptyContext {
		let localctx: PathPatternNonEmptyContext = new PathPatternNonEmptyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 138, CypherCmdParser.RULE_pathPatternNonEmpty);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1232;
			this.nodePattern();
			this.state = 1236;
			this._errHandler.sync(this);
			_alt = 1;
			do {
				switch (_alt) {
				case 1:
					{
					{
					this.state = 1233;
					this.relationshipPattern();
					this.state = 1234;
					this.nodePattern();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1238;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 87, this._ctx);
			} while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nodePattern(): NodePatternContext {
		let localctx: NodePatternContext = new NodePatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 140, CypherCmdParser.RULE_nodePattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1240;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1242;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 88, this._ctx) ) {
			case 1:
				{
				this.state = 1241;
				this.variable();
				}
				break;
			}
			this.state = 1245;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===50 || _la===141) {
				{
				this.state = 1244;
				this.labelExpression();
				}
			}

			this.state = 1248;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===83 || _la===149) {
				{
				this.state = 1247;
				this.properties();
				}
			}

			this.state = 1252;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 1250;
				this.match(CypherCmdParser.WHERE);
				this.state = 1251;
				this.expression();
				}
			}

			this.state = 1254;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertNodePattern(): InsertNodePatternContext {
		let localctx: InsertNodePatternContext = new InsertNodePatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 142, CypherCmdParser.RULE_insertNodePattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1256;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1258;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 92, this._ctx) ) {
			case 1:
				{
				this.state = 1257;
				this.variable();
				}
				break;
			}
			this.state = 1261;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===50 || _la===141) {
				{
				this.state = 1260;
				this.insertNodeLabelExpression();
				}
			}

			this.state = 1264;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===83 || _la===149) {
				{
				this.state = 1263;
				this.properties();
				}
			}

			this.state = 1266;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public parenthesizedPath(): ParenthesizedPathContext {
		let localctx: ParenthesizedPathContext = new ParenthesizedPathContext(this, this._ctx, this.state);
		this.enterRule(localctx, 144, CypherCmdParser.RULE_parenthesizedPath);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1268;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1269;
			this.pattern();
			this.state = 1272;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 1270;
				this.match(CypherCmdParser.WHERE);
				this.state = 1271;
				this.expression();
				}
			}

			this.state = 1274;
			this.match(CypherCmdParser.RPAREN);
			this.state = 1276;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===149 || _la===200 || _la===269) {
				{
				this.state = 1275;
				this.quantifier();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nodeLabels(): NodeLabelsContext {
		let localctx: NodeLabelsContext = new NodeLabelsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 146, CypherCmdParser.RULE_nodeLabels);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1279;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 1278;
				this.labelType();
				}
				}
				this.state = 1281;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===50);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nodeLabelsIs(): NodeLabelsIsContext {
		let localctx: NodeLabelsIsContext = new NodeLabelsIsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 148, CypherCmdParser.RULE_nodeLabelsIs);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1283;
			this.match(CypherCmdParser.IS);
			this.state = 1284;
			this.symbolicNameString();
			this.state = 1288;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===50) {
				{
				{
				this.state = 1285;
				this.labelType();
				}
				}
				this.state = 1290;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelType(): LabelTypeContext {
		let localctx: LabelTypeContext = new LabelTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 150, CypherCmdParser.RULE_labelType);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1291;
			this.match(CypherCmdParser.COLON);
			this.state = 1292;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public relType(): RelTypeContext {
		let localctx: RelTypeContext = new RelTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 152, CypherCmdParser.RULE_relType);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1294;
			this.match(CypherCmdParser.COLON);
			this.state = 1295;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelOrRelType(): LabelOrRelTypeContext {
		let localctx: LabelOrRelTypeContext = new LabelOrRelTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 154, CypherCmdParser.RULE_labelOrRelType);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1297;
			this.match(CypherCmdParser.COLON);
			this.state = 1298;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public properties(): PropertiesContext {
		let localctx: PropertiesContext = new PropertiesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 156, CypherCmdParser.RULE_properties);
		try {
			this.state = 1302;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 149:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1300;
				this.map();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1301;
				this.parameter("ANY");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public relationshipPattern(): RelationshipPatternContext {
		let localctx: RelationshipPatternContext = new RelationshipPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 158, CypherCmdParser.RULE_relationshipPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1305;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===158 || _la===308) {
				{
				this.state = 1304;
				this.leftArrow();
				}
			}

			this.state = 1307;
			this.arrowLine();
			this.state = 1326;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===148) {
				{
				this.state = 1308;
				this.match(CypherCmdParser.LBRACKET);
				this.state = 1310;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 101, this._ctx) ) {
				case 1:
					{
					this.state = 1309;
					this.variable();
					}
					break;
				}
				this.state = 1313;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===50 || _la===141) {
					{
					this.state = 1312;
					this.labelExpression();
					}
				}

				this.state = 1316;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===269) {
					{
					this.state = 1315;
					this.pathLength();
					}
				}

				this.state = 1319;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===83 || _la===149) {
					{
					this.state = 1318;
					this.properties();
					}
				}

				this.state = 1323;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299) {
					{
					this.state = 1321;
					this.match(CypherCmdParser.WHERE);
					this.state = 1322;
					this.expression();
					}
				}

				this.state = 1325;
				this.match(CypherCmdParser.RBRACKET);
				}
			}

			this.state = 1328;
			this.arrowLine();
			this.state = 1330;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===127 || _la===309) {
				{
				this.state = 1329;
				this.rightArrow();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertRelationshipPattern(): InsertRelationshipPatternContext {
		let localctx: InsertRelationshipPatternContext = new InsertRelationshipPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 160, CypherCmdParser.RULE_insertRelationshipPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1333;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===158 || _la===308) {
				{
				this.state = 1332;
				this.leftArrow();
				}
			}

			this.state = 1335;
			this.arrowLine();
			this.state = 1336;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 1338;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 109, this._ctx) ) {
			case 1:
				{
				this.state = 1337;
				this.variable();
				}
				break;
			}
			this.state = 1340;
			this.insertRelationshipLabelExpression();
			this.state = 1342;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===83 || _la===149) {
				{
				this.state = 1341;
				this.properties();
				}
			}

			this.state = 1344;
			this.match(CypherCmdParser.RBRACKET);
			this.state = 1345;
			this.arrowLine();
			this.state = 1347;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===127 || _la===309) {
				{
				this.state = 1346;
				this.rightArrow();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public leftArrow(): LeftArrowContext {
		let localctx: LeftArrowContext = new LeftArrowContext(this, this._ctx, this.state);
		this.enterRule(localctx, 162, CypherCmdParser.RULE_leftArrow);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1349;
			_la = this._input.LA(1);
			if(!(_la===158 || _la===308)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public arrowLine(): ArrowLineContext {
		let localctx: ArrowLineContext = new ArrowLineContext(this, this._ctx, this.state);
		this.enterRule(localctx, 164, CypherCmdParser.RULE_arrowLine);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1351;
			_la = this._input.LA(1);
			if(!(_la===163 || _la===307)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public rightArrow(): RightArrowContext {
		let localctx: RightArrowContext = new RightArrowContext(this, this._ctx, this.state);
		this.enterRule(localctx, 166, CypherCmdParser.RULE_rightArrow);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1353;
			_la = this._input.LA(1);
			if(!(_la===127 || _la===309)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public pathLength(): PathLengthContext {
		let localctx: PathLengthContext = new PathLengthContext(this, this._ctx, this.state);
		this.enterRule(localctx, 168, CypherCmdParser.RULE_pathLength);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1355;
			this.match(CypherCmdParser.TIMES);
			this.state = 1364;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 114, this._ctx) ) {
			case 1:
				{
				this.state = 1357;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1356;
					localctx._from_ = this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				this.state = 1359;
				this.match(CypherCmdParser.DOTDOT);
				this.state = 1361;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 1360;
					localctx._to = this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					}
				}

				}
				break;
			case 2:
				{
				this.state = 1363;
				localctx._single = this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression(): LabelExpressionContext {
		let localctx: LabelExpressionContext = new LabelExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 170, CypherCmdParser.RULE_labelExpression);
		try {
			this.state = 1370;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 50:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1366;
				this.match(CypherCmdParser.COLON);
				this.state = 1367;
				this.labelExpression4();
				}
				break;
			case 141:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1368;
				this.match(CypherCmdParser.IS);
				this.state = 1369;
				this.labelExpression4Is();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression4(): LabelExpression4Context {
		let localctx: LabelExpression4Context = new LabelExpression4Context(this, this._ctx, this.state);
		this.enterRule(localctx, 172, CypherCmdParser.RULE_labelExpression4);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1372;
			this.labelExpression3();
			this.state = 1380;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 117, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1373;
					this.match(CypherCmdParser.BAR);
					this.state = 1375;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===50) {
						{
						this.state = 1374;
						this.match(CypherCmdParser.COLON);
						}
					}

					this.state = 1377;
					this.labelExpression3();
					}
					}
				}
				this.state = 1382;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 117, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression4Is(): LabelExpression4IsContext {
		let localctx: LabelExpression4IsContext = new LabelExpression4IsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 174, CypherCmdParser.RULE_labelExpression4Is);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1383;
			this.labelExpression3Is();
			this.state = 1391;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 119, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1384;
					this.match(CypherCmdParser.BAR);
					this.state = 1386;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===50) {
						{
						this.state = 1385;
						this.match(CypherCmdParser.COLON);
						}
					}

					this.state = 1388;
					this.labelExpression3Is();
					}
					}
				}
				this.state = 1393;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 119, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression3(): LabelExpression3Context {
		let localctx: LabelExpression3Context = new LabelExpression3Context(this, this._ctx, this.state);
		this.enterRule(localctx, 176, CypherCmdParser.RULE_labelExpression3);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1394;
			this.labelExpression2();
			this.state = 1399;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 120, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1395;
					_la = this._input.LA(1);
					if(!(_la===50 || _la===146)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 1396;
					this.labelExpression2();
					}
					}
				}
				this.state = 1401;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 120, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression3Is(): LabelExpression3IsContext {
		let localctx: LabelExpression3IsContext = new LabelExpression3IsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 178, CypherCmdParser.RULE_labelExpression3Is);
		let _la: number;
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1402;
			this.labelExpression2Is();
			this.state = 1407;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 121, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1403;
					_la = this._input.LA(1);
					if(!(_la===50 || _la===146)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					this.state = 1404;
					this.labelExpression2Is();
					}
					}
				}
				this.state = 1409;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 121, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression2(): LabelExpression2Context {
		let localctx: LabelExpression2Context = new LabelExpression2Context(this, this._ctx, this.state);
		this.enterRule(localctx, 180, CypherCmdParser.RULE_labelExpression2);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1413;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===147) {
				{
				{
				this.state = 1410;
				this.match(CypherCmdParser.EXCLAMATION_MARK);
				}
				}
				this.state = 1415;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1416;
			this.labelExpression1();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression2Is(): LabelExpression2IsContext {
		let localctx: LabelExpression2IsContext = new LabelExpression2IsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 182, CypherCmdParser.RULE_labelExpression2Is);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1421;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===147) {
				{
				{
				this.state = 1418;
				this.match(CypherCmdParser.EXCLAMATION_MARK);
				}
				}
				this.state = 1423;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1424;
			this.labelExpression1Is();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression1(): LabelExpression1Context {
		let localctx: LabelExpression1Context = new LabelExpression1Context(this, this._ctx, this.state);
		this.enterRule(localctx, 184, CypherCmdParser.RULE_labelExpression1);
		try {
			this.state = 1432;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 157:
				localctx = new ParenthesizedLabelExpressionContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1426;
				this.match(CypherCmdParser.LPAREN);
				this.state = 1427;
				this.labelExpression4();
				this.state = 1428;
				this.match(CypherCmdParser.RPAREN);
				}
				break;
			case 164:
				localctx = new AnyLabelContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1430;
				this.match(CypherCmdParser.PERCENT);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				localctx = new LabelNameContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1431;
				this.symbolicNameString();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelExpression1Is(): LabelExpression1IsContext {
		let localctx: LabelExpression1IsContext = new LabelExpression1IsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 186, CypherCmdParser.RULE_labelExpression1Is);
		try {
			this.state = 1440;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 157:
				localctx = new ParenthesizedLabelExpressionIsContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1434;
				this.match(CypherCmdParser.LPAREN);
				this.state = 1435;
				this.labelExpression4Is();
				this.state = 1436;
				this.match(CypherCmdParser.RPAREN);
				}
				break;
			case 164:
				localctx = new AnyLabelIsContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1438;
				this.match(CypherCmdParser.PERCENT);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 182:
			case 183:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				localctx = new LabelNameIsContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1439;
				this.symbolicLabelNameString();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertNodeLabelExpression(): InsertNodeLabelExpressionContext {
		let localctx: InsertNodeLabelExpressionContext = new InsertNodeLabelExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 188, CypherCmdParser.RULE_insertNodeLabelExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1442;
			_la = this._input.LA(1);
			if(!(_la===50 || _la===141)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1443;
			this.symbolicNameString();
			this.state = 1448;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===50 || _la===146) {
				{
				{
				this.state = 1444;
				_la = this._input.LA(1);
				if(!(_la===50 || _la===146)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1445;
				this.symbolicNameString();
				}
				}
				this.state = 1450;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public insertRelationshipLabelExpression(): InsertRelationshipLabelExpressionContext {
		let localctx: InsertRelationshipLabelExpressionContext = new InsertRelationshipLabelExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 190, CypherCmdParser.RULE_insertRelationshipLabelExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1451;
			_la = this._input.LA(1);
			if(!(_la===50 || _la===141)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1452;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression(): ExpressionContext {
		let localctx: ExpressionContext = new ExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 192, CypherCmdParser.RULE_expression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1454;
			this.expression11();
			this.state = 1459;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===191) {
				{
				{
				this.state = 1455;
				this.match(CypherCmdParser.OR);
				this.state = 1456;
				this.expression11();
				}
				}
				this.state = 1461;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression11(): Expression11Context {
		let localctx: Expression11Context = new Expression11Context(this, this._ctx, this.state);
		this.enterRule(localctx, 194, CypherCmdParser.RULE_expression11);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1462;
			this.expression10();
			this.state = 1467;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===303) {
				{
				{
				this.state = 1463;
				this.match(CypherCmdParser.XOR);
				this.state = 1464;
				this.expression10();
				}
				}
				this.state = 1469;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression10(): Expression10Context {
		let localctx: Expression10Context = new Expression10Context(this, this._ctx, this.state);
		this.enterRule(localctx, 196, CypherCmdParser.RULE_expression10);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1470;
			this.expression9();
			this.state = 1475;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===25) {
				{
				{
				this.state = 1471;
				this.match(CypherCmdParser.AND);
				this.state = 1472;
				this.expression9();
				}
				}
				this.state = 1477;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression9(): Expression9Context {
		let localctx: Expression9Context = new Expression9Context(this, this._ctx, this.state);
		this.enterRule(localctx, 198, CypherCmdParser.RULE_expression9);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1481;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 130, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1478;
					this.match(CypherCmdParser.NOT);
					}
					}
				}
				this.state = 1483;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 130, this._ctx);
			}
			this.state = 1484;
			this.expression8();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression8(): Expression8Context {
		let localctx: Expression8Context = new Expression8Context(this, this._ctx, this.state);
		this.enterRule(localctx, 200, CypherCmdParser.RULE_expression8);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1486;
			this.expression7();
			this.state = 1491;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 17039361) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 98561) !== 0)) {
				{
				{
				this.state = 1487;
				_la = this._input.LA(1);
				if(!(((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 17039361) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 98561) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1488;
				this.expression7();
				}
				}
				this.state = 1493;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression7(): Expression7Context {
		let localctx: Expression7Context = new Expression7Context(this, this._ctx, this.state);
		this.enterRule(localctx, 202, CypherCmdParser.RULE_expression7);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1494;
			this.expression6();
			this.state = 1496;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===51 || _la===60 || _la===102 || _la===133 || _la===141 || _la===221 || _la===258) {
				{
				this.state = 1495;
				this.comparisonExpression6();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public comparisonExpression6(): ComparisonExpression6Context {
		let localctx: ComparisonExpression6Context = new ComparisonExpression6Context(this, this._ctx, this.state);
		this.enterRule(localctx, 204, CypherCmdParser.RULE_comparisonExpression6);
		let _la: number;
		try {
			this.state = 1530;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 139, this._ctx) ) {
			case 1:
				localctx = new StringAndListComparisonContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1505;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 221:
					{
					this.state = 1498;
					this.match(CypherCmdParser.REGEQ);
					}
					break;
				case 258:
					{
					this.state = 1499;
					this.match(CypherCmdParser.STARTS);
					this.state = 1500;
					this.match(CypherCmdParser.WITH);
					}
					break;
				case 102:
					{
					this.state = 1501;
					this.match(CypherCmdParser.ENDS);
					this.state = 1502;
					this.match(CypherCmdParser.WITH);
					}
					break;
				case 60:
					{
					this.state = 1503;
					this.match(CypherCmdParser.CONTAINS);
					}
					break;
				case 133:
					{
					this.state = 1504;
					this.match(CypherCmdParser.IN);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1507;
				this.expression6();
				}
				break;
			case 2:
				localctx = new NullComparisonContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1508;
				this.match(CypherCmdParser.IS);
				this.state = 1510;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===181) {
					{
					this.state = 1509;
					this.match(CypherCmdParser.NOT);
					}
				}

				this.state = 1512;
				this.match(CypherCmdParser.NULL);
				}
				break;
			case 3:
				localctx = new TypeComparisonContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1519;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 141:
					{
					this.state = 1513;
					this.match(CypherCmdParser.IS);
					this.state = 1515;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===181) {
						{
						this.state = 1514;
						this.match(CypherCmdParser.NOT);
						}
					}

					this.state = 1517;
					_la = this._input.LA(1);
					if(!(_la===51 || _la===281)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				case 51:
					{
					this.state = 1518;
					this.match(CypherCmdParser.COLONCOLON);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1521;
				this.type_();
				}
				break;
			case 4:
				localctx = new NormalFormComparisonContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1522;
				this.match(CypherCmdParser.IS);
				this.state = 1524;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===181) {
					{
					this.state = 1523;
					this.match(CypherCmdParser.NOT);
					}
				}

				this.state = 1527;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 170)) & ~0x1F) === 0 && ((1 << (_la - 170)) & 15) !== 0)) {
					{
					this.state = 1526;
					this.normalForm();
					}
				}

				this.state = 1529;
				this.match(CypherCmdParser.NORMALIZED);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public normalForm(): NormalFormContext {
		let localctx: NormalFormContext = new NormalFormContext(this, this._ctx, this.state);
		this.enterRule(localctx, 206, CypherCmdParser.RULE_normalForm);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1532;
			_la = this._input.LA(1);
			if(!(((((_la - 170)) & ~0x1F) === 0 && ((1 << (_la - 170)) & 15) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression6(): Expression6Context {
		let localctx: Expression6Context = new Expression6Context(this, this._ctx, this.state);
		this.enterRule(localctx, 208, CypherCmdParser.RULE_expression6);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1534;
			this.expression5();
			this.state = 1539;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===88 || _la===163 || _la===200) {
				{
				{
				this.state = 1535;
				_la = this._input.LA(1);
				if(!(_la===88 || _la===163 || _la===200)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1536;
				this.expression5();
				}
				}
				this.state = 1541;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression5(): Expression5Context {
		let localctx: Expression5Context = new Expression5Context(this, this._ctx, this.state);
		this.enterRule(localctx, 210, CypherCmdParser.RULE_expression5);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1542;
			this.expression4();
			this.state = 1547;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===85 || _la===164 || _la===269) {
				{
				{
				this.state = 1543;
				_la = this._input.LA(1);
				if(!(_la===85 || _la===164 || _la===269)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1544;
				this.expression4();
				}
				}
				this.state = 1549;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression4(): Expression4Context {
		let localctx: Expression4Context = new Expression4Context(this, this._ctx, this.state);
		this.enterRule(localctx, 212, CypherCmdParser.RULE_expression4);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1550;
			this.expression3();
			this.state = 1555;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===204) {
				{
				{
				this.state = 1551;
				this.match(CypherCmdParser.POW);
				this.state = 1552;
				this.expression3();
				}
				}
				this.state = 1557;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression3(): Expression3Context {
		let localctx: Expression3Context = new Expression3Context(this, this._ctx, this.state);
		this.enterRule(localctx, 214, CypherCmdParser.RULE_expression3);
		let _la: number;
		try {
			this.state = 1561;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 143, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1558;
				this.expression2();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1559;
				_la = this._input.LA(1);
				if(!(_la===163 || _la===200)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1560;
				this.expression2();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression2(): Expression2Context {
		let localctx: Expression2Context = new Expression2Context(this, this._ctx, this.state);
		this.enterRule(localctx, 216, CypherCmdParser.RULE_expression2);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1563;
			this.expression1();
			this.state = 1567;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 144, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1564;
					this.postFix();
					}
					}
				}
				this.state = 1569;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 144, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public postFix(): PostFixContext {
		let localctx: PostFixContext = new PostFixContext(this, this._ctx, this.state);
		this.enterRule(localctx, 218, CypherCmdParser.RULE_postFix);
		let _la: number;
		try {
			this.state = 1585;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 147, this._ctx) ) {
			case 1:
				localctx = new PropertyPostfixContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1570;
				this.property();
				}
				break;
			case 2:
				localctx = new LabelPostfixContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1571;
				this.labelExpression();
				}
				break;
			case 3:
				localctx = new IndexPostfixContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1572;
				this.match(CypherCmdParser.LBRACKET);
				this.state = 1573;
				this.expression();
				this.state = 1574;
				this.match(CypherCmdParser.RBRACKET);
				}
				break;
			case 4:
				localctx = new RangePostfixContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1576;
				this.match(CypherCmdParser.LBRACKET);
				this.state = 1578;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294966784) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4263510015) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 3216244735) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967183) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828799) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
					{
					this.state = 1577;
					(localctx as RangePostfixContext)._fromExp = this.expression();
					}
				}

				this.state = 1580;
				this.match(CypherCmdParser.DOTDOT);
				this.state = 1582;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294966784) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4263510015) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 3216244735) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967183) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828799) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
					{
					this.state = 1581;
					(localctx as RangePostfixContext)._toExp = this.expression();
					}
				}

				this.state = 1584;
				this.match(CypherCmdParser.RBRACKET);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public property(): PropertyContext {
		let localctx: PropertyContext = new PropertyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 220, CypherCmdParser.RULE_property);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1587;
			this.match(CypherCmdParser.DOT);
			this.state = 1588;
			this.propertyKeyName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public propertyExpression(): PropertyExpressionContext {
		let localctx: PropertyExpressionContext = new PropertyExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 222, CypherCmdParser.RULE_propertyExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1590;
			this.expression1();
			this.state = 1592;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 1591;
				this.property();
				}
				}
				this.state = 1594;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===86);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public expression1(): Expression1Context {
		let localctx: Expression1Context = new Expression1Context(this, this._ctx, this.state);
		this.enterRule(localctx, 224, CypherCmdParser.RULE_expression1);
		try {
			this.state = 1617;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 149, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1596;
				this.literal();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1597;
				this.parameter("ANY");
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1598;
				this.caseExpression();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1599;
				this.extendedCaseExpression();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1600;
				this.countStar();
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1601;
				this.existsExpression();
				}
				break;
			case 7:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1602;
				this.countExpression();
				}
				break;
			case 8:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 1603;
				this.collectExpression();
				}
				break;
			case 9:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 1604;
				this.mapProjection();
				}
				break;
			case 10:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 1605;
				this.listComprehension();
				}
				break;
			case 11:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 1606;
				this.listLiteral();
				}
				break;
			case 12:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 1607;
				this.patternComprehension();
				}
				break;
			case 13:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 1608;
				this.reduceExpression();
				}
				break;
			case 14:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 1609;
				this.listItemsPredicate();
				}
				break;
			case 15:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 1610;
				this.normalizeFunction();
				}
				break;
			case 16:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 1611;
				this.trimFunction();
				}
				break;
			case 17:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 1612;
				this.patternExpression();
				}
				break;
			case 18:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 1613;
				this.shortestPathExpression();
				}
				break;
			case 19:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 1614;
				this.parenthesizedExpression();
				}
				break;
			case 20:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 1615;
				this.functionInvocation();
				}
				break;
			case 21:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 1616;
				this.variable();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public literal(): LiteralContext {
		let localctx: LiteralContext = new LiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 226, CypherCmdParser.RULE_literal);
		try {
			this.state = 1628;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 9:
			case 10:
			case 11:
			case 12:
			case 163:
				localctx = new NummericLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1619;
				this.numberLiteral();
				}
				break;
			case 13:
			case 14:
				localctx = new StringsLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1620;
				this.stringLiteral();
				}
				break;
			case 149:
				localctx = new OtherLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1621;
				this.map();
				}
				break;
			case 279:
				localctx = new BooleanLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1622;
				this.match(CypherCmdParser.TRUE);
				}
				break;
			case 111:
				localctx = new BooleanLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1623;
				this.match(CypherCmdParser.FALSE);
				}
				break;
			case 136:
				localctx = new KeywordLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1624;
				this.match(CypherCmdParser.INF);
				}
				break;
			case 137:
				localctx = new KeywordLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 1625;
				this.match(CypherCmdParser.INFINITY);
				}
				break;
			case 169:
				localctx = new KeywordLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 1626;
				this.match(CypherCmdParser.NAN);
				}
				break;
			case 184:
				localctx = new KeywordLiteralContext(this, localctx);
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 1627;
				this.match(CypherCmdParser.NULL);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public caseExpression(): CaseExpressionContext {
		let localctx: CaseExpressionContext = new CaseExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 228, CypherCmdParser.RULE_caseExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1630;
			this.match(CypherCmdParser.CASE);
			this.state = 1632;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 1631;
				this.caseAlternative();
				}
				}
				this.state = 1634;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===298);
			this.state = 1638;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===99) {
				{
				this.state = 1636;
				this.match(CypherCmdParser.ELSE);
				this.state = 1637;
				this.expression();
				}
			}

			this.state = 1640;
			this.match(CypherCmdParser.END);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public caseAlternative(): CaseAlternativeContext {
		let localctx: CaseAlternativeContext = new CaseAlternativeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 230, CypherCmdParser.RULE_caseAlternative);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1642;
			this.match(CypherCmdParser.WHEN);
			this.state = 1643;
			this.expression();
			this.state = 1644;
			this.match(CypherCmdParser.THEN);
			this.state = 1645;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public extendedCaseExpression(): ExtendedCaseExpressionContext {
		let localctx: ExtendedCaseExpressionContext = new ExtendedCaseExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 232, CypherCmdParser.RULE_extendedCaseExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1647;
			this.match(CypherCmdParser.CASE);
			this.state = 1648;
			this.expression();
			this.state = 1650;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 1649;
				this.extendedCaseAlternative();
				}
				}
				this.state = 1652;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===298);
			this.state = 1656;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===99) {
				{
				this.state = 1654;
				this.match(CypherCmdParser.ELSE);
				this.state = 1655;
				localctx._elseExp = this.expression();
				}
			}

			this.state = 1658;
			this.match(CypherCmdParser.END);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public extendedCaseAlternative(): ExtendedCaseAlternativeContext {
		let localctx: ExtendedCaseAlternativeContext = new ExtendedCaseAlternativeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 234, CypherCmdParser.RULE_extendedCaseAlternative);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1660;
			this.match(CypherCmdParser.WHEN);
			this.state = 1661;
			this.extendedWhen();
			this.state = 1666;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 1662;
				this.match(CypherCmdParser.COMMA);
				this.state = 1663;
				this.extendedWhen();
				}
				}
				this.state = 1668;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 1669;
			this.match(CypherCmdParser.THEN);
			this.state = 1670;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public extendedWhen(): ExtendedWhenContext {
		let localctx: ExtendedWhenContext = new ExtendedWhenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 236, CypherCmdParser.RULE_extendedWhen);
		let _la: number;
		try {
			this.state = 1705;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 162, this._ctx) ) {
			case 1:
				localctx = new WhenStringOrListContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1677;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 221:
					{
					this.state = 1672;
					this.match(CypherCmdParser.REGEQ);
					}
					break;
				case 258:
					{
					this.state = 1673;
					this.match(CypherCmdParser.STARTS);
					this.state = 1674;
					this.match(CypherCmdParser.WITH);
					}
					break;
				case 102:
					{
					this.state = 1675;
					this.match(CypherCmdParser.ENDS);
					this.state = 1676;
					this.match(CypherCmdParser.WITH);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1679;
				this.expression6();
				}
				break;
			case 2:
				localctx = new WhenNullContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1680;
				this.match(CypherCmdParser.IS);
				this.state = 1682;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===181) {
					{
					this.state = 1681;
					this.match(CypherCmdParser.NOT);
					}
				}

				this.state = 1684;
				this.match(CypherCmdParser.NULL);
				}
				break;
			case 3:
				localctx = new WhenTypeContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1691;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 141:
					{
					this.state = 1685;
					this.match(CypherCmdParser.IS);
					this.state = 1687;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===181) {
						{
						this.state = 1686;
						this.match(CypherCmdParser.NOT);
						}
					}

					this.state = 1689;
					this.match(CypherCmdParser.TYPED);
					}
					break;
				case 51:
					{
					this.state = 1690;
					this.match(CypherCmdParser.COLONCOLON);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 1693;
				this.type_();
				}
				break;
			case 4:
				localctx = new WhenFormContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1694;
				this.match(CypherCmdParser.IS);
				this.state = 1696;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===181) {
					{
					this.state = 1695;
					this.match(CypherCmdParser.NOT);
					}
				}

				this.state = 1699;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (((((_la - 170)) & ~0x1F) === 0 && ((1 << (_la - 170)) & 15) !== 0)) {
					{
					this.state = 1698;
					this.normalForm();
					}
				}

				this.state = 1701;
				this.match(CypherCmdParser.NORMALIZED);
				}
				break;
			case 5:
				localctx = new WhenComparatorContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 1702;
				_la = this._input.LA(1);
				if(!(((((_la - 103)) & ~0x1F) === 0 && ((1 << (_la - 103)) & 17039361) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 98561) !== 0))) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 1703;
				this.expression7();
				}
				break;
			case 6:
				localctx = new WhenEqualsContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 1704;
				this.expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public listComprehension(): ListComprehensionContext {
		let localctx: ListComprehensionContext = new ListComprehensionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 238, CypherCmdParser.RULE_listComprehension);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1707;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 1708;
			this.variable();
			this.state = 1709;
			this.match(CypherCmdParser.IN);
			this.state = 1710;
			this.expression();
			this.state = 1724;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 165, this._ctx) ) {
			case 1:
				{
				this.state = 1713;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299) {
					{
					this.state = 1711;
					this.match(CypherCmdParser.WHERE);
					this.state = 1712;
					localctx._whereExp = this.expression();
					}
				}

				this.state = 1715;
				this.match(CypherCmdParser.BAR);
				this.state = 1716;
				localctx._barExp = this.expression();
				this.state = 1717;
				this.match(CypherCmdParser.RBRACKET);
				}
				break;
			case 2:
				{
				this.state = 1721;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299) {
					{
					this.state = 1719;
					this.match(CypherCmdParser.WHERE);
					this.state = 1720;
					localctx._whereExp = this.expression();
					}
				}

				this.state = 1723;
				this.match(CypherCmdParser.RBRACKET);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public patternComprehension(): PatternComprehensionContext {
		let localctx: PatternComprehensionContext = new PatternComprehensionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 240, CypherCmdParser.RULE_patternComprehension);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1726;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 1730;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294934528) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 1727;
				this.variable();
				this.state = 1728;
				this.match(CypherCmdParser.EQ);
				}
			}

			this.state = 1732;
			this.pathPatternNonEmpty();
			this.state = 1735;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 1733;
				this.match(CypherCmdParser.WHERE);
				this.state = 1734;
				localctx._whereExp = this.expression();
				}
			}

			this.state = 1737;
			this.match(CypherCmdParser.BAR);
			this.state = 1738;
			localctx._barExp = this.expression();
			this.state = 1739;
			this.match(CypherCmdParser.RBRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public reduceExpression(): ReduceExpressionContext {
		let localctx: ReduceExpressionContext = new ReduceExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 242, CypherCmdParser.RULE_reduceExpression);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1741;
			this.match(CypherCmdParser.REDUCE);
			this.state = 1742;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1743;
			this.variable();
			this.state = 1744;
			this.match(CypherCmdParser.EQ);
			this.state = 1745;
			this.expression();
			this.state = 1746;
			this.match(CypherCmdParser.COMMA);
			this.state = 1747;
			this.variable();
			this.state = 1748;
			this.match(CypherCmdParser.IN);
			this.state = 1749;
			this.expression();
			this.state = 1750;
			this.match(CypherCmdParser.BAR);
			this.state = 1751;
			this.expression();
			this.state = 1752;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public listItemsPredicate(): ListItemsPredicateContext {
		let localctx: ListItemsPredicateContext = new ListItemsPredicateContext(this, this._ctx, this.state);
		this.enterRule(localctx, 244, CypherCmdParser.RULE_listItemsPredicate);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1754;
			_la = this._input.LA(1);
			if(!(_la===23 || _la===26 || _la===178 || _la===255)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 1755;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1756;
			this.variable();
			this.state = 1757;
			this.match(CypherCmdParser.IN);
			this.state = 1758;
			localctx._inExp = this.expression();
			this.state = 1761;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 1759;
				this.match(CypherCmdParser.WHERE);
				this.state = 1760;
				localctx._whereExp = this.expression();
				}
			}

			this.state = 1763;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public normalizeFunction(): NormalizeFunctionContext {
		let localctx: NormalizeFunctionContext = new NormalizeFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 246, CypherCmdParser.RULE_normalizeFunction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1765;
			this.match(CypherCmdParser.NORMALIZE);
			this.state = 1766;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1767;
			this.expression();
			this.state = 1770;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===52) {
				{
				this.state = 1768;
				this.match(CypherCmdParser.COMMA);
				this.state = 1769;
				this.normalForm();
				}
			}

			this.state = 1772;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public trimFunction(): TrimFunctionContext {
		let localctx: TrimFunctionContext = new TrimFunctionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 248, CypherCmdParser.RULE_trimFunction);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1774;
			this.match(CypherCmdParser.TRIM);
			this.state = 1775;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1783;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 172, this._ctx) ) {
			case 1:
				{
				this.state = 1777;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 170, this._ctx) ) {
				case 1:
					{
					this.state = 1776;
					_la = this._input.LA(1);
					if(!(_la===39 || _la===151 || _la===274)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				}
				this.state = 1780;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 171, this._ctx) ) {
				case 1:
					{
					this.state = 1779;
					localctx._trimCharacterString = this.expression();
					}
					break;
				}
				this.state = 1782;
				this.match(CypherCmdParser.FROM);
				}
				break;
			}
			this.state = 1785;
			localctx._trimSource = this.expression();
			this.state = 1786;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public patternExpression(): PatternExpressionContext {
		let localctx: PatternExpressionContext = new PatternExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 250, CypherCmdParser.RULE_patternExpression);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1788;
			this.pathPatternNonEmpty();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public shortestPathExpression(): ShortestPathExpressionContext {
		let localctx: ShortestPathExpressionContext = new ShortestPathExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 252, CypherCmdParser.RULE_shortestPathExpression);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1790;
			this.shortestPathPattern();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public parenthesizedExpression(): ParenthesizedExpressionContext {
		let localctx: ParenthesizedExpressionContext = new ParenthesizedExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 254, CypherCmdParser.RULE_parenthesizedExpression);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1792;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1793;
			this.expression();
			this.state = 1794;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public mapProjection(): MapProjectionContext {
		let localctx: MapProjectionContext = new MapProjectionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 256, CypherCmdParser.RULE_mapProjection);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1796;
			this.variable();
			this.state = 1797;
			this.match(CypherCmdParser.LCURLY);
			this.state = 1806;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294934528) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4267180031) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 1798;
				this.mapProjectionElement();
				this.state = 1803;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 1799;
					this.match(CypherCmdParser.COMMA);
					this.state = 1800;
					this.mapProjectionElement();
					}
					}
					this.state = 1805;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 1808;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public mapProjectionElement(): MapProjectionElementContext {
		let localctx: MapProjectionElementContext = new MapProjectionElementContext(this, this._ctx, this.state);
		this.enterRule(localctx, 258, CypherCmdParser.RULE_mapProjectionElement);
		try {
			this.state = 1818;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 175, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 1810;
				this.propertyKeyName();
				this.state = 1811;
				this.match(CypherCmdParser.COLON);
				this.state = 1812;
				this.expression();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 1814;
				this.property();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 1815;
				this.variable();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 1816;
				this.match(CypherCmdParser.DOT);
				this.state = 1817;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public countStar(): CountStarContext {
		let localctx: CountStarContext = new CountStarContext(this, this._ctx, this.state);
		this.enterRule(localctx, 260, CypherCmdParser.RULE_countStar);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1820;
			this.match(CypherCmdParser.COUNT);
			this.state = 1821;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1822;
			this.match(CypherCmdParser.TIMES);
			this.state = 1823;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public existsExpression(): ExistsExpressionContext {
		let localctx: ExistsExpressionContext = new ExistsExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 262, CypherCmdParser.RULE_existsExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1825;
			this.match(CypherCmdParser.EXISTS);
			this.state = 1826;
			this.match(CypherCmdParser.LCURLY);
			this.state = 1835;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 178, this._ctx) ) {
			case 1:
				{
				this.state = 1827;
				this.regularQuery();
				}
				break;
			case 2:
				{
				this.state = 1829;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 176, this._ctx) ) {
				case 1:
					{
					this.state = 1828;
					this.matchMode();
					}
					break;
				}
				this.state = 1831;
				this.patternList();
				this.state = 1833;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299) {
					{
					this.state = 1832;
					this.whereClause();
					}
				}

				}
				break;
			}
			this.state = 1837;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public countExpression(): CountExpressionContext {
		let localctx: CountExpressionContext = new CountExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 264, CypherCmdParser.RULE_countExpression);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1839;
			this.match(CypherCmdParser.COUNT);
			this.state = 1840;
			this.match(CypherCmdParser.LCURLY);
			this.state = 1849;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 181, this._ctx) ) {
			case 1:
				{
				this.state = 1841;
				this.regularQuery();
				}
				break;
			case 2:
				{
				this.state = 1843;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 179, this._ctx) ) {
				case 1:
					{
					this.state = 1842;
					this.matchMode();
					}
					break;
				}
				this.state = 1845;
				this.patternList();
				this.state = 1847;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299) {
					{
					this.state = 1846;
					this.whereClause();
					}
				}

				}
				break;
			}
			this.state = 1851;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public collectExpression(): CollectExpressionContext {
		let localctx: CollectExpressionContext = new CollectExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 266, CypherCmdParser.RULE_collectExpression);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1853;
			this.match(CypherCmdParser.COLLECT);
			this.state = 1854;
			this.match(CypherCmdParser.LCURLY);
			this.state = 1855;
			this.regularQuery();
			this.state = 1856;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public numberLiteral(): NumberLiteralContext {
		let localctx: NumberLiteralContext = new NumberLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 268, CypherCmdParser.RULE_numberLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1859;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===163) {
				{
				this.state = 1858;
				this.match(CypherCmdParser.MINUS);
				}
			}

			this.state = 1861;
			_la = this._input.LA(1);
			if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 7680) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public signedIntegerLiteral(): SignedIntegerLiteralContext {
		let localctx: SignedIntegerLiteralContext = new SignedIntegerLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 270, CypherCmdParser.RULE_signedIntegerLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1864;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===163) {
				{
				this.state = 1863;
				this.match(CypherCmdParser.MINUS);
				}
			}

			this.state = 1866;
			this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public listLiteral(): ListLiteralContext {
		let localctx: ListLiteralContext = new ListLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 272, CypherCmdParser.RULE_listLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1868;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 1877;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294966784) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4263510015) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 3216244735) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967183) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828799) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 1869;
				this.expression();
				this.state = 1874;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 1870;
					this.match(CypherCmdParser.COMMA);
					this.state = 1871;
					this.expression();
					}
					}
					this.state = 1876;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 1879;
			this.match(CypherCmdParser.RBRACKET);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public propertyKeyName(): PropertyKeyNameContext {
		let localctx: PropertyKeyNameContext = new PropertyKeyNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 274, CypherCmdParser.RULE_propertyKeyName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1881;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public parameter(paramType: String): ParameterContext {
		let localctx: ParameterContext = new ParameterContext(this, this._ctx, this.state, paramType);
		this.enterRule(localctx, 276, CypherCmdParser.RULE_parameter);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1883;
			this.match(CypherCmdParser.DOLLAR);
			this.state = 1884;
			this.parameterName();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public parameterName(): ParameterNameContext {
		let localctx: ParameterNameContext = new ParameterNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 278, CypherCmdParser.RULE_parameterName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1888;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				{
				this.state = 1886;
				this.symbolicNameString();
				}
				break;
			case 10:
				{
				this.state = 1887;
				this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionInvocation(): FunctionInvocationContext {
		let localctx: FunctionInvocationContext = new FunctionInvocationContext(this, this._ctx, this.state);
		this.enterRule(localctx, 280, CypherCmdParser.RULE_functionInvocation);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1890;
			this.functionName();
			this.state = 1891;
			this.match(CypherCmdParser.LPAREN);
			this.state = 1893;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 187, this._ctx) ) {
			case 1:
				{
				this.state = 1892;
				_la = this._input.LA(1);
				if(!(_la===23 || _la===84)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			}
			this.state = 1903;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294966784) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4263510015) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 3216244735) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967183) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828799) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 1895;
				this.functionArgument();
				this.state = 1900;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 1896;
					this.match(CypherCmdParser.COMMA);
					this.state = 1897;
					this.functionArgument();
					}
					}
					this.state = 1902;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 1905;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionArgument(): FunctionArgumentContext {
		let localctx: FunctionArgumentContext = new FunctionArgumentContext(this, this._ctx, this.state);
		this.enterRule(localctx, 282, CypherCmdParser.RULE_functionArgument);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1907;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionName(): FunctionNameContext {
		let localctx: FunctionNameContext = new FunctionNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 284, CypherCmdParser.RULE_functionName);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1909;
			this.namespace();
			this.state = 1910;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public namespace(): NamespaceContext {
		let localctx: NamespaceContext = new NamespaceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 286, CypherCmdParser.RULE_namespace);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1917;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 190, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 1912;
					this.symbolicNameString();
					this.state = 1913;
					this.match(CypherCmdParser.DOT);
					}
					}
				}
				this.state = 1919;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 190, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public variable(): VariableContext {
		let localctx: VariableContext = new VariableContext(this, this._ctx, this.state);
		this.enterRule(localctx, 288, CypherCmdParser.RULE_variable);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1920;
			this.symbolicNameString();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nonEmptyNameList(): NonEmptyNameListContext {
		let localctx: NonEmptyNameListContext = new NonEmptyNameListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 290, CypherCmdParser.RULE_nonEmptyNameList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1922;
			this.symbolicNameString();
			this.state = 1927;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 1923;
				this.match(CypherCmdParser.COMMA);
				this.state = 1924;
				this.symbolicNameString();
				}
				}
				this.state = 1929;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public command(): CommandContext {
		let localctx: CommandContext = new CommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 292, CypherCmdParser.RULE_command);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1931;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===288) {
				{
				this.state = 1930;
				this.useClause();
				}
			}

			this.state = 1946;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 64:
				{
				this.state = 1933;
				this.createCommand();
				}
				break;
			case 90:
				{
				this.state = 1934;
				this.dropCommand();
				}
				break;
			case 24:
				{
				this.state = 1935;
				this.alterCommand();
				}
				break;
			case 220:
				{
				this.state = 1936;
				this.renameCommand();
				}
				break;
			case 77:
				{
				this.state = 1937;
				this.denyCommand();
				}
				break;
			case 232:
				{
				this.state = 1938;
				this.revokeCommand();
				}
				break;
			case 122:
				{
				this.state = 1939;
				this.grantCommand();
				}
				break;
			case 257:
				{
				this.state = 1940;
				this.startDatabase();
				}
				break;
			case 260:
				{
				this.state = 1941;
				this.stopDatabase();
				}
				break;
			case 96:
				{
				this.state = 1942;
				this.enableServerCommand();
				}
				break;
			case 73:
			case 91:
			case 218:
				{
				this.state = 1943;
				this.allocationCommand();
				}
				break;
			case 253:
				{
				this.state = 1944;
				this.showCommand();
				}
				break;
			case 265:
				{
				this.state = 1945;
				this.terminateCommand();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createCommand(): CreateCommandContext {
		let localctx: CreateCommandContext = new CreateCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 294, CypherCmdParser.RULE_createCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1948;
			this.match(CypherCmdParser.CREATE);
			this.state = 1951;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===191) {
				{
				this.state = 1949;
				this.match(CypherCmdParser.OR);
				this.state = 1950;
				this.match(CypherCmdParser.REPLACE);
				}
			}

			this.state = 1960;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 20:
				{
				this.state = 1953;
				this.createAlias();
				}
				break;
			case 56:
				{
				this.state = 1954;
				this.createCompositeDatabase();
				}
				break;
			case 58:
				{
				this.state = 1955;
				this.createConstraint();
				}
				break;
			case 68:
				{
				this.state = 1956;
				this.createDatabase();
				}
				break;
			case 42:
			case 118:
			case 134:
			case 156:
			case 202:
			case 214:
			case 266:
			case 294:
				{
				this.state = 1957;
				this.createIndex();
				}
				break;
			case 233:
				{
				this.state = 1958;
				this.createRole();
				}
				break;
			case 289:
				{
				this.state = 1959;
				this.createUser();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropCommand(): DropCommandContext {
		let localctx: DropCommandContext = new DropCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 296, CypherCmdParser.RULE_dropCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1962;
			this.match(CypherCmdParser.DROP);
			this.state = 1970;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 20:
				{
				this.state = 1963;
				this.dropAlias();
				}
				break;
			case 58:
				{
				this.state = 1964;
				this.dropConstraint();
				}
				break;
			case 56:
			case 68:
				{
				this.state = 1965;
				this.dropDatabase();
				}
				break;
			case 134:
				{
				this.state = 1966;
				this.dropIndex();
				}
				break;
			case 233:
				{
				this.state = 1967;
				this.dropRole();
				}
				break;
			case 246:
				{
				this.state = 1968;
				this.dropServer();
				}
				break;
			case 289:
				{
				this.state = 1969;
				this.dropUser();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterCommand(): AlterCommandContext {
		let localctx: AlterCommandContext = new AlterCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 298, CypherCmdParser.RULE_alterCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1972;
			this.match(CypherCmdParser.ALTER);
			this.state = 1978;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 20:
				{
				this.state = 1973;
				this.alterAlias();
				}
				break;
			case 66:
				{
				this.state = 1974;
				this.alterCurrentUser();
				}
				break;
			case 68:
				{
				this.state = 1975;
				this.alterDatabase();
				}
				break;
			case 289:
				{
				this.state = 1976;
				this.alterUser();
				}
				break;
			case 246:
				{
				this.state = 1977;
				this.alterServer();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public renameCommand(): RenameCommandContext {
		let localctx: RenameCommandContext = new RenameCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 300, CypherCmdParser.RULE_renameCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1980;
			this.match(CypherCmdParser.RENAME);
			this.state = 1984;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 233:
				{
				this.state = 1981;
				this.renameRole();
				}
				break;
			case 246:
				{
				this.state = 1982;
				this.renameServer();
				}
				break;
			case 289:
				{
				this.state = 1983;
				this.renameUser();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showCommand(): ShowCommandContext {
		let localctx: ShowCommandContext = new ShowCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 302, CypherCmdParser.RULE_showCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 1986;
			this.match(CypherCmdParser.SHOW);
			this.state = 2003;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 199, this._ctx) ) {
			case 1:
				{
				this.state = 1987;
				this.showAliases();
				}
				break;
			case 2:
				{
				this.state = 1988;
				this.showConstraintCommand();
				}
				break;
			case 3:
				{
				this.state = 1989;
				this.showCurrentUser();
				}
				break;
			case 4:
				{
				this.state = 1990;
				this.showDatabase();
				}
				break;
			case 5:
				{
				this.state = 1991;
				this.showFunctions();
				}
				break;
			case 6:
				{
				this.state = 1992;
				this.showIndexCommand();
				}
				break;
			case 7:
				{
				this.state = 1993;
				this.showPrivileges();
				}
				break;
			case 8:
				{
				this.state = 1994;
				this.showProcedures();
				}
				break;
			case 9:
				{
				this.state = 1995;
				this.showRolePrivileges();
				}
				break;
			case 10:
				{
				this.state = 1996;
				this.showRoles();
				}
				break;
			case 11:
				{
				this.state = 1997;
				this.showServers();
				}
				break;
			case 12:
				{
				this.state = 1998;
				this.showSettings();
				}
				break;
			case 13:
				{
				this.state = 1999;
				this.showSupportedPrivileges();
				}
				break;
			case 14:
				{
				this.state = 2000;
				this.showTransactions();
				}
				break;
			case 15:
				{
				this.state = 2001;
				this.showUserPrivileges();
				}
				break;
			case 16:
				{
				this.state = 2002;
				this.showUsers();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showCommandYield(): ShowCommandYieldContext {
		let localctx: ShowCommandYieldContext = new ShowCommandYieldContext(this, this._ctx, this.state);
		this.enterRule(localctx, 304, CypherCmdParser.RULE_showCommandYield);
		let _la: number;
		try {
			this.state = 2010;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 304:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2005;
				this.yieldClause();
				this.state = 2007;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===231) {
					{
					this.state = 2006;
					this.returnClause();
					}
				}

				}
				break;
			case 299:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2009;
				this.whereClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public yieldItem(): YieldItemContext {
		let localctx: YieldItemContext = new YieldItemContext(this, this._ctx, this.state);
		this.enterRule(localctx, 306, CypherCmdParser.RULE_yieldItem);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2012;
			this.variable();
			this.state = 2015;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 2013;
				this.match(CypherCmdParser.AS);
				this.state = 2014;
				this.variable();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public yieldSkip(): YieldSkipContext {
		let localctx: YieldSkipContext = new YieldSkipContext(this, this._ctx, this.state);
		this.enterRule(localctx, 308, CypherCmdParser.RULE_yieldSkip);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2017;
			this.match(CypherCmdParser.SKIPROWS);
			this.state = 2018;
			this.signedIntegerLiteral();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public yieldLimit(): YieldLimitContext {
		let localctx: YieldLimitContext = new YieldLimitContext(this, this._ctx, this.state);
		this.enterRule(localctx, 310, CypherCmdParser.RULE_yieldLimit);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2020;
			this.match(CypherCmdParser.LIMITROWS);
			this.state = 2021;
			this.signedIntegerLiteral();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public yieldClause(): YieldClauseContext {
		let localctx: YieldClauseContext = new YieldClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 312, CypherCmdParser.RULE_yieldClause);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2023;
			this.match(CypherCmdParser.YIELD);
			this.state = 2033;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 269:
				{
				this.state = 2024;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				{
				this.state = 2025;
				this.yieldItem();
				this.state = 2030;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 2026;
					this.match(CypherCmdParser.COMMA);
					this.state = 2027;
					this.yieldItem();
					}
					}
					this.state = 2032;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 2036;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===192) {
				{
				this.state = 2035;
				this.orderBy();
				}
			}

			this.state = 2039;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===256) {
				{
				this.state = 2038;
				this.yieldSkip();
				}
			}

			this.state = 2042;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===152) {
				{
				this.state = 2041;
				this.yieldLimit();
				}
			}

			this.state = 2045;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299) {
				{
				this.state = 2044;
				this.whereClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showBriefAndYield(): ShowBriefAndYieldContext {
		let localctx: ShowBriefAndYieldContext = new ShowBriefAndYieldContext(this, this._ctx, this.state);
		this.enterRule(localctx, 314, CypherCmdParser.RULE_showBriefAndYield);
		let _la: number;
		try {
			this.state = 2056;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 41:
			case 295:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2047;
				_la = this._input.LA(1);
				if(!(_la===41 || _la===295)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2049;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===193) {
					{
					this.state = 2048;
					this.match(CypherCmdParser.OUTPUT);
					}
				}

				}
				break;
			case 304:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2051;
				this.yieldClause();
				this.state = 2053;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===231) {
					{
					this.state = 2052;
					this.returnClause();
					}
				}

				}
				break;
			case 299:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2055;
				this.whereClause();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showIndexCommand(): ShowIndexCommandContext {
		let localctx: ShowIndexCommandContext = new ShowIndexCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 316, CypherCmdParser.RULE_showIndexCommand);
		let _la: number;
		try {
			this.state = 2064;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 118:
			case 156:
			case 202:
			case 214:
			case 266:
			case 294:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2058;
				_la = this._input.LA(1);
				if(!(_la===118 || _la===156 || _la===202 || _la===214 || _la===266 || _la===294)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2059;
				this.showIndexesNoBrief();
				}
				break;
			case 23:
			case 42:
			case 134:
			case 135:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2061;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===23 || _la===42) {
					{
					this.state = 2060;
					_la = this._input.LA(1);
					if(!(_la===23 || _la===42)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2063;
				this.showIndexesAllowBrief();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showIndexesAllowBrief(): ShowIndexesAllowBriefContext {
		let localctx: ShowIndexesAllowBriefContext = new ShowIndexesAllowBriefContext(this, this._ctx, this.state);
		this.enterRule(localctx, 318, CypherCmdParser.RULE_showIndexesAllowBrief);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2066;
			this.indexToken();
			this.state = 2068;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===41 || ((((_la - 295)) & ~0x1F) === 0 && ((1 << (_la - 295)) & 529) !== 0)) {
				{
				this.state = 2067;
				this.showBriefAndYield();
				}
			}

			this.state = 2071;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2070;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showIndexesNoBrief(): ShowIndexesNoBriefContext {
		let localctx: ShowIndexesNoBriefContext = new ShowIndexesNoBriefContext(this, this._ctx, this.state);
		this.enterRule(localctx, 320, CypherCmdParser.RULE_showIndexesNoBrief);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2073;
			this.indexToken();
			this.state = 2075;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2074;
				this.showCommandYield();
				}
			}

			this.state = 2078;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2077;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showConstraintCommand(): ShowConstraintCommandContext {
		let localctx: ShowConstraintCommandContext = new ShowConstraintCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 322, CypherCmdParser.RULE_showConstraintCommand);
		let _la: number;
		try {
			this.state = 2106;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 222, this._ctx) ) {
			case 1:
				localctx = new ShowConstraintMultiContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2081;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===175 || _la===222 || _la===223) {
					{
					this.state = 2080;
					_la = this._input.LA(1);
					if(!(_la===175 || _la===222 || _la===223)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2083;
				this.constraintAllowYieldType();
				this.state = 2084;
				this.showConstraintsAllowYield();
				}
				break;
			case 2:
				localctx = new ShowConstraintUniqueContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2086;
				_la = this._input.LA(1);
				if(!(_la===175 || _la===222 || _la===223)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2087;
				this.match(CypherCmdParser.UNIQUE);
				this.state = 2088;
				this.showConstraintsAllowYield();
				}
				break;
			case 3:
				localctx = new ShowConstraintKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2090;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===222 || _la===223) {
					{
					this.state = 2089;
					_la = this._input.LA(1);
					if(!(_la===222 || _la===223)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2092;
				this.match(CypherCmdParser.KEY);
				this.state = 2093;
				this.showConstraintsAllowYield();
				}
				break;
			case 4:
				localctx = new ShowConstraintRelExistContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2094;
				this.match(CypherCmdParser.REL);
				this.state = 2095;
				this.match(CypherCmdParser.EXIST);
				this.state = 2096;
				this.showConstraintsAllowYield();
				}
				break;
			case 5:
				localctx = new ShowConstraintOldExistsContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2098;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===175 || _la===223) {
					{
					this.state = 2097;
					_la = this._input.LA(1);
					if(!(_la===175 || _la===223)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2100;
				this.match(CypherCmdParser.EXISTS);
				this.state = 2101;
				this.showConstraintsAllowBrief();
				}
				break;
			case 6:
				localctx = new ShowConstraintBriefAndYieldContext(this, localctx);
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2103;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===23 || _la===106 || _la===175 || _la===223 || _la===284) {
					{
					this.state = 2102;
					this.constraintBriefAndYieldType();
					}
				}

				this.state = 2105;
				this.showConstraintsAllowBriefAndYield();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public constraintAllowYieldType(): ConstraintAllowYieldTypeContext {
		let localctx: ConstraintAllowYieldTypeContext = new ConstraintAllowYieldTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 324, CypherCmdParser.RULE_constraintAllowYieldType);
		try {
			this.state = 2112;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 223, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2108;
				this.match(CypherCmdParser.UNIQUENESS);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2109;
				this.constraintExistType();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2110;
				this.match(CypherCmdParser.PROPERTY);
				this.state = 2111;
				this.match(CypherCmdParser.TYPE);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public constraintExistType(): ConstraintExistTypeContext {
		let localctx: ConstraintExistTypeContext = new ConstraintExistTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 326, CypherCmdParser.RULE_constraintExistType);
		try {
			this.state = 2119;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 224, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2114;
				this.match(CypherCmdParser.EXISTENCE);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2115;
				this.match(CypherCmdParser.PROPERTY);
				this.state = 2116;
				this.match(CypherCmdParser.EXISTENCE);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2117;
				this.match(CypherCmdParser.PROPERTY);
				this.state = 2118;
				this.match(CypherCmdParser.EXIST);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public constraintBriefAndYieldType(): ConstraintBriefAndYieldTypeContext {
		let localctx: ConstraintBriefAndYieldTypeContext = new ConstraintBriefAndYieldTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 328, CypherCmdParser.RULE_constraintBriefAndYieldType);
		try {
			this.state = 2130;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 225, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2121;
				this.match(CypherCmdParser.ALL);
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2122;
				this.match(CypherCmdParser.UNIQUE);
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2123;
				this.match(CypherCmdParser.EXIST);
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2124;
				this.match(CypherCmdParser.NODE);
				this.state = 2125;
				this.match(CypherCmdParser.KEY);
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2126;
				this.match(CypherCmdParser.NODE);
				this.state = 2127;
				this.match(CypherCmdParser.EXIST);
				}
				break;
			case 6:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2128;
				this.match(CypherCmdParser.RELATIONSHIP);
				this.state = 2129;
				this.match(CypherCmdParser.EXIST);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showConstraintsAllowBriefAndYield(): ShowConstraintsAllowBriefAndYieldContext {
		let localctx: ShowConstraintsAllowBriefAndYieldContext = new ShowConstraintsAllowBriefAndYieldContext(this, this._ctx, this.state);
		this.enterRule(localctx, 330, CypherCmdParser.RULE_showConstraintsAllowBriefAndYield);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2132;
			this.constraintToken();
			this.state = 2134;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===41 || ((((_la - 295)) & ~0x1F) === 0 && ((1 << (_la - 295)) & 529) !== 0)) {
				{
				this.state = 2133;
				this.showBriefAndYield();
				}
			}

			this.state = 2137;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2136;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showConstraintsAllowBrief(): ShowConstraintsAllowBriefContext {
		let localctx: ShowConstraintsAllowBriefContext = new ShowConstraintsAllowBriefContext(this, this._ctx, this.state);
		this.enterRule(localctx, 332, CypherCmdParser.RULE_showConstraintsAllowBrief);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2139;
			this.constraintToken();
			this.state = 2144;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===41 || _la===295) {
				{
				this.state = 2140;
				_la = this._input.LA(1);
				if(!(_la===41 || _la===295)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2142;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===193) {
					{
					this.state = 2141;
					this.match(CypherCmdParser.OUTPUT);
					}
				}

				}
			}

			this.state = 2147;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2146;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showConstraintsAllowYield(): ShowConstraintsAllowYieldContext {
		let localctx: ShowConstraintsAllowYieldContext = new ShowConstraintsAllowYieldContext(this, this._ctx, this.state);
		this.enterRule(localctx, 334, CypherCmdParser.RULE_showConstraintsAllowYield);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2149;
			this.constraintToken();
			this.state = 2151;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2150;
				this.showCommandYield();
				}
			}

			this.state = 2154;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2153;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showProcedures(): ShowProceduresContext {
		let localctx: ShowProceduresContext = new ShowProceduresContext(this, this._ctx, this.state);
		this.enterRule(localctx, 336, CypherCmdParser.RULE_showProcedures);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2156;
			_la = this._input.LA(1);
			if(!(_la===209 || _la===210)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2158;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===104) {
				{
				this.state = 2157;
				this.executableBy();
				}
			}

			this.state = 2161;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2160;
				this.showCommandYield();
				}
			}

			this.state = 2164;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2163;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showFunctions(): ShowFunctionsContext {
		let localctx: ShowFunctionsContext = new ShowFunctionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 338, CypherCmdParser.RULE_showFunctions);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2167;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===23 || _la===43 || _la===289) {
				{
				this.state = 2166;
				this.showFunctionsType();
				}
			}

			this.state = 2169;
			this.functionToken();
			this.state = 2171;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===104) {
				{
				this.state = 2170;
				this.executableBy();
				}
			}

			this.state = 2174;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2173;
				this.showCommandYield();
				}
			}

			this.state = 2177;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2176;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public functionToken(): FunctionTokenContext {
		let localctx: FunctionTokenContext = new FunctionTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 340, CypherCmdParser.RULE_functionToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2179;
			_la = this._input.LA(1);
			if(!(_la===119 || _la===120)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public executableBy(): ExecutableByContext {
		let localctx: ExecutableByContext = new ExecutableByContext(this, this._ctx, this.state);
		this.enterRule(localctx, 342, CypherCmdParser.RULE_executableBy);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2181;
			this.match(CypherCmdParser.EXECUTABLE);
			this.state = 2188;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===44) {
				{
				this.state = 2182;
				this.match(CypherCmdParser.BY);
				this.state = 2186;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 240, this._ctx) ) {
				case 1:
					{
					this.state = 2183;
					this.match(CypherCmdParser.CURRENT);
					this.state = 2184;
					this.match(CypherCmdParser.USER);
					}
					break;
				case 2:
					{
					this.state = 2185;
					this.symbolicNameString();
					}
					break;
				}
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showFunctionsType(): ShowFunctionsTypeContext {
		let localctx: ShowFunctionsTypeContext = new ShowFunctionsTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 344, CypherCmdParser.RULE_showFunctionsType);
		try {
			this.state = 2195;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 23:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2190;
				this.match(CypherCmdParser.ALL);
				}
				break;
			case 43:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2191;
				this.match(CypherCmdParser.BUILT);
				this.state = 2192;
				this.match(CypherCmdParser.IN);
				}
				break;
			case 289:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2193;
				this.match(CypherCmdParser.USER);
				this.state = 2194;
				this.match(CypherCmdParser.DEFINED);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showTransactions(): ShowTransactionsContext {
		let localctx: ShowTransactionsContext = new ShowTransactionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 346, CypherCmdParser.RULE_showTransactions);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2197;
			this.transactionToken();
			this.state = 2198;
			this.namesAndClauses();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public terminateCommand(): TerminateCommandContext {
		let localctx: TerminateCommandContext = new TerminateCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 348, CypherCmdParser.RULE_terminateCommand);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2200;
			this.match(CypherCmdParser.TERMINATE);
			this.state = 2201;
			this.terminateTransactions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public terminateTransactions(): TerminateTransactionsContext {
		let localctx: TerminateTransactionsContext = new TerminateTransactionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 350, CypherCmdParser.RULE_terminateTransactions);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2203;
			this.transactionToken();
			this.state = 2204;
			this.namesAndClauses();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showSettings(): ShowSettingsContext {
		let localctx: ShowSettingsContext = new ShowSettingsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 352, CypherCmdParser.RULE_showSettings);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2206;
			this.settingToken();
			this.state = 2207;
			this.namesAndClauses();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public settingToken(): SettingTokenContext {
		let localctx: SettingTokenContext = new SettingTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 354, CypherCmdParser.RULE_settingToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2209;
			_la = this._input.LA(1);
			if(!(_la===249 || _la===250)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public namesAndClauses(): NamesAndClausesContext {
		let localctx: NamesAndClausesContext = new NamesAndClausesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 356, CypherCmdParser.RULE_namesAndClauses);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2218;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 245, this._ctx) ) {
			case 1:
				{
				this.state = 2212;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299 || _la===304) {
					{
					this.state = 2211;
					this.showCommandYield();
					}
				}

				}
				break;
			case 2:
				{
				this.state = 2214;
				this.stringsOrExpression();
				this.state = 2216;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299 || _la===304) {
					{
					this.state = 2215;
					this.showCommandYield();
					}
				}

				}
				break;
			}
			this.state = 2221;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===253 || _la===265) {
				{
				this.state = 2220;
				this.composableCommandClauses();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public composableCommandClauses(): ComposableCommandClausesContext {
		let localctx: ComposableCommandClausesContext = new ComposableCommandClausesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 358, CypherCmdParser.RULE_composableCommandClauses);
		try {
			this.state = 2225;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 265:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2223;
				this.terminateCommand();
				}
				break;
			case 253:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2224;
				this.composableShowCommandClauses();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public composableShowCommandClauses(): ComposableShowCommandClausesContext {
		let localctx: ComposableShowCommandClausesContext = new ComposableShowCommandClausesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 360, CypherCmdParser.RULE_composableShowCommandClauses);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2227;
			this.match(CypherCmdParser.SHOW);
			this.state = 2234;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 248, this._ctx) ) {
			case 1:
				{
				this.state = 2228;
				this.showIndexCommand();
				}
				break;
			case 2:
				{
				this.state = 2229;
				this.showConstraintCommand();
				}
				break;
			case 3:
				{
				this.state = 2230;
				this.showFunctions();
				}
				break;
			case 4:
				{
				this.state = 2231;
				this.showProcedures();
				}
				break;
			case 5:
				{
				this.state = 2232;
				this.showSettings();
				}
				break;
			case 6:
				{
				this.state = 2233;
				this.showTransactions();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stringsOrExpression(): StringsOrExpressionContext {
		let localctx: StringsOrExpressionContext = new StringsOrExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 362, CypherCmdParser.RULE_stringsOrExpression);
		try {
			this.state = 2238;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 249, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2236;
				this.stringList();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2237;
				this.expression();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public type_(): TypeContext {
		let localctx: TypeContext = new TypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 364, CypherCmdParser.RULE_type);
		try {
			let _alt: number;
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2240;
			this.typePart();
			this.state = 2245;
			this._errHandler.sync(this);
			_alt = this._interp.adaptivePredict(this._input, 250, this._ctx);
			while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) {
				if (_alt === 1) {
					{
					{
					this.state = 2241;
					this.match(CypherCmdParser.BAR);
					this.state = 2242;
					this.typePart();
					}
					}
				}
				this.state = 2247;
				this._errHandler.sync(this);
				_alt = this._interp.adaptivePredict(this._input, 250, this._ctx);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public typePart(): TypePartContext {
		let localctx: TypePartContext = new TypePartContext(this, this._ctx, this.state);
		this.enterRule(localctx, 366, CypherCmdParser.RULE_typePart);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2248;
			this.typeName();
			this.state = 2250;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===147 || _la===181) {
				{
				this.state = 2249;
				this.typeNullability();
				}
			}

			this.state = 2255;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===27 || _la===153) {
				{
				{
				this.state = 2252;
				this.typeListSuffix();
				}
				}
				this.state = 2257;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public typeName(): TypeNameContext {
		let localctx: TypeNameContext = new TypeNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 368, CypherCmdParser.RULE_typeName);
		let _la: number;
		try {
			this.state = 2323;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 182:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2258;
				this.match(CypherCmdParser.NOTHING);
				}
				break;
			case 184:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2259;
				this.match(CypherCmdParser.NULL);
				}
				break;
			case 36:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2260;
				this.match(CypherCmdParser.BOOL);
				}
				break;
			case 37:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2261;
				this.match(CypherCmdParser.BOOLEAN);
				}
				break;
			case 293:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2262;
				this.match(CypherCmdParser.VARCHAR);
				}
				break;
			case 261:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2263;
				this.match(CypherCmdParser.STRING);
				}
				break;
			case 139:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 2264;
				this.match(CypherCmdParser.INT);
				}
				break;
			case 140:
			case 254:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 2266;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===254) {
					{
					this.state = 2265;
					this.match(CypherCmdParser.SIGNED);
					}
				}

				this.state = 2268;
				this.match(CypherCmdParser.INTEGER);
				}
				break;
			case 114:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 2269;
				this.match(CypherCmdParser.FLOAT);
				}
				break;
			case 70:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 2270;
				this.match(CypherCmdParser.DATE);
				}
				break;
			case 155:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 2271;
				this.match(CypherCmdParser.LOCAL);
				this.state = 2272;
				_la = this._input.LA(1);
				if(!(_la===71 || _la===268)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 305:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 2273;
				this.match(CypherCmdParser.ZONED);
				this.state = 2274;
				_la = this._input.LA(1);
				if(!(_la===71 || _la===268)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 268:
				this.enterOuterAlt(localctx, 13);
				{
				this.state = 2275;
				this.match(CypherCmdParser.TIME);
				this.state = 2280;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 301:
					{
					this.state = 2276;
					this.match(CypherCmdParser.WITHOUT);
					this.state = 2277;
					this.match(CypherCmdParser.TIMEZONE);
					}
					break;
				case 300:
					{
					this.state = 2278;
					this.match(CypherCmdParser.WITH);
					this.state = 2279;
					this.match(CypherCmdParser.TIMEZONE);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 270:
				this.enterOuterAlt(localctx, 14);
				{
				this.state = 2282;
				this.match(CypherCmdParser.TIMESTAMP);
				this.state = 2287;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 301:
					{
					this.state = 2283;
					this.match(CypherCmdParser.WITHOUT);
					this.state = 2284;
					this.match(CypherCmdParser.TIMEZONE);
					}
					break;
				case 300:
					{
					this.state = 2285;
					this.match(CypherCmdParser.WITH);
					this.state = 2286;
					this.match(CypherCmdParser.TIMEZONE);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 93:
				this.enterOuterAlt(localctx, 15);
				{
				this.state = 2289;
				this.match(CypherCmdParser.DURATION);
				}
				break;
			case 202:
				this.enterOuterAlt(localctx, 16);
				{
				this.state = 2290;
				this.match(CypherCmdParser.POINT);
				}
				break;
			case 175:
				this.enterOuterAlt(localctx, 17);
				{
				this.state = 2291;
				this.match(CypherCmdParser.NODE);
				}
				break;
			case 296:
				this.enterOuterAlt(localctx, 18);
				{
				this.state = 2292;
				this.match(CypherCmdParser.VERTEX);
				}
				break;
			case 223:
				this.enterOuterAlt(localctx, 19);
				{
				this.state = 2293;
				this.match(CypherCmdParser.RELATIONSHIP);
				}
				break;
			case 95:
				this.enterOuterAlt(localctx, 20);
				{
				this.state = 2294;
				this.match(CypherCmdParser.EDGE);
				}
				break;
			case 160:
				this.enterOuterAlt(localctx, 21);
				{
				this.state = 2295;
				this.match(CypherCmdParser.MAP);
				}
				break;
			case 27:
			case 153:
				this.enterOuterAlt(localctx, 22);
				{
				this.state = 2296;
				_la = this._input.LA(1);
				if(!(_la===27 || _la===153)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2297;
				this.match(CypherCmdParser.LT);
				this.state = 2298;
				this.type_();
				this.state = 2299;
				this.match(CypherCmdParser.GT);
				}
				break;
			case 196:
				this.enterOuterAlt(localctx, 23);
				{
				this.state = 2301;
				this.match(CypherCmdParser.PATH);
				}
				break;
			case 197:
				this.enterOuterAlt(localctx, 24);
				{
				this.state = 2302;
				this.match(CypherCmdParser.PATHS);
				}
				break;
			case 212:
				this.enterOuterAlt(localctx, 25);
				{
				this.state = 2303;
				this.match(CypherCmdParser.PROPERTY);
				this.state = 2304;
				this.match(CypherCmdParser.VALUE);
				}
				break;
			case 26:
				this.enterOuterAlt(localctx, 26);
				{
				this.state = 2305;
				this.match(CypherCmdParser.ANY);
				this.state = 2321;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 257, this._ctx) ) {
				case 1:
					{
					this.state = 2306;
					this.match(CypherCmdParser.NODE);
					}
					break;
				case 2:
					{
					this.state = 2307;
					this.match(CypherCmdParser.VERTEX);
					}
					break;
				case 3:
					{
					this.state = 2308;
					this.match(CypherCmdParser.RELATIONSHIP);
					}
					break;
				case 4:
					{
					this.state = 2309;
					this.match(CypherCmdParser.EDGE);
					}
					break;
				case 5:
					{
					this.state = 2310;
					this.match(CypherCmdParser.MAP);
					}
					break;
				case 6:
					{
					this.state = 2311;
					this.match(CypherCmdParser.PROPERTY);
					this.state = 2312;
					this.match(CypherCmdParser.VALUE);
					}
					break;
				case 7:
					{
					this.state = 2314;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===292) {
						{
						this.state = 2313;
						this.match(CypherCmdParser.VALUE);
						}
					}

					this.state = 2316;
					this.match(CypherCmdParser.LT);
					this.state = 2317;
					this.type_();
					this.state = 2318;
					this.match(CypherCmdParser.GT);
					}
					break;
				case 8:
					{
					this.state = 2320;
					this.match(CypherCmdParser.VALUE);
					}
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public typeNullability(): TypeNullabilityContext {
		let localctx: TypeNullabilityContext = new TypeNullabilityContext(this, this._ctx, this.state);
		this.enterRule(localctx, 370, CypherCmdParser.RULE_typeNullability);
		try {
			this.state = 2328;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 181:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2325;
				this.match(CypherCmdParser.NOT);
				this.state = 2326;
				this.match(CypherCmdParser.NULL);
				}
				break;
			case 147:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2327;
				this.match(CypherCmdParser.EXCLAMATION_MARK);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public typeListSuffix(): TypeListSuffixContext {
		let localctx: TypeListSuffixContext = new TypeListSuffixContext(this, this._ctx, this.state);
		this.enterRule(localctx, 372, CypherCmdParser.RULE_typeListSuffix);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2330;
			_la = this._input.LA(1);
			if(!(_la===27 || _la===153)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2332;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===147 || _la===181) {
				{
				this.state = 2331;
				this.typeNullability();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public commandNodePattern(): CommandNodePatternContext {
		let localctx: CommandNodePatternContext = new CommandNodePatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 374, CypherCmdParser.RULE_commandNodePattern);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2334;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2335;
			this.variable();
			this.state = 2336;
			this.labelType();
			this.state = 2337;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public commandRelPattern(): CommandRelPatternContext {
		let localctx: CommandRelPatternContext = new CommandRelPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 376, CypherCmdParser.RULE_commandRelPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2339;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2340;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2342;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===158 || _la===308) {
				{
				this.state = 2341;
				this.leftArrow();
				}
			}

			this.state = 2344;
			this.arrowLine();
			this.state = 2345;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 2346;
			this.variable();
			this.state = 2347;
			this.relType();
			this.state = 2348;
			this.match(CypherCmdParser.RBRACKET);
			this.state = 2349;
			this.arrowLine();
			this.state = 2351;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===127 || _la===309) {
				{
				this.state = 2350;
				this.rightArrow();
				}
			}

			this.state = 2353;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2354;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createConstraint(): CreateConstraintContext {
		let localctx: CreateConstraintContext = new CreateConstraintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 378, CypherCmdParser.RULE_createConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2356;
			this.match(CypherCmdParser.CONSTRAINT);
			this.state = 2358;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 263, this._ctx) ) {
			case 1:
				{
				this.state = 2357;
				this.symbolicNameOrStringParameter();
				}
				break;
			}
			this.state = 2363;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2360;
				this.match(CypherCmdParser.IF);
				this.state = 2361;
				this.match(CypherCmdParser.NOT);
				this.state = 2362;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2365;
			_la = this._input.LA(1);
			if(!(_la===115 || _la===186)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2368;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 265, this._ctx) ) {
			case 1:
				{
				this.state = 2366;
				this.commandNodePattern();
				}
				break;
			case 2:
				{
				this.state = 2367;
				this.commandRelPattern();
				}
				break;
			}
			this.state = 2370;
			this.constraintType();
			this.state = 2372;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 2371;
				this.commandOptions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public constraintType(): ConstraintTypeContext {
		let localctx: ConstraintTypeContext = new ConstraintTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 380, CypherCmdParser.RULE_constraintType);
		let _la: number;
		try {
			this.state = 2408;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 270, this._ctx) ) {
			case 1:
				localctx = new ConstraintExistsContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2374;
				this.match(CypherCmdParser.ASSERT);
				this.state = 2375;
				this.match(CypherCmdParser.EXISTS);
				this.state = 2376;
				this.propertyList();
				}
				break;
			case 2:
				localctx = new ConstraintTypedContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2377;
				_la = this._input.LA(1);
				if(!(_la===31 || _la===229)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2378;
				this.propertyList();
				this.state = 2382;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 51:
					{
					this.state = 2379;
					this.match(CypherCmdParser.COLONCOLON);
					}
					break;
				case 141:
					{
					this.state = 2380;
					this.match(CypherCmdParser.IS);
					this.state = 2381;
					_la = this._input.LA(1);
					if(!(_la===51 || _la===281)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 2384;
				this.type_();
				}
				break;
			case 3:
				localctx = new ConstraintIsUniqueContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2386;
				_la = this._input.LA(1);
				if(!(_la===31 || _la===229)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2387;
				this.propertyList();
				this.state = 2388;
				this.match(CypherCmdParser.IS);
				this.state = 2390;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===175 || _la===222 || _la===223) {
					{
					this.state = 2389;
					_la = this._input.LA(1);
					if(!(_la===175 || _la===222 || _la===223)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2392;
				this.match(CypherCmdParser.UNIQUE);
				}
				break;
			case 4:
				localctx = new ConstraintKeyContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2394;
				_la = this._input.LA(1);
				if(!(_la===31 || _la===229)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2395;
				this.propertyList();
				this.state = 2396;
				this.match(CypherCmdParser.IS);
				this.state = 2398;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===175 || _la===222 || _la===223) {
					{
					this.state = 2397;
					_la = this._input.LA(1);
					if(!(_la===175 || _la===222 || _la===223)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2400;
				this.match(CypherCmdParser.KEY);
				}
				break;
			case 5:
				localctx = new ConstraintIsNotNullContext(this, localctx);
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2402;
				_la = this._input.LA(1);
				if(!(_la===31 || _la===229)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2403;
				this.propertyList();
				this.state = 2404;
				this.match(CypherCmdParser.IS);
				this.state = 2405;
				this.match(CypherCmdParser.NOT);
				this.state = 2406;
				this.match(CypherCmdParser.NULL);
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropConstraint(): DropConstraintContext {
		let localctx: DropConstraintContext = new DropConstraintContext(this, this._ctx, this.state);
		this.enterRule(localctx, 382, CypherCmdParser.RULE_dropConstraint);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2410;
			this.match(CypherCmdParser.CONSTRAINT);
			this.state = 2435;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 275, this._ctx) ) {
			case 1:
				{
				this.state = 2411;
				this.match(CypherCmdParser.ON);
				this.state = 2414;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 271, this._ctx) ) {
				case 1:
					{
					this.state = 2412;
					this.commandNodePattern();
					}
					break;
				case 2:
					{
					this.state = 2413;
					this.commandRelPattern();
					}
					break;
				}
				this.state = 2416;
				this.match(CypherCmdParser.ASSERT);
				this.state = 2428;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 273, this._ctx) ) {
				case 1:
					{
					this.state = 2417;
					this.match(CypherCmdParser.EXISTS);
					this.state = 2418;
					this.propertyList();
					}
					break;
				case 2:
					{
					this.state = 2419;
					this.propertyList();
					this.state = 2420;
					this.match(CypherCmdParser.IS);
					this.state = 2426;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 284:
						{
						this.state = 2421;
						this.match(CypherCmdParser.UNIQUE);
						}
						break;
					case 175:
						{
						this.state = 2422;
						this.match(CypherCmdParser.NODE);
						this.state = 2423;
						this.match(CypherCmdParser.KEY);
						}
						break;
					case 181:
						{
						this.state = 2424;
						this.match(CypherCmdParser.NOT);
						this.state = 2425;
						this.match(CypherCmdParser.NULL);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				}
				}
				break;
			case 2:
				{
				this.state = 2430;
				this.symbolicNameOrStringParameter();
				this.state = 2433;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===130) {
					{
					this.state = 2431;
					this.match(CypherCmdParser.IF);
					this.state = 2432;
					this.match(CypherCmdParser.EXISTS);
					}
				}

				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createIndex(): CreateIndexContext {
		let localctx: CreateIndexContext = new CreateIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 384, CypherCmdParser.RULE_createIndex);
		try {
			this.state = 2464;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 42:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2437;
				this.match(CypherCmdParser.BTREE);
				this.state = 2438;
				this.match(CypherCmdParser.INDEX);
				this.state = 2439;
				this.createIndex_();
				}
				break;
			case 214:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2440;
				this.match(CypherCmdParser.RANGE);
				this.state = 2441;
				this.match(CypherCmdParser.INDEX);
				this.state = 2442;
				this.createIndex_();
				}
				break;
			case 266:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2443;
				this.match(CypherCmdParser.TEXT);
				this.state = 2444;
				this.match(CypherCmdParser.INDEX);
				this.state = 2445;
				this.createIndex_();
				}
				break;
			case 202:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2446;
				this.match(CypherCmdParser.POINT);
				this.state = 2447;
				this.match(CypherCmdParser.INDEX);
				this.state = 2448;
				this.createIndex_();
				}
				break;
			case 294:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2449;
				this.match(CypherCmdParser.VECTOR);
				this.state = 2450;
				this.match(CypherCmdParser.INDEX);
				this.state = 2451;
				this.createIndex_();
				}
				break;
			case 156:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2452;
				this.match(CypherCmdParser.LOOKUP);
				this.state = 2453;
				this.match(CypherCmdParser.INDEX);
				this.state = 2454;
				this.createLookupIndex();
				}
				break;
			case 118:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 2455;
				this.match(CypherCmdParser.FULLTEXT);
				this.state = 2456;
				this.match(CypherCmdParser.INDEX);
				this.state = 2457;
				this.createFulltextIndex();
				}
				break;
			case 134:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 2458;
				this.match(CypherCmdParser.INDEX);
				this.state = 2462;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 276, this._ctx) ) {
				case 1:
					{
					this.state = 2459;
					this.match(CypherCmdParser.ON);
					this.state = 2460;
					this.oldCreateIndex();
					}
					break;
				case 2:
					{
					this.state = 2461;
					this.createIndex_();
					}
					break;
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public oldCreateIndex(): OldCreateIndexContext {
		let localctx: OldCreateIndexContext = new OldCreateIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 386, CypherCmdParser.RULE_oldCreateIndex);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2466;
			this.labelType();
			this.state = 2467;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2468;
			this.nonEmptyNameList();
			this.state = 2469;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createIndex_(): CreateIndex_Context {
		let localctx: CreateIndex_Context = new CreateIndex_Context(this, this._ctx, this.state);
		this.enterRule(localctx, 388, CypherCmdParser.RULE_createIndex_);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2472;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 278, this._ctx) ) {
			case 1:
				{
				this.state = 2471;
				this.symbolicNameOrStringParameter();
				}
				break;
			}
			this.state = 2477;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2474;
				this.match(CypherCmdParser.IF);
				this.state = 2475;
				this.match(CypherCmdParser.NOT);
				this.state = 2476;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2479;
			this.match(CypherCmdParser.FOR);
			this.state = 2482;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 280, this._ctx) ) {
			case 1:
				{
				this.state = 2480;
				this.commandNodePattern();
				}
				break;
			case 2:
				{
				this.state = 2481;
				this.commandRelPattern();
				}
				break;
			}
			this.state = 2484;
			this.match(CypherCmdParser.ON);
			this.state = 2485;
			this.propertyList();
			this.state = 2487;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 2486;
				this.commandOptions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createFulltextIndex(): CreateFulltextIndexContext {
		let localctx: CreateFulltextIndexContext = new CreateFulltextIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 390, CypherCmdParser.RULE_createFulltextIndex);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2490;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 282, this._ctx) ) {
			case 1:
				{
				this.state = 2489;
				this.symbolicNameOrStringParameter();
				}
				break;
			}
			this.state = 2495;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2492;
				this.match(CypherCmdParser.IF);
				this.state = 2493;
				this.match(CypherCmdParser.NOT);
				this.state = 2494;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2497;
			this.match(CypherCmdParser.FOR);
			this.state = 2500;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 284, this._ctx) ) {
			case 1:
				{
				this.state = 2498;
				this.fulltextNodePattern();
				}
				break;
			case 2:
				{
				this.state = 2499;
				this.fulltextRelPattern();
				}
				break;
			}
			this.state = 2502;
			this.match(CypherCmdParser.ON);
			this.state = 2503;
			this.match(CypherCmdParser.EACH);
			this.state = 2504;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 2505;
			this.variable();
			this.state = 2506;
			this.property();
			this.state = 2513;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 2507;
				this.match(CypherCmdParser.COMMA);
				this.state = 2508;
				this.variable();
				this.state = 2509;
				this.property();
				}
				}
				this.state = 2515;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2516;
			this.match(CypherCmdParser.RBRACKET);
			this.state = 2518;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 2517;
				this.commandOptions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public fulltextNodePattern(): FulltextNodePatternContext {
		let localctx: FulltextNodePatternContext = new FulltextNodePatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 392, CypherCmdParser.RULE_fulltextNodePattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2520;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2521;
			this.variable();
			this.state = 2522;
			this.match(CypherCmdParser.COLON);
			this.state = 2523;
			this.symbolicNameString();
			this.state = 2528;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===34) {
				{
				{
				this.state = 2524;
				this.match(CypherCmdParser.BAR);
				this.state = 2525;
				this.symbolicNameString();
				}
				}
				this.state = 2530;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2531;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public fulltextRelPattern(): FulltextRelPatternContext {
		let localctx: FulltextRelPatternContext = new FulltextRelPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 394, CypherCmdParser.RULE_fulltextRelPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2533;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2534;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2536;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===158 || _la===308) {
				{
				this.state = 2535;
				this.leftArrow();
				}
			}

			this.state = 2538;
			this.arrowLine();
			this.state = 2539;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 2540;
			this.variable();
			this.state = 2541;
			this.match(CypherCmdParser.COLON);
			this.state = 2542;
			this.symbolicNameString();
			this.state = 2547;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===34) {
				{
				{
				this.state = 2543;
				this.match(CypherCmdParser.BAR);
				this.state = 2544;
				this.symbolicNameString();
				}
				}
				this.state = 2549;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			this.state = 2550;
			this.match(CypherCmdParser.RBRACKET);
			this.state = 2551;
			this.arrowLine();
			this.state = 2553;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===127 || _la===309) {
				{
				this.state = 2552;
				this.rightArrow();
				}
			}

			this.state = 2555;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2556;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createLookupIndex(): CreateLookupIndexContext {
		let localctx: CreateLookupIndexContext = new CreateLookupIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 396, CypherCmdParser.RULE_createLookupIndex);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2559;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 291, this._ctx) ) {
			case 1:
				{
				this.state = 2558;
				this.symbolicNameOrStringParameter();
				}
				break;
			}
			this.state = 2564;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2561;
				this.match(CypherCmdParser.IF);
				this.state = 2562;
				this.match(CypherCmdParser.NOT);
				this.state = 2563;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2566;
			this.match(CypherCmdParser.FOR);
			this.state = 2569;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 293, this._ctx) ) {
			case 1:
				{
				this.state = 2567;
				this.lookupIndexNodePattern();
				}
				break;
			case 2:
				{
				this.state = 2568;
				this.lookupIndexRelPattern();
				}
				break;
			}
			this.state = 2571;
			this.symbolicNameString();
			this.state = 2572;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2573;
			this.variable();
			this.state = 2574;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2576;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 2575;
				this.commandOptions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lookupIndexNodePattern(): LookupIndexNodePatternContext {
		let localctx: LookupIndexNodePatternContext = new LookupIndexNodePatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 398, CypherCmdParser.RULE_lookupIndexNodePattern);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2578;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2579;
			this.variable();
			this.state = 2580;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2581;
			this.match(CypherCmdParser.ON);
			this.state = 2582;
			this.match(CypherCmdParser.EACH);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public lookupIndexRelPattern(): LookupIndexRelPatternContext {
		let localctx: LookupIndexRelPatternContext = new LookupIndexRelPatternContext(this, this._ctx, this.state);
		this.enterRule(localctx, 400, CypherCmdParser.RULE_lookupIndexRelPattern);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2584;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2585;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2587;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===158 || _la===308) {
				{
				this.state = 2586;
				this.leftArrow();
				}
			}

			this.state = 2589;
			this.arrowLine();
			this.state = 2590;
			this.match(CypherCmdParser.LBRACKET);
			this.state = 2591;
			this.variable();
			this.state = 2592;
			this.match(CypherCmdParser.RBRACKET);
			this.state = 2593;
			this.arrowLine();
			this.state = 2595;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===127 || _la===309) {
				{
				this.state = 2594;
				this.rightArrow();
				}
			}

			this.state = 2597;
			this.match(CypherCmdParser.LPAREN);
			this.state = 2598;
			this.match(CypherCmdParser.RPAREN);
			this.state = 2599;
			this.match(CypherCmdParser.ON);
			this.state = 2601;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 297, this._ctx) ) {
			case 1:
				{
				this.state = 2600;
				this.match(CypherCmdParser.EACH);
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropIndex(): DropIndexContext {
		let localctx: DropIndexContext = new DropIndexContext(this, this._ctx, this.state);
		this.enterRule(localctx, 402, CypherCmdParser.RULE_dropIndex);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2603;
			this.match(CypherCmdParser.INDEX);
			this.state = 2615;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 299, this._ctx) ) {
			case 1:
				{
				this.state = 2604;
				this.match(CypherCmdParser.ON);
				this.state = 2605;
				this.labelType();
				this.state = 2606;
				this.match(CypherCmdParser.LPAREN);
				this.state = 2607;
				this.nonEmptyNameList();
				this.state = 2608;
				this.match(CypherCmdParser.RPAREN);
				}
				break;
			case 2:
				{
				this.state = 2610;
				this.symbolicNameOrStringParameter();
				this.state = 2613;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===130) {
					{
					this.state = 2611;
					this.match(CypherCmdParser.IF);
					this.state = 2612;
					this.match(CypherCmdParser.EXISTS);
					}
				}

				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public propertyList(): PropertyListContext {
		let localctx: PropertyListContext = new PropertyListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 404, CypherCmdParser.RULE_propertyList);
		let _la: number;
		try {
			this.state = 2634;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2617;
				this.variable();
				this.state = 2618;
				this.property();
				}
				break;
			case 157:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2620;
				this.match(CypherCmdParser.LPAREN);
				this.state = 2621;
				this.variable();
				this.state = 2622;
				this.property();
				this.state = 2629;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 2623;
					this.match(CypherCmdParser.COMMA);
					this.state = 2624;
					this.variable();
					this.state = 2625;
					this.property();
					}
					}
					this.state = 2631;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				this.state = 2632;
				this.match(CypherCmdParser.RPAREN);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public enableServerCommand(): EnableServerCommandContext {
		let localctx: EnableServerCommandContext = new EnableServerCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 406, CypherCmdParser.RULE_enableServerCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2636;
			this.match(CypherCmdParser.ENABLE);
			this.state = 2637;
			this.match(CypherCmdParser.SERVER);
			this.state = 2638;
			this.stringOrParameter();
			this.state = 2640;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 2639;
				this.commandOptions();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterServer(): AlterServerContext {
		let localctx: AlterServerContext = new AlterServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 408, CypherCmdParser.RULE_alterServer);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2642;
			this.match(CypherCmdParser.SERVER);
			this.state = 2643;
			this.stringOrParameter();
			this.state = 2644;
			this.match(CypherCmdParser.SET);
			this.state = 2645;
			this.commandOptions();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public renameServer(): RenameServerContext {
		let localctx: RenameServerContext = new RenameServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 410, CypherCmdParser.RULE_renameServer);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2647;
			this.match(CypherCmdParser.SERVER);
			this.state = 2648;
			this.stringOrParameter();
			this.state = 2649;
			this.match(CypherCmdParser.TO);
			this.state = 2650;
			this.stringOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropServer(): DropServerContext {
		let localctx: DropServerContext = new DropServerContext(this, this._ctx, this.state);
		this.enterRule(localctx, 412, CypherCmdParser.RULE_dropServer);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2652;
			this.match(CypherCmdParser.SERVER);
			this.state = 2653;
			this.stringOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showServers(): ShowServersContext {
		let localctx: ShowServersContext = new ShowServersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 414, CypherCmdParser.RULE_showServers);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2655;
			_la = this._input.LA(1);
			if(!(_la===246 || _la===247)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2657;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2656;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public allocationCommand(): AllocationCommandContext {
		let localctx: AllocationCommandContext = new AllocationCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 416, CypherCmdParser.RULE_allocationCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2660;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===91) {
				{
				this.state = 2659;
				this.match(CypherCmdParser.DRYRUN);
				}
			}

			this.state = 2664;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 73:
				{
				this.state = 2662;
				this.deallocateDatabaseFromServers();
				}
				break;
			case 218:
				{
				this.state = 2663;
				this.reallocateDatabases();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public deallocateDatabaseFromServers(): DeallocateDatabaseFromServersContext {
		let localctx: DeallocateDatabaseFromServersContext = new DeallocateDatabaseFromServersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 418, CypherCmdParser.RULE_deallocateDatabaseFromServers);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2666;
			this.match(CypherCmdParser.DEALLOCATE);
			this.state = 2667;
			_la = this._input.LA(1);
			if(!(_la===68 || _la===69)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2668;
			this.match(CypherCmdParser.FROM);
			this.state = 2669;
			_la = this._input.LA(1);
			if(!(_la===246 || _la===247)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2670;
			this.stringOrParameter();
			this.state = 2675;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 2671;
				this.match(CypherCmdParser.COMMA);
				this.state = 2672;
				this.stringOrParameter();
				}
				}
				this.state = 2677;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public reallocateDatabases(): ReallocateDatabasesContext {
		let localctx: ReallocateDatabasesContext = new ReallocateDatabasesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 420, CypherCmdParser.RULE_reallocateDatabases);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2678;
			this.match(CypherCmdParser.REALLOCATE);
			this.state = 2679;
			_la = this._input.LA(1);
			if(!(_la===68 || _la===69)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createRole(): CreateRoleContext {
		let localctx: CreateRoleContext = new CreateRoleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 422, CypherCmdParser.RULE_createRole);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2681;
			this.match(CypherCmdParser.ROLE);
			this.state = 2682;
			this.commandNameExpression();
			this.state = 2686;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2683;
				this.match(CypherCmdParser.IF);
				this.state = 2684;
				this.match(CypherCmdParser.NOT);
				this.state = 2685;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2692;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 2688;
				this.match(CypherCmdParser.AS);
				this.state = 2689;
				this.match(CypherCmdParser.COPY);
				this.state = 2690;
				this.match(CypherCmdParser.OF);
				this.state = 2691;
				this.commandNameExpression();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropRole(): DropRoleContext {
		let localctx: DropRoleContext = new DropRoleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 424, CypherCmdParser.RULE_dropRole);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2694;
			this.match(CypherCmdParser.ROLE);
			this.state = 2695;
			this.commandNameExpression();
			this.state = 2698;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2696;
				this.match(CypherCmdParser.IF);
				this.state = 2697;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public renameRole(): RenameRoleContext {
		let localctx: RenameRoleContext = new RenameRoleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 426, CypherCmdParser.RULE_renameRole);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2700;
			this.match(CypherCmdParser.ROLE);
			this.state = 2701;
			this.commandNameExpression();
			this.state = 2704;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2702;
				this.match(CypherCmdParser.IF);
				this.state = 2703;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2706;
			this.match(CypherCmdParser.TO);
			this.state = 2707;
			this.commandNameExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showRoles(): ShowRolesContext {
		let localctx: ShowRolesContext = new ShowRolesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 428, CypherCmdParser.RULE_showRoles);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2710;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===23 || _la===203) {
				{
				this.state = 2709;
				_la = this._input.LA(1);
				if(!(_la===23 || _la===203)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2712;
			this.roleToken();
			this.state = 2715;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===300) {
				{
				this.state = 2713;
				this.match(CypherCmdParser.WITH);
				this.state = 2714;
				_la = this._input.LA(1);
				if(!(_la===289 || _la===290)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2718;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2717;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public roleToken(): RoleTokenContext {
		let localctx: RoleTokenContext = new RoleTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 430, CypherCmdParser.RULE_roleToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2720;
			_la = this._input.LA(1);
			if(!(_la===233 || _la===234)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createUser(): CreateUserContext {
		let localctx: CreateUserContext = new CreateUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 432, CypherCmdParser.RULE_createUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2722;
			this.match(CypherCmdParser.USER);
			this.state = 2723;
			this.commandNameExpression();
			this.state = 2727;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2724;
				this.match(CypherCmdParser.IF);
				this.state = 2725;
				this.match(CypherCmdParser.NOT);
				this.state = 2726;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2729;
			this.match(CypherCmdParser.SET);
			this.state = 2730;
			this.password();
			this.state = 2740;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===248) {
				{
				{
				this.state = 2731;
				this.match(CypherCmdParser.SET);
				this.state = 2736;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 194:
					{
					this.state = 2732;
					this.match(CypherCmdParser.PASSWORD);
					this.state = 2733;
					this.passwordChangeRequired();
					}
					break;
				case 259:
					{
					this.state = 2734;
					this.userStatus();
					}
					break;
				case 129:
					{
					this.state = 2735;
					this.homeDatabase();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				}
				this.state = 2742;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropUser(): DropUserContext {
		let localctx: DropUserContext = new DropUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 434, CypherCmdParser.RULE_dropUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2743;
			this.match(CypherCmdParser.USER);
			this.state = 2744;
			this.commandNameExpression();
			this.state = 2747;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2745;
				this.match(CypherCmdParser.IF);
				this.state = 2746;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public renameUser(): RenameUserContext {
		let localctx: RenameUserContext = new RenameUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 436, CypherCmdParser.RULE_renameUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2749;
			this.match(CypherCmdParser.USER);
			this.state = 2750;
			this.commandNameExpression();
			this.state = 2753;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2751;
				this.match(CypherCmdParser.IF);
				this.state = 2752;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2755;
			this.match(CypherCmdParser.TO);
			this.state = 2756;
			this.commandNameExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterCurrentUser(): AlterCurrentUserContext {
		let localctx: AlterCurrentUserContext = new AlterCurrentUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 438, CypherCmdParser.RULE_alterCurrentUser);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2758;
			this.match(CypherCmdParser.CURRENT);
			this.state = 2759;
			this.match(CypherCmdParser.USER);
			this.state = 2760;
			this.match(CypherCmdParser.SET);
			this.state = 2761;
			this.match(CypherCmdParser.PASSWORD);
			this.state = 2762;
			this.match(CypherCmdParser.FROM);
			this.state = 2763;
			this.passwordExpression();
			this.state = 2764;
			this.match(CypherCmdParser.TO);
			this.state = 2765;
			this.passwordExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterUser(): AlterUserContext {
		let localctx: AlterUserContext = new AlterUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 440, CypherCmdParser.RULE_alterUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2767;
			this.match(CypherCmdParser.USER);
			this.state = 2768;
			this.commandNameExpression();
			this.state = 2771;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 2769;
				this.match(CypherCmdParser.IF);
				this.state = 2770;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 2788;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 248:
				{
				this.state = 2781;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 2773;
					this.match(CypherCmdParser.SET);
					this.state = 2779;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 320, this._ctx) ) {
					case 1:
						{
						this.state = 2774;
						this.password();
						}
						break;
					case 2:
						{
						this.state = 2775;
						this.match(CypherCmdParser.PASSWORD);
						this.state = 2776;
						this.passwordChangeRequired();
						}
						break;
					case 3:
						{
						this.state = 2777;
						this.userStatus();
						}
						break;
					case 4:
						{
						this.state = 2778;
						this.homeDatabase();
						}
						break;
					}
					}
					}
					this.state = 2783;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===248);
				}
				break;
			case 225:
				{
				this.state = 2785;
				this.match(CypherCmdParser.REMOVE);
				this.state = 2786;
				this.match(CypherCmdParser.HOME);
				this.state = 2787;
				this.match(CypherCmdParser.DATABASE);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public password(): PasswordContext {
		let localctx: PasswordContext = new PasswordContext(this, this._ctx, this.state);
		this.enterRule(localctx, 442, CypherCmdParser.RULE_password);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2791;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===100 || _la===199) {
				{
				this.state = 2790;
				_la = this._input.LA(1);
				if(!(_la===100 || _la===199)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2793;
			this.match(CypherCmdParser.PASSWORD);
			this.state = 2794;
			this.passwordExpression();
			this.state = 2796;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===47) {
				{
				this.state = 2795;
				this.passwordChangeRequired();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public passwordExpression(): PasswordExpressionContext {
		let localctx: PasswordExpressionContext = new PasswordExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 444, CypherCmdParser.RULE_passwordExpression);
		try {
			this.state = 2800;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 13:
			case 14:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2798;
				this.stringLiteral();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2799;
				this.parameter("STRING");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public passwordChangeRequired(): PasswordChangeRequiredContext {
		let localctx: PasswordChangeRequiredContext = new PasswordChangeRequiredContext(this, this._ctx, this.state);
		this.enterRule(localctx, 446, CypherCmdParser.RULE_passwordChangeRequired);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2802;
			this.match(CypherCmdParser.CHANGE);
			this.state = 2804;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===181) {
				{
				this.state = 2803;
				this.match(CypherCmdParser.NOT);
				}
			}

			this.state = 2806;
			this.match(CypherCmdParser.REQUIRED);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public userStatus(): UserStatusContext {
		let localctx: UserStatusContext = new UserStatusContext(this, this._ctx, this.state);
		this.enterRule(localctx, 448, CypherCmdParser.RULE_userStatus);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2808;
			this.match(CypherCmdParser.STATUS);
			this.state = 2809;
			_la = this._input.LA(1);
			if(!(_la===17 || _la===263)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public homeDatabase(): HomeDatabaseContext {
		let localctx: HomeDatabaseContext = new HomeDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 450, CypherCmdParser.RULE_homeDatabase);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2811;
			this.match(CypherCmdParser.HOME);
			this.state = 2812;
			this.match(CypherCmdParser.DATABASE);
			this.state = 2813;
			this.symbolicAliasNameOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showUsers(): ShowUsersContext {
		let localctx: ShowUsersContext = new ShowUsersContext(this, this._ctx, this.state);
		this.enterRule(localctx, 452, CypherCmdParser.RULE_showUsers);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2815;
			_la = this._input.LA(1);
			if(!(_la===289 || _la===290)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2817;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2816;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showCurrentUser(): ShowCurrentUserContext {
		let localctx: ShowCurrentUserContext = new ShowCurrentUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 454, CypherCmdParser.RULE_showCurrentUser);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2819;
			this.match(CypherCmdParser.CURRENT);
			this.state = 2820;
			this.match(CypherCmdParser.USER);
			this.state = 2822;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2821;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showPrivileges(): ShowPrivilegesContext {
		let localctx: ShowPrivilegesContext = new ShowPrivilegesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 456, CypherCmdParser.RULE_showPrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2825;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===23) {
				{
				this.state = 2824;
				this.match(CypherCmdParser.ALL);
				}
			}

			this.state = 2827;
			this.privilegeToken();
			this.state = 2829;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 2828;
				this.privilegeAsCommand();
				}
			}

			this.state = 2832;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2831;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showSupportedPrivileges(): ShowSupportedPrivilegesContext {
		let localctx: ShowSupportedPrivilegesContext = new ShowSupportedPrivilegesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 458, CypherCmdParser.RULE_showSupportedPrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2834;
			this.match(CypherCmdParser.SUPPORTED);
			this.state = 2835;
			this.privilegeToken();
			this.state = 2837;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2836;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showRolePrivileges(): ShowRolePrivilegesContext {
		let localctx: ShowRolePrivilegesContext = new ShowRolePrivilegesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 460, CypherCmdParser.RULE_showRolePrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2839;
			_la = this._input.LA(1);
			if(!(_la===233 || _la===234)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2840;
			this.roleNames();
			this.state = 2841;
			this.privilegeToken();
			this.state = 2843;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 2842;
				this.privilegeAsCommand();
				}
			}

			this.state = 2846;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2845;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showUserPrivileges(): ShowUserPrivilegesContext {
		let localctx: ShowUserPrivilegesContext = new ShowUserPrivilegesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 462, CypherCmdParser.RULE_showUserPrivileges);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2848;
			_la = this._input.LA(1);
			if(!(_la===289 || _la===290)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 2850;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 335, this._ctx) ) {
			case 1:
				{
				this.state = 2849;
				this.userNames();
				}
				break;
			}
			this.state = 2852;
			this.privilegeToken();
			this.state = 2854;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===28) {
				{
				this.state = 2853;
				this.privilegeAsCommand();
				}
			}

			this.state = 2857;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 2856;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public privilegeAsCommand(): PrivilegeAsCommandContext {
		let localctx: PrivilegeAsCommandContext = new PrivilegeAsCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 464, CypherCmdParser.RULE_privilegeAsCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2859;
			this.match(CypherCmdParser.AS);
			this.state = 2861;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===232) {
				{
				this.state = 2860;
				this.match(CypherCmdParser.REVOKE);
				}
			}

			this.state = 2863;
			_la = this._input.LA(1);
			if(!(_la===53 || _la===54)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public privilegeToken(): PrivilegeTokenContext {
		let localctx: PrivilegeTokenContext = new PrivilegeTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 466, CypherCmdParser.RULE_privilegeToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2865;
			_la = this._input.LA(1);
			if(!(_la===207 || _la===208)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public grantCommand(): GrantCommandContext {
		let localctx: GrantCommandContext = new GrantCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 468, CypherCmdParser.RULE_grantCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2867;
			this.match(CypherCmdParser.GRANT);
			this.state = 2878;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 340, this._ctx) ) {
			case 1:
				{
				this.state = 2869;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===132) {
					{
					this.state = 2868;
					this.match(CypherCmdParser.IMMUTABLE);
					}
				}

				this.state = 2871;
				this.privilege();
				this.state = 2872;
				this.match(CypherCmdParser.TO);
				this.state = 2873;
				this.roleNames();
				}
				break;
			case 2:
				{
				this.state = 2875;
				this.roleToken();
				this.state = 2876;
				this.grantRole();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public grantRole(): GrantRoleContext {
		let localctx: GrantRoleContext = new GrantRoleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 470, CypherCmdParser.RULE_grantRole);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2880;
			this.roleNames();
			this.state = 2881;
			this.match(CypherCmdParser.TO);
			this.state = 2882;
			this.userNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public userNames(): UserNamesContext {
		let localctx: UserNamesContext = new UserNamesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 472, CypherCmdParser.RULE_userNames);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2884;
			this.symbolicNameOrStringParameterList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public roleNames(): RoleNamesContext {
		let localctx: RoleNamesContext = new RoleNamesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 474, CypherCmdParser.RULE_roleNames);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2886;
			this.symbolicNameOrStringParameterList();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public denyCommand(): DenyCommandContext {
		let localctx: DenyCommandContext = new DenyCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 476, CypherCmdParser.RULE_denyCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2888;
			this.match(CypherCmdParser.DENY);
			this.state = 2890;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===132) {
				{
				this.state = 2889;
				this.match(CypherCmdParser.IMMUTABLE);
				}
			}

			this.state = 2892;
			this.privilege();
			this.state = 2893;
			this.match(CypherCmdParser.TO);
			this.state = 2894;
			this.roleNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public revokeCommand(): RevokeCommandContext {
		let localctx: RevokeCommandContext = new RevokeCommandContext(this, this._ctx, this.state);
		this.enterRule(localctx, 478, CypherCmdParser.RULE_revokeCommand);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2896;
			this.match(CypherCmdParser.REVOKE);
			this.state = 2910;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 344, this._ctx) ) {
			case 1:
				{
				this.state = 2898;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===77 || _la===122) {
					{
					this.state = 2897;
					_la = this._input.LA(1);
					if(!(_la===77 || _la===122)) {
					this._errHandler.recoverInline(this);
					}
					else {
						this._errHandler.reportMatch(this);
					    this.consume();
					}
					}
				}

				this.state = 2901;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===132) {
					{
					this.state = 2900;
					this.match(CypherCmdParser.IMMUTABLE);
					}
				}

				this.state = 2903;
				this.privilege();
				this.state = 2904;
				this.match(CypherCmdParser.FROM);
				this.state = 2905;
				this.roleNames();
				}
				break;
			case 2:
				{
				this.state = 2907;
				this.roleToken();
				this.state = 2908;
				this.revokeRole();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public revokeRole(): RevokeRoleContext {
		let localctx: RevokeRoleContext = new RevokeRoleContext(this, this._ctx, this.state);
		this.enterRule(localctx, 480, CypherCmdParser.RULE_revokeRole);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2912;
			this.roleNames();
			this.state = 2913;
			this.match(CypherCmdParser.FROM);
			this.state = 2914;
			this.userNames();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public privilege(): PrivilegeContext {
		let localctx: PrivilegeContext = new PrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 482, CypherCmdParser.RULE_privilege);
		try {
			this.state = 2928;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 23:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2916;
				this.allPrivilege();
				}
				break;
			case 64:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2917;
				this.createPrivilege();
				}
				break;
			case 16:
			case 58:
			case 59:
			case 134:
			case 135:
			case 167:
			case 257:
			case 260:
			case 265:
			case 275:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2918;
				this.databasePrivilege();
				}
				break;
			case 20:
			case 24:
			case 32:
			case 56:
			case 68:
			case 105:
			case 131:
			case 207:
			case 220:
			case 233:
			case 246:
			case 289:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2919;
				this.dbmsPrivilege();
				}
				break;
			case 90:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2920;
				this.dropPrivilege();
				}
				break;
			case 154:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 2921;
				this.loadPrivilege();
				}
				break;
			case 76:
			case 162:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 2922;
				this.qualifiedGraphPrivileges();
				}
				break;
			case 161:
			case 217:
			case 277:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 2923;
				this.qualifiedGraphPrivilegesWithProperty();
				}
				break;
			case 225:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 2924;
				this.removePrivilege();
				}
				break;
			case 248:
				this.enterOuterAlt(localctx, 10);
				{
				this.state = 2925;
				this.setPrivilege();
				}
				break;
			case 253:
				this.enterOuterAlt(localctx, 11);
				{
				this.state = 2926;
				this.showPrivilege();
				}
				break;
			case 302:
				this.enterOuterAlt(localctx, 12);
				{
				this.state = 2927;
				this.writePrivilege();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public allPrivilege(): AllPrivilegeContext {
		let localctx: AllPrivilegeContext = new AllPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 484, CypherCmdParser.RULE_allPrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2930;
			this.match(CypherCmdParser.ALL);
			this.state = 2932;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===68 || _la===72 || _la===123 || _la===208) {
				{
				this.state = 2931;
				this.allPrivilegeType();
				}
			}

			this.state = 2934;
			this.match(CypherCmdParser.ON);
			this.state = 2935;
			this.allPrivilegeTarget();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public allPrivilegeType(): AllPrivilegeTypeContext {
		let localctx: AllPrivilegeTypeContext = new AllPrivilegeTypeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 486, CypherCmdParser.RULE_allPrivilegeType);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2938;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===68 || _la===72 || _la===123) {
				{
				this.state = 2937;
				_la = this._input.LA(1);
				if(!(_la===68 || _la===72 || _la===123)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
			}

			this.state = 2940;
			this.match(CypherCmdParser.PRIVILEGES);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public allPrivilegeTarget(): AllPrivilegeTargetContext {
		let localctx: AllPrivilegeTargetContext = new AllPrivilegeTargetContext(this, this._ctx, this.state);
		this.enterRule(localctx, 488, CypherCmdParser.RULE_allPrivilegeTarget);
		let _la: number;
		try {
			this.state = 2955;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 74:
			case 129:
				localctx = new DefaultTargetContext(this, localctx);
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2942;
				_la = this._input.LA(1);
				if(!(_la===74 || _la===129)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2943;
				_la = this._input.LA(1);
				if(!(_la===68 || _la===123)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 68:
			case 69:
				localctx = new DatabaseVariableTargetContext(this, localctx);
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2944;
				_la = this._input.LA(1);
				if(!(_la===68 || _la===69)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2947;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 2945;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 83:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 2946;
					this.symbolicAliasNameList();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 123:
			case 124:
				localctx = new GraphVariableTargetContext(this, localctx);
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2949;
				_la = this._input.LA(1);
				if(!(_la===123 || _la===124)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 2952;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 2950;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 83:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 2951;
					this.symbolicAliasNameList();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 72:
				localctx = new DBMSTargetContext(this, localctx);
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2954;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createPrivilege(): CreatePrivilegeContext {
		let localctx: CreatePrivilegeContext = new CreatePrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 490, CypherCmdParser.RULE_createPrivilege);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2957;
			this.match(CypherCmdParser.CREATE);
			this.state = 2970;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 58:
			case 59:
			case 134:
			case 135:
			case 174:
				{
				this.state = 2958;
				this.createPrivilegeForDatabase();
				this.state = 2959;
				this.match(CypherCmdParser.ON);
				this.state = 2960;
				this.databaseScope();
				}
				break;
			case 20:
			case 56:
			case 68:
			case 233:
			case 289:
				{
				this.state = 2962;
				this.actionForDBMS();
				this.state = 2963;
				this.match(CypherCmdParser.ON);
				this.state = 2964;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			case 186:
				{
				this.state = 2966;
				this.match(CypherCmdParser.ON);
				this.state = 2967;
				this.graphScope();
				this.state = 2968;
				this.graphQualifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createPrivilegeForDatabase(): CreatePrivilegeForDatabaseContext {
		let localctx: CreatePrivilegeForDatabaseContext = new CreatePrivilegeForDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 492, CypherCmdParser.RULE_createPrivilegeForDatabase);
		try {
			this.state = 2977;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 352, this._ctx) ) {
			case 1:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2972;
				this.indexToken();
				}
				break;
			case 2:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2973;
				this.constraintToken();
				}
				break;
			case 3:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 2974;
				this.createNodePrivilegeToken();
				}
				break;
			case 4:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 2975;
				this.createRelPrivilegeToken();
				}
				break;
			case 5:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 2976;
				this.createPropertyPrivilegeToken();
				}
				break;
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createNodePrivilegeToken(): CreateNodePrivilegeTokenContext {
		let localctx: CreateNodePrivilegeTokenContext = new CreateNodePrivilegeTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 494, CypherCmdParser.RULE_createNodePrivilegeToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2979;
			this.match(CypherCmdParser.NEW);
			this.state = 2981;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===175) {
				{
				this.state = 2980;
				this.match(CypherCmdParser.NODE);
				}
			}

			this.state = 2983;
			_la = this._input.LA(1);
			if(!(_la===144 || _la===145)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createRelPrivilegeToken(): CreateRelPrivilegeTokenContext {
		let localctx: CreateRelPrivilegeTokenContext = new CreateRelPrivilegeTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 496, CypherCmdParser.RULE_createRelPrivilegeToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2985;
			this.match(CypherCmdParser.NEW);
			this.state = 2987;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===223) {
				{
				this.state = 2986;
				this.match(CypherCmdParser.RELATIONSHIP);
				}
			}

			this.state = 2989;
			_la = this._input.LA(1);
			if(!(_la===280 || _la===282)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createPropertyPrivilegeToken(): CreatePropertyPrivilegeTokenContext {
		let localctx: CreatePropertyPrivilegeTokenContext = new CreatePropertyPrivilegeTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 498, CypherCmdParser.RULE_createPropertyPrivilegeToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 2991;
			this.match(CypherCmdParser.NEW);
			this.state = 2993;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===212) {
				{
				this.state = 2992;
				this.match(CypherCmdParser.PROPERTY);
				}
			}

			this.state = 2995;
			_la = this._input.LA(1);
			if(!(_la===167 || _la===168)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public actionForDBMS(): ActionForDBMSContext {
		let localctx: ActionForDBMSContext = new ActionForDBMSContext(this, this._ctx, this.state);
		this.enterRule(localctx, 500, CypherCmdParser.RULE_actionForDBMS);
		let _la: number;
		try {
			this.state = 3004;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 20:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 2997;
				this.match(CypherCmdParser.ALIAS);
				}
				break;
			case 56:
			case 68:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 2999;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===56) {
					{
					this.state = 2998;
					this.match(CypherCmdParser.COMPOSITE);
					}
				}

				this.state = 3001;
				this.match(CypherCmdParser.DATABASE);
				}
				break;
			case 233:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3002;
				this.match(CypherCmdParser.ROLE);
				}
				break;
			case 289:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3003;
				this.match(CypherCmdParser.USER);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropPrivilege(): DropPrivilegeContext {
		let localctx: DropPrivilegeContext = new DropPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 502, CypherCmdParser.RULE_dropPrivilege);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3006;
			this.match(CypherCmdParser.DROP);
			this.state = 3018;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 58:
			case 59:
			case 134:
			case 135:
				{
				this.state = 3009;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 134:
				case 135:
					{
					this.state = 3007;
					this.indexToken();
					}
					break;
				case 58:
				case 59:
					{
					this.state = 3008;
					this.constraintToken();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3011;
				this.match(CypherCmdParser.ON);
				this.state = 3012;
				this.databaseScope();
				}
				break;
			case 20:
			case 56:
			case 68:
			case 233:
			case 289:
				{
				this.state = 3014;
				this.actionForDBMS();
				this.state = 3015;
				this.match(CypherCmdParser.ON);
				this.state = 3016;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public loadPrivilege(): LoadPrivilegeContext {
		let localctx: LoadPrivilegeContext = new LoadPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 504, CypherCmdParser.RULE_loadPrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3020;
			this.match(CypherCmdParser.LOAD);
			this.state = 3021;
			this.match(CypherCmdParser.ON);
			this.state = 3026;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 48:
			case 287:
				{
				this.state = 3022;
				_la = this._input.LA(1);
				if(!(_la===48 || _la===287)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3023;
				this.stringOrParameter();
				}
				break;
			case 23:
				{
				this.state = 3024;
				this.match(CypherCmdParser.ALL);
				this.state = 3025;
				this.match(CypherCmdParser.DATA);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showPrivilege(): ShowPrivilegeContext {
		let localctx: ShowPrivilegeContext = new ShowPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 506, CypherCmdParser.RULE_showPrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3028;
			this.match(CypherCmdParser.SHOW);
			this.state = 3053;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 58:
			case 59:
			case 134:
			case 135:
			case 275:
			case 276:
				{
				this.state = 3035;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 134:
				case 135:
					{
					this.state = 3029;
					this.indexToken();
					}
					break;
				case 58:
				case 59:
					{
					this.state = 3030;
					this.constraintToken();
					}
					break;
				case 275:
				case 276:
					{
					this.state = 3031;
					this.transactionToken();
					this.state = 3033;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===157) {
						{
						this.state = 3032;
						this.userQualifier();
						}
					}

					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3037;
				this.match(CypherCmdParser.ON);
				this.state = 3038;
				this.databaseScope();
				}
				break;
			case 20:
			case 207:
			case 233:
			case 246:
			case 247:
			case 249:
			case 250:
			case 289:
				{
				this.state = 3049;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 20:
					{
					this.state = 3040;
					this.match(CypherCmdParser.ALIAS);
					}
					break;
				case 207:
					{
					this.state = 3041;
					this.match(CypherCmdParser.PRIVILEGE);
					}
					break;
				case 233:
					{
					this.state = 3042;
					this.match(CypherCmdParser.ROLE);
					}
					break;
				case 246:
					{
					this.state = 3043;
					this.match(CypherCmdParser.SERVER);
					}
					break;
				case 247:
					{
					this.state = 3044;
					this.match(CypherCmdParser.SERVERS);
					}
					break;
				case 249:
				case 250:
					{
					this.state = 3045;
					this.settingToken();
					this.state = 3046;
					this.settingQualifier();
					}
					break;
				case 289:
					{
					this.state = 3048;
					this.match(CypherCmdParser.USER);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3051;
				this.match(CypherCmdParser.ON);
				this.state = 3052;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public setPrivilege(): SetPrivilegeContext {
		let localctx: SetPrivilegeContext = new SetPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 508, CypherCmdParser.RULE_setPrivilege);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3055;
			this.match(CypherCmdParser.SET);
			this.state = 3080;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 68:
			case 194:
			case 195:
			case 289:
				{
				this.state = 3065;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 194:
				case 195:
					{
					this.state = 3056;
					this.passwordToken();
					}
					break;
				case 289:
					{
					this.state = 3057;
					this.match(CypherCmdParser.USER);
					this.state = 3061;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 259:
						{
						this.state = 3058;
						this.match(CypherCmdParser.STATUS);
						}
						break;
					case 129:
						{
						this.state = 3059;
						this.match(CypherCmdParser.HOME);
						this.state = 3060;
						this.match(CypherCmdParser.DATABASE);
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					break;
				case 68:
					{
					this.state = 3063;
					this.match(CypherCmdParser.DATABASE);
					this.state = 3064;
					this.match(CypherCmdParser.ACCESS);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3067;
				this.match(CypherCmdParser.ON);
				this.state = 3068;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			case 144:
				{
				this.state = 3069;
				this.match(CypherCmdParser.LABEL);
				this.state = 3070;
				this.labelsResource();
				this.state = 3071;
				this.match(CypherCmdParser.ON);
				this.state = 3072;
				this.graphScope();
				}
				break;
			case 212:
				{
				this.state = 3074;
				this.match(CypherCmdParser.PROPERTY);
				this.state = 3075;
				this.propertiesResource();
				this.state = 3076;
				this.match(CypherCmdParser.ON);
				this.state = 3077;
				this.graphScope();
				this.state = 3078;
				this.graphQualifier();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public passwordToken(): PasswordTokenContext {
		let localctx: PasswordTokenContext = new PasswordTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 510, CypherCmdParser.RULE_passwordToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3082;
			_la = this._input.LA(1);
			if(!(_la===194 || _la===195)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public removePrivilege(): RemovePrivilegeContext {
		let localctx: RemovePrivilegeContext = new RemovePrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 512, CypherCmdParser.RULE_removePrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3084;
			this.match(CypherCmdParser.REMOVE);
			this.state = 3093;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 207:
			case 233:
				{
				this.state = 3085;
				_la = this._input.LA(1);
				if(!(_la===207 || _la===233)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3086;
				this.match(CypherCmdParser.ON);
				this.state = 3087;
				this.match(CypherCmdParser.DBMS);
				}
				break;
			case 144:
				{
				this.state = 3088;
				this.match(CypherCmdParser.LABEL);
				this.state = 3089;
				this.labelsResource();
				this.state = 3090;
				this.match(CypherCmdParser.ON);
				this.state = 3091;
				this.graphScope();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public writePrivilege(): WritePrivilegeContext {
		let localctx: WritePrivilegeContext = new WritePrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 514, CypherCmdParser.RULE_writePrivilege);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3095;
			this.match(CypherCmdParser.WRITE);
			this.state = 3096;
			this.match(CypherCmdParser.ON);
			this.state = 3097;
			this.graphScope();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public databasePrivilege(): DatabasePrivilegeContext {
		let localctx: DatabasePrivilegeContext = new DatabasePrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 516, CypherCmdParser.RULE_databasePrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3121;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 16:
				{
				this.state = 3099;
				this.match(CypherCmdParser.ACCESS);
				}
				break;
			case 257:
				{
				this.state = 3100;
				this.match(CypherCmdParser.START);
				}
				break;
			case 260:
				{
				this.state = 3101;
				this.match(CypherCmdParser.STOP);
				}
				break;
			case 58:
			case 59:
			case 134:
			case 135:
			case 167:
				{
				this.state = 3105;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 134:
				case 135:
					{
					this.state = 3102;
					this.indexToken();
					}
					break;
				case 58:
				case 59:
					{
					this.state = 3103;
					this.constraintToken();
					}
					break;
				case 167:
					{
					this.state = 3104;
					this.match(CypherCmdParser.NAME);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3108;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===159) {
					{
					this.state = 3107;
					this.match(CypherCmdParser.MANAGEMENT);
					}
				}

				}
				break;
			case 265:
			case 275:
				{
				this.state = 3116;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 275:
					{
					this.state = 3110;
					this.match(CypherCmdParser.TRANSACTION);
					this.state = 3112;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===159) {
						{
						this.state = 3111;
						this.match(CypherCmdParser.MANAGEMENT);
						}
					}

					}
					break;
				case 265:
					{
					this.state = 3114;
					this.match(CypherCmdParser.TERMINATE);
					this.state = 3115;
					this.transactionToken();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3119;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===157) {
					{
					this.state = 3118;
					this.userQualifier();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3123;
			this.match(CypherCmdParser.ON);
			this.state = 3124;
			this.databaseScope();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dbmsPrivilege(): DbmsPrivilegeContext {
		let localctx: DbmsPrivilegeContext = new DbmsPrivilegeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 518, CypherCmdParser.RULE_dbmsPrivilege);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3149;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 24:
				{
				this.state = 3126;
				this.match(CypherCmdParser.ALTER);
				this.state = 3127;
				_la = this._input.LA(1);
				if(!(_la===20 || _la===68 || _la===289)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 32:
				{
				this.state = 3128;
				this.match(CypherCmdParser.ASSIGN);
				this.state = 3129;
				_la = this._input.LA(1);
				if(!(_la===207 || _la===233)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 20:
			case 56:
			case 68:
			case 207:
			case 233:
			case 246:
			case 289:
				{
				this.state = 3139;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 20:
					{
					this.state = 3130;
					this.match(CypherCmdParser.ALIAS);
					}
					break;
				case 56:
				case 68:
					{
					this.state = 3132;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===56) {
						{
						this.state = 3131;
						this.match(CypherCmdParser.COMPOSITE);
						}
					}

					this.state = 3134;
					this.match(CypherCmdParser.DATABASE);
					}
					break;
				case 207:
					{
					this.state = 3135;
					this.match(CypherCmdParser.PRIVILEGE);
					}
					break;
				case 233:
					{
					this.state = 3136;
					this.match(CypherCmdParser.ROLE);
					}
					break;
				case 246:
					{
					this.state = 3137;
					this.match(CypherCmdParser.SERVER);
					}
					break;
				case 289:
					{
					this.state = 3138;
					this.match(CypherCmdParser.USER);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				this.state = 3141;
				this.match(CypherCmdParser.MANAGEMENT);
				}
				break;
			case 105:
				{
				this.state = 3142;
				this.dbmsPrivilegeExecute();
				}
				break;
			case 220:
				{
				this.state = 3143;
				this.match(CypherCmdParser.RENAME);
				this.state = 3144;
				_la = this._input.LA(1);
				if(!(_la===233 || _la===289)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				}
				break;
			case 131:
				{
				this.state = 3145;
				this.match(CypherCmdParser.IMPERSONATE);
				this.state = 3147;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===157) {
					{
					this.state = 3146;
					this.userQualifier();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3151;
			this.match(CypherCmdParser.ON);
			this.state = 3152;
			this.match(CypherCmdParser.DBMS);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dbmsPrivilegeExecute(): DbmsPrivilegeExecuteContext {
		let localctx: DbmsPrivilegeExecuteContext = new DbmsPrivilegeExecuteContext(this, this._ctx, this.state);
		this.enterRule(localctx, 520, CypherCmdParser.RULE_dbmsPrivilegeExecute);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3154;
			this.match(CypherCmdParser.EXECUTE);
			this.state = 3175;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 18:
			case 19:
				{
				this.state = 3155;
				this.adminToken();
				this.state = 3156;
				this.match(CypherCmdParser.PROCEDURES);
				}
				break;
			case 38:
			case 119:
			case 120:
			case 209:
			case 210:
			case 289:
				{
				this.state = 3159;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===38) {
					{
					this.state = 3158;
					this.match(CypherCmdParser.BOOSTED);
					}
				}

				this.state = 3173;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 209:
				case 210:
					{
					this.state = 3161;
					this.procedureToken();
					this.state = 3162;
					this.executeProcedureQualifier();
					}
					break;
				case 119:
				case 120:
				case 289:
					{
					this.state = 3168;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (_la===289) {
						{
						this.state = 3164;
						this.match(CypherCmdParser.USER);
						this.state = 3166;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
						if (_la===75) {
							{
							this.state = 3165;
							this.match(CypherCmdParser.DEFINED);
							}
						}

						}
					}

					this.state = 3170;
					this.functionToken();
					this.state = 3171;
					this.executeFunctionQualifier();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public adminToken(): AdminTokenContext {
		let localctx: AdminTokenContext = new AdminTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 522, CypherCmdParser.RULE_adminToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3177;
			_la = this._input.LA(1);
			if(!(_la===18 || _la===19)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public procedureToken(): ProcedureTokenContext {
		let localctx: ProcedureTokenContext = new ProcedureTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 524, CypherCmdParser.RULE_procedureToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3179;
			_la = this._input.LA(1);
			if(!(_la===209 || _la===210)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public indexToken(): IndexTokenContext {
		let localctx: IndexTokenContext = new IndexTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 526, CypherCmdParser.RULE_indexToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3181;
			_la = this._input.LA(1);
			if(!(_la===134 || _la===135)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public constraintToken(): ConstraintTokenContext {
		let localctx: ConstraintTokenContext = new ConstraintTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 528, CypherCmdParser.RULE_constraintToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3183;
			_la = this._input.LA(1);
			if(!(_la===58 || _la===59)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public transactionToken(): TransactionTokenContext {
		let localctx: TransactionTokenContext = new TransactionTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 530, CypherCmdParser.RULE_transactionToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3185;
			_la = this._input.LA(1);
			if(!(_la===275 || _la===276)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public userQualifier(): UserQualifierContext {
		let localctx: UserQualifierContext = new UserQualifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 532, CypherCmdParser.RULE_userQualifier);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3187;
			this.match(CypherCmdParser.LPAREN);
			this.state = 3190;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 269:
				{
				this.state = 3188;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 83:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				{
				this.state = 3189;
				this.userNames();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3192;
			this.match(CypherCmdParser.RPAREN);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public executeFunctionQualifier(): ExecuteFunctionQualifierContext {
		let localctx: ExecuteFunctionQualifierContext = new ExecuteFunctionQualifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 534, CypherCmdParser.RULE_executeFunctionQualifier);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3194;
			this.globs();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public executeProcedureQualifier(): ExecuteProcedureQualifierContext {
		let localctx: ExecuteProcedureQualifierContext = new ExecuteProcedureQualifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 536, CypherCmdParser.RULE_executeProcedureQualifier);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3196;
			this.globs();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public settingQualifier(): SettingQualifierContext {
		let localctx: SettingQualifierContext = new SettingQualifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 538, CypherCmdParser.RULE_settingQualifier);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3198;
			this.globs();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public globs(): GlobsContext {
		let localctx: GlobsContext = new GlobsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 540, CypherCmdParser.RULE_globs);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3200;
			this.glob();
			this.state = 3205;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 3201;
				this.match(CypherCmdParser.COMMA);
				this.state = 3202;
				this.glob();
				}
				}
				this.state = 3207;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public qualifiedGraphPrivilegesWithProperty(): QualifiedGraphPrivilegesWithPropertyContext {
		let localctx: QualifiedGraphPrivilegesWithPropertyContext = new QualifiedGraphPrivilegesWithPropertyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 542, CypherCmdParser.RULE_qualifiedGraphPrivilegesWithProperty);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3211;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 277:
				{
				this.state = 3208;
				this.match(CypherCmdParser.TRAVERSE);
				}
				break;
			case 161:
			case 217:
				{
				this.state = 3209;
				_la = this._input.LA(1);
				if(!(_la===161 || _la===217)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3210;
				this.propertiesResource();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3213;
			this.match(CypherCmdParser.ON);
			this.state = 3214;
			this.graphScope();
			this.state = 3215;
			this.graphQualifier();
			this.state = 3219;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===157) {
				{
				this.state = 3216;
				this.match(CypherCmdParser.LPAREN);
				this.state = 3217;
				this.match(CypherCmdParser.TIMES);
				this.state = 3218;
				this.match(CypherCmdParser.RPAREN);
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public qualifiedGraphPrivileges(): QualifiedGraphPrivilegesContext {
		let localctx: QualifiedGraphPrivilegesContext = new QualifiedGraphPrivilegesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 544, CypherCmdParser.RULE_qualifiedGraphPrivileges);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3224;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 76:
				{
				this.state = 3221;
				this.match(CypherCmdParser.DELETE);
				}
				break;
			case 162:
				{
				this.state = 3222;
				this.match(CypherCmdParser.MERGE);
				this.state = 3223;
				this.propertiesResource();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3226;
			this.match(CypherCmdParser.ON);
			this.state = 3227;
			this.graphScope();
			this.state = 3228;
			this.graphQualifier();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public labelsResource(): LabelsResourceContext {
		let localctx: LabelsResourceContext = new LabelsResourceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 546, CypherCmdParser.RULE_labelsResource);
		try {
			this.state = 3232;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 269:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3230;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3231;
				this.nonEmptyStringList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public propertiesResource(): PropertiesResourceContext {
		let localctx: PropertiesResourceContext = new PropertiesResourceContext(this, this._ctx, this.state);
		this.enterRule(localctx, 548, CypherCmdParser.RULE_propertiesResource);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3234;
			this.match(CypherCmdParser.LCURLY);
			this.state = 3237;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 269:
				{
				this.state = 3235;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				{
				this.state = 3236;
				this.nonEmptyStringList();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3239;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nonEmptyStringList(): NonEmptyStringListContext {
		let localctx: NonEmptyStringListContext = new NonEmptyStringListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 550, CypherCmdParser.RULE_nonEmptyStringList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3241;
			this.symbolicNameString();
			this.state = 3246;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 3242;
				this.match(CypherCmdParser.COMMA);
				this.state = 3243;
				this.symbolicNameString();
				}
				}
				this.state = 3248;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public graphQualifier(): GraphQualifierContext {
		let localctx: GraphQualifierContext = new GraphQualifierContext(this, this._ctx, this.state);
		this.enterRule(localctx, 552, CypherCmdParser.RULE_graphQualifier);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3282;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 97:
			case 98:
			case 175:
			case 177:
			case 223:
			case 224:
				{
				this.state = 3249;
				this.graphQualifierToken();
				this.state = 3252;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 3250;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 3251;
					this.nonEmptyStringList();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 115:
				{
				this.state = 3254;
				this.match(CypherCmdParser.FOR);
				this.state = 3255;
				this.match(CypherCmdParser.LPAREN);
				this.state = 3257;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 393, this._ctx) ) {
				case 1:
					{
					this.state = 3256;
					this.variable();
					}
					break;
				}
				this.state = 3268;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===50) {
					{
					this.state = 3259;
					this.match(CypherCmdParser.COLON);
					this.state = 3260;
					this.symbolicNameString();
					this.state = 3265;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					while (_la===34) {
						{
						{
						this.state = 3261;
						this.match(CypherCmdParser.BAR);
						this.state = 3262;
						this.symbolicNameString();
						}
						}
						this.state = 3267;
						this._errHandler.sync(this);
						_la = this._input.LA(1);
					}
					}
				}

				this.state = 3280;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 237:
					{
					this.state = 3270;
					this.match(CypherCmdParser.RPAREN);
					this.state = 3271;
					this.match(CypherCmdParser.WHERE);
					this.state = 3272;
					this.expression();
					}
					break;
				case 149:
				case 299:
					{
					this.state = 3276;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 299:
						{
						this.state = 3273;
						this.match(CypherCmdParser.WHERE);
						this.state = 3274;
						this.expression();
						}
						break;
					case 149:
						{
						this.state = 3275;
						this.map();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					this.state = 3278;
					this.match(CypherCmdParser.RPAREN);
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			case 117:
			case 157:
			case 272:
				break;
			default:
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public graphQualifierToken(): GraphQualifierTokenContext {
		let localctx: GraphQualifierTokenContext = new GraphQualifierTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 554, CypherCmdParser.RULE_graphQualifierToken);
		try {
			this.state = 3287;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 223:
			case 224:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3284;
				this.relToken();
				}
				break;
			case 175:
			case 177:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3285;
				this.nodeToken();
				}
				break;
			case 97:
			case 98:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3286;
				this.elementToken();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public relToken(): RelTokenContext {
		let localctx: RelTokenContext = new RelTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 556, CypherCmdParser.RULE_relToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3289;
			_la = this._input.LA(1);
			if(!(_la===223 || _la===224)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public elementToken(): ElementTokenContext {
		let localctx: ElementTokenContext = new ElementTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 558, CypherCmdParser.RULE_elementToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3291;
			_la = this._input.LA(1);
			if(!(_la===97 || _la===98)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public nodeToken(): NodeTokenContext {
		let localctx: NodeTokenContext = new NodeTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 560, CypherCmdParser.RULE_nodeToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3293;
			_la = this._input.LA(1);
			if(!(_la===175 || _la===177)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createCompositeDatabase(): CreateCompositeDatabaseContext {
		let localctx: CreateCompositeDatabaseContext = new CreateCompositeDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 562, CypherCmdParser.RULE_createCompositeDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3295;
			this.match(CypherCmdParser.COMPOSITE);
			this.state = 3296;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3297;
			this.symbolicAliasNameOrParameter();
			this.state = 3301;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3298;
				this.match(CypherCmdParser.IF);
				this.state = 3299;
				this.match(CypherCmdParser.NOT);
				this.state = 3300;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3304;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 3303;
				this.commandOptions();
				}
			}

			this.state = 3307;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3306;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createDatabase(): CreateDatabaseContext {
		let localctx: CreateDatabaseContext = new CreateDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 564, CypherCmdParser.RULE_createDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3309;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3310;
			this.symbolicAliasNameOrParameter();
			this.state = 3314;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3311;
				this.match(CypherCmdParser.IF);
				this.state = 3312;
				this.match(CypherCmdParser.NOT);
				this.state = 3313;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3323;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===273) {
				{
				this.state = 3316;
				this.match(CypherCmdParser.TOPOLOGY);
				this.state = 3319;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					this.state = 3319;
					this._errHandler.sync(this);
					switch ( this._interp.adaptivePredict(this._input, 404, this._ctx) ) {
					case 1:
						{
						this.state = 3317;
						this.primaryTopology();
						}
						break;
					case 2:
						{
						this.state = 3318;
						this.secondaryTopology();
						}
						break;
					}
					}
					this.state = 3321;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===10);
				}
			}

			this.state = 3326;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===189) {
				{
				this.state = 3325;
				this.commandOptions();
				}
			}

			this.state = 3329;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3328;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public primaryTopology(): PrimaryTopologyContext {
		let localctx: PrimaryTopologyContext = new PrimaryTopologyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 566, CypherCmdParser.RULE_primaryTopology);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3331;
			this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
			this.state = 3332;
			this.primaryToken();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public primaryToken(): PrimaryTokenContext {
		let localctx: PrimaryTokenContext = new PrimaryTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 568, CypherCmdParser.RULE_primaryToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3334;
			_la = this._input.LA(1);
			if(!(_la===205 || _la===206)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public secondaryTopology(): SecondaryTopologyContext {
		let localctx: SecondaryTopologyContext = new SecondaryTopologyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 570, CypherCmdParser.RULE_secondaryTopology);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3336;
			this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
			this.state = 3337;
			this.secondaryToken();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public secondaryToken(): SecondaryTokenContext {
		let localctx: SecondaryTokenContext = new SecondaryTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 572, CypherCmdParser.RULE_secondaryToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3339;
			_la = this._input.LA(1);
			if(!(_la===241 || _la===242)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropDatabase(): DropDatabaseContext {
		let localctx: DropDatabaseContext = new DropDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 574, CypherCmdParser.RULE_dropDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3342;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===56) {
				{
				this.state = 3341;
				this.match(CypherCmdParser.COMPOSITE);
				}
			}

			this.state = 3344;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3345;
			this.symbolicAliasNameOrParameter();
			this.state = 3348;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3346;
				this.match(CypherCmdParser.IF);
				this.state = 3347;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3352;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===80 || _la===92) {
				{
				this.state = 3350;
				_la = this._input.LA(1);
				if(!(_la===80 || _la===92)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3351;
				this.match(CypherCmdParser.DATA);
				}
			}

			this.state = 3355;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3354;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterDatabase(): AlterDatabaseContext {
		let localctx: AlterDatabaseContext = new AlterDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 576, CypherCmdParser.RULE_alterDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3357;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3358;
			this.symbolicAliasNameOrParameter();
			this.state = 3361;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3359;
				this.match(CypherCmdParser.IF);
				this.state = 3360;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3380;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 248:
				{
				this.state = 3369;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 3363;
					this.match(CypherCmdParser.SET);
					this.state = 3367;
					this._errHandler.sync(this);
					switch (this._input.LA(1)) {
					case 16:
						{
						this.state = 3364;
						this.alterDatabaseAccess();
						}
						break;
					case 273:
						{
						this.state = 3365;
						this.alterDatabaseTopology();
						}
						break;
					case 190:
						{
						this.state = 3366;
						this.alterDatabaseOption();
						}
						break;
					default:
						throw new NoViableAltException(this);
					}
					}
					}
					this.state = 3371;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===248);
				}
				break;
			case 225:
				{
				this.state = 3376;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				do {
					{
					{
					this.state = 3373;
					this.match(CypherCmdParser.REMOVE);
					this.state = 3374;
					this.match(CypherCmdParser.OPTION);
					this.state = 3375;
					this.symbolicNameString();
					}
					}
					this.state = 3378;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				} while (_la===225);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
			this.state = 3383;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3382;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseAccess(): AlterDatabaseAccessContext {
		let localctx: AlterDatabaseAccessContext = new AlterDatabaseAccessContext(this, this._ctx, this.state);
		this.enterRule(localctx, 578, CypherCmdParser.RULE_alterDatabaseAccess);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3385;
			this.match(CypherCmdParser.ACCESS);
			this.state = 3386;
			this.match(CypherCmdParser.READ);
			this.state = 3387;
			_la = this._input.LA(1);
			if(!(_la===187 || _la===302)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseTopology(): AlterDatabaseTopologyContext {
		let localctx: AlterDatabaseTopologyContext = new AlterDatabaseTopologyContext(this, this._ctx, this.state);
		this.enterRule(localctx, 580, CypherCmdParser.RULE_alterDatabaseTopology);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3389;
			this.match(CypherCmdParser.TOPOLOGY);
			this.state = 3392;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				this.state = 3392;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 419, this._ctx) ) {
				case 1:
					{
					this.state = 3390;
					this.primaryTopology();
					}
					break;
				case 2:
					{
					this.state = 3391;
					this.secondaryTopology();
					}
					break;
				}
				}
				this.state = 3394;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===10);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterDatabaseOption(): AlterDatabaseOptionContext {
		let localctx: AlterDatabaseOptionContext = new AlterDatabaseOptionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 582, CypherCmdParser.RULE_alterDatabaseOption);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3396;
			this.match(CypherCmdParser.OPTION);
			this.state = 3397;
			this.symbolicNameString();
			this.state = 3398;
			this.expression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public startDatabase(): StartDatabaseContext {
		let localctx: StartDatabaseContext = new StartDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 584, CypherCmdParser.RULE_startDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3400;
			this.match(CypherCmdParser.START);
			this.state = 3401;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3402;
			this.symbolicAliasNameOrParameter();
			this.state = 3404;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3403;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stopDatabase(): StopDatabaseContext {
		let localctx: StopDatabaseContext = new StopDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 586, CypherCmdParser.RULE_stopDatabase);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3406;
			this.match(CypherCmdParser.STOP);
			this.state = 3407;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3408;
			this.symbolicAliasNameOrParameter();
			this.state = 3410;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===183 || _la===297) {
				{
				this.state = 3409;
				this.waitClause();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public waitClause(): WaitClauseContext {
		let localctx: WaitClauseContext = new WaitClauseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 588, CypherCmdParser.RULE_waitClause);
		let _la: number;
		try {
			this.state = 3420;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 297:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3412;
				this.match(CypherCmdParser.WAIT);
				this.state = 3417;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===10) {
					{
					this.state = 3413;
					this.match(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
					this.state = 3415;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
					if (((((_la - 239)) & ~0x1F) === 0 && ((1 << (_la - 239)) & 19) !== 0)) {
						{
						this.state = 3414;
						this.secondsToken();
						}
					}

					}
				}

				}
				break;
			case 183:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3419;
				this.match(CypherCmdParser.NOWAIT);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public secondsToken(): SecondsTokenContext {
		let localctx: SecondsTokenContext = new SecondsTokenContext(this, this._ctx, this.state);
		this.enterRule(localctx, 590, CypherCmdParser.RULE_secondsToken);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3422;
			_la = this._input.LA(1);
			if(!(((((_la - 239)) & ~0x1F) === 0 && ((1 << (_la - 239)) & 19) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showDatabase(): ShowDatabaseContext {
		let localctx: ShowDatabaseContext = new ShowDatabaseContext(this, this._ctx, this.state);
		this.enterRule(localctx, 592, CypherCmdParser.RULE_showDatabase);
		let _la: number;
		try {
			this.state = 3436;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 74:
			case 129:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3424;
				_la = this._input.LA(1);
				if(!(_la===74 || _la===129)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3425;
				this.match(CypherCmdParser.DATABASE);
				this.state = 3427;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299 || _la===304) {
					{
					this.state = 3426;
					this.showCommandYield();
					}
				}

				}
				break;
			case 68:
			case 69:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3429;
				_la = this._input.LA(1);
				if(!(_la===68 || _la===69)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3431;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 427, this._ctx) ) {
				case 1:
					{
					this.state = 3430;
					this.symbolicAliasNameOrParameter();
					}
					break;
				}
				this.state = 3434;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===299 || _la===304) {
					{
					this.state = 3433;
					this.showCommandYield();
					}
				}

				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public databaseScope(): DatabaseScopeContext {
		let localctx: DatabaseScopeContext = new DatabaseScopeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 594, CypherCmdParser.RULE_databaseScope);
		let _la: number;
		try {
			this.state = 3445;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 74:
			case 129:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3438;
				_la = this._input.LA(1);
				if(!(_la===74 || _la===129)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3439;
				this.match(CypherCmdParser.DATABASE);
				}
				break;
			case 68:
			case 69:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3440;
				_la = this._input.LA(1);
				if(!(_la===68 || _la===69)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3443;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 3441;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 83:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 3442;
					this.symbolicAliasNameList();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public graphScope(): GraphScopeContext {
		let localctx: GraphScopeContext = new GraphScopeContext(this, this._ctx, this.state);
		this.enterRule(localctx, 596, CypherCmdParser.RULE_graphScope);
		let _la: number;
		try {
			this.state = 3454;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 74:
			case 129:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3447;
				_la = this._input.LA(1);
				if(!(_la===74 || _la===129)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3448;
				this.match(CypherCmdParser.GRAPH);
				}
				break;
			case 123:
			case 124:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3449;
				_la = this._input.LA(1);
				if(!(_la===123 || _la===124)) {
				this._errHandler.recoverInline(this);
				}
				else {
					this._errHandler.reportMatch(this);
				    this.consume();
				}
				this.state = 3452;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 269:
					{
					this.state = 3450;
					this.match(CypherCmdParser.TIMES);
					}
					break;
				case 15:
				case 16:
				case 17:
				case 18:
				case 19:
				case 20:
				case 21:
				case 22:
				case 23:
				case 24:
				case 25:
				case 26:
				case 27:
				case 28:
				case 29:
				case 30:
				case 31:
				case 32:
				case 33:
				case 35:
				case 36:
				case 37:
				case 38:
				case 39:
				case 40:
				case 41:
				case 42:
				case 43:
				case 44:
				case 45:
				case 46:
				case 47:
				case 48:
				case 49:
				case 53:
				case 54:
				case 55:
				case 56:
				case 57:
				case 58:
				case 59:
				case 60:
				case 61:
				case 62:
				case 63:
				case 64:
				case 65:
				case 66:
				case 67:
				case 68:
				case 69:
				case 70:
				case 71:
				case 72:
				case 73:
				case 74:
				case 75:
				case 76:
				case 77:
				case 78:
				case 79:
				case 80:
				case 81:
				case 82:
				case 83:
				case 84:
				case 89:
				case 90:
				case 91:
				case 92:
				case 93:
				case 94:
				case 95:
				case 96:
				case 97:
				case 98:
				case 99:
				case 100:
				case 101:
				case 102:
				case 104:
				case 105:
				case 106:
				case 107:
				case 108:
				case 109:
				case 110:
				case 111:
				case 112:
				case 113:
				case 114:
				case 115:
				case 116:
				case 117:
				case 118:
				case 119:
				case 120:
				case 122:
				case 123:
				case 124:
				case 125:
				case 126:
				case 128:
				case 129:
				case 130:
				case 131:
				case 132:
				case 133:
				case 134:
				case 135:
				case 136:
				case 137:
				case 138:
				case 139:
				case 140:
				case 141:
				case 142:
				case 143:
				case 144:
				case 145:
				case 151:
				case 152:
				case 153:
				case 154:
				case 155:
				case 156:
				case 159:
				case 160:
				case 161:
				case 162:
				case 167:
				case 168:
				case 169:
				case 170:
				case 171:
				case 172:
				case 173:
				case 174:
				case 175:
				case 176:
				case 177:
				case 178:
				case 179:
				case 180:
				case 181:
				case 182:
				case 183:
				case 184:
				case 185:
				case 186:
				case 187:
				case 188:
				case 189:
				case 190:
				case 191:
				case 192:
				case 193:
				case 194:
				case 195:
				case 196:
				case 197:
				case 198:
				case 199:
				case 202:
				case 203:
				case 205:
				case 206:
				case 207:
				case 208:
				case 209:
				case 210:
				case 211:
				case 212:
				case 214:
				case 217:
				case 218:
				case 219:
				case 220:
				case 222:
				case 223:
				case 224:
				case 225:
				case 226:
				case 227:
				case 228:
				case 229:
				case 230:
				case 231:
				case 232:
				case 233:
				case 234:
				case 235:
				case 236:
				case 238:
				case 239:
				case 240:
				case 241:
				case 242:
				case 243:
				case 244:
				case 246:
				case 247:
				case 248:
				case 249:
				case 250:
				case 251:
				case 252:
				case 253:
				case 254:
				case 255:
				case 256:
				case 257:
				case 258:
				case 259:
				case 260:
				case 261:
				case 262:
				case 263:
				case 264:
				case 265:
				case 266:
				case 267:
				case 268:
				case 270:
				case 271:
				case 272:
				case 273:
				case 274:
				case 275:
				case 276:
				case 277:
				case 278:
				case 279:
				case 280:
				case 281:
				case 282:
				case 283:
				case 284:
				case 285:
				case 286:
				case 287:
				case 288:
				case 289:
				case 290:
				case 291:
				case 292:
				case 293:
				case 294:
				case 295:
				case 296:
				case 297:
				case 298:
				case 299:
				case 300:
				case 301:
				case 302:
				case 303:
				case 304:
				case 305:
				case 306:
					{
					this.state = 3451;
					this.symbolicAliasNameList();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public commandOptions(): CommandOptionsContext {
		let localctx: CommandOptionsContext = new CommandOptionsContext(this, this._ctx, this.state);
		this.enterRule(localctx, 598, CypherCmdParser.RULE_commandOptions);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3456;
			this.match(CypherCmdParser.OPTIONS);
			this.state = 3457;
			this.mapOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public commandNameExpression(): CommandNameExpressionContext {
		let localctx: CommandNameExpressionContext = new CommandNameExpressionContext(this, this._ctx, this.state);
		this.enterRule(localctx, 600, CypherCmdParser.RULE_commandNameExpression);
		try {
			this.state = 3461;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3459;
				this.symbolicNameString();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3460;
				this.parameter("STRING");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		let localctx: SymbolicNameOrStringParameterContext = new SymbolicNameOrStringParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 602, CypherCmdParser.RULE_symbolicNameOrStringParameter);
		try {
			this.state = 3465;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3463;
				this.symbolicNameString();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3464;
				this.parameter("STRING");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public createAlias(): CreateAliasContext {
		let localctx: CreateAliasContext = new CreateAliasContext(this, this._ctx, this.state);
		this.enterRule(localctx, 604, CypherCmdParser.RULE_createAlias);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3467;
			this.match(CypherCmdParser.ALIAS);
			this.state = 3468;
			this.symbolicAliasNameOrParameter();
			this.state = 3472;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3469;
				this.match(CypherCmdParser.IF);
				this.state = 3470;
				this.match(CypherCmdParser.NOT);
				this.state = 3471;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3474;
			this.match(CypherCmdParser.FOR);
			this.state = 3475;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3476;
			this.symbolicAliasNameOrParameter();
			this.state = 3487;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===33) {
				{
				this.state = 3477;
				this.match(CypherCmdParser.AT);
				this.state = 3478;
				this.stringOrParameter();
				this.state = 3479;
				this.match(CypherCmdParser.USER);
				this.state = 3480;
				this.commandNameExpression();
				this.state = 3481;
				this.match(CypherCmdParser.PASSWORD);
				this.state = 3482;
				this.passwordExpression();
				this.state = 3485;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===89) {
					{
					this.state = 3483;
					this.match(CypherCmdParser.DRIVER);
					this.state = 3484;
					this.mapOrParameter();
					}
				}

				}
			}

			this.state = 3491;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===211) {
				{
				this.state = 3489;
				this.match(CypherCmdParser.PROPERTIES);
				this.state = 3490;
				this.mapOrParameter();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public dropAlias(): DropAliasContext {
		let localctx: DropAliasContext = new DropAliasContext(this, this._ctx, this.state);
		this.enterRule(localctx, 606, CypherCmdParser.RULE_dropAlias);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3493;
			this.match(CypherCmdParser.ALIAS);
			this.state = 3494;
			this.symbolicAliasNameOrParameter();
			this.state = 3497;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3495;
				this.match(CypherCmdParser.IF);
				this.state = 3496;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3499;
			this.match(CypherCmdParser.FOR);
			this.state = 3500;
			this.match(CypherCmdParser.DATABASE);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAlias(): AlterAliasContext {
		let localctx: AlterAliasContext = new AlterAliasContext(this, this._ctx, this.state);
		this.enterRule(localctx, 608, CypherCmdParser.RULE_alterAlias);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3502;
			this.match(CypherCmdParser.ALIAS);
			this.state = 3503;
			this.symbolicAliasNameOrParameter();
			this.state = 3506;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===130) {
				{
				this.state = 3504;
				this.match(CypherCmdParser.IF);
				this.state = 3505;
				this.match(CypherCmdParser.EXISTS);
				}
			}

			this.state = 3508;
			this.match(CypherCmdParser.SET);
			this.state = 3509;
			this.match(CypherCmdParser.DATABASE);
			this.state = 3515;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				this.state = 3515;
				this._errHandler.sync(this);
				switch (this._input.LA(1)) {
				case 264:
					{
					this.state = 3510;
					this.alterAliasTarget();
					}
					break;
				case 289:
					{
					this.state = 3511;
					this.alterAliasUser();
					}
					break;
				case 194:
					{
					this.state = 3512;
					this.alterAliasPassword();
					}
					break;
				case 89:
					{
					this.state = 3513;
					this.alterAliasDriver();
					}
					break;
				case 211:
					{
					this.state = 3514;
					this.alterAliasProperties();
					}
					break;
				default:
					throw new NoViableAltException(this);
				}
				}
				this.state = 3517;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===89 || _la===194 || _la===211 || _la===264 || _la===289);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAliasTarget(): AlterAliasTargetContext {
		let localctx: AlterAliasTargetContext = new AlterAliasTargetContext(this, this._ctx, this.state);
		this.enterRule(localctx, 610, CypherCmdParser.RULE_alterAliasTarget);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3519;
			this.match(CypherCmdParser.TARGET);
			this.state = 3520;
			this.symbolicAliasNameOrParameter();
			this.state = 3523;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===33) {
				{
				this.state = 3521;
				this.match(CypherCmdParser.AT);
				this.state = 3522;
				this.stringOrParameter();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAliasUser(): AlterAliasUserContext {
		let localctx: AlterAliasUserContext = new AlterAliasUserContext(this, this._ctx, this.state);
		this.enterRule(localctx, 612, CypherCmdParser.RULE_alterAliasUser);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3525;
			this.match(CypherCmdParser.USER);
			this.state = 3526;
			this.commandNameExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAliasPassword(): AlterAliasPasswordContext {
		let localctx: AlterAliasPasswordContext = new AlterAliasPasswordContext(this, this._ctx, this.state);
		this.enterRule(localctx, 614, CypherCmdParser.RULE_alterAliasPassword);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3528;
			this.match(CypherCmdParser.PASSWORD);
			this.state = 3529;
			this.passwordExpression();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAliasDriver(): AlterAliasDriverContext {
		let localctx: AlterAliasDriverContext = new AlterAliasDriverContext(this, this._ctx, this.state);
		this.enterRule(localctx, 616, CypherCmdParser.RULE_alterAliasDriver);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3531;
			this.match(CypherCmdParser.DRIVER);
			this.state = 3532;
			this.mapOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public alterAliasProperties(): AlterAliasPropertiesContext {
		let localctx: AlterAliasPropertiesContext = new AlterAliasPropertiesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 618, CypherCmdParser.RULE_alterAliasProperties);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3534;
			this.match(CypherCmdParser.PROPERTIES);
			this.state = 3535;
			this.mapOrParameter();
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public showAliases(): ShowAliasesContext {
		let localctx: ShowAliasesContext = new ShowAliasesContext(this, this._ctx, this.state);
		this.enterRule(localctx, 620, CypherCmdParser.RULE_showAliases);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3537;
			_la = this._input.LA(1);
			if(!(_la===20 || _la===21)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3539;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 445, this._ctx) ) {
			case 1:
				{
				this.state = 3538;
				this.symbolicAliasNameOrParameter();
				}
				break;
			}
			this.state = 3541;
			this.match(CypherCmdParser.FOR);
			this.state = 3542;
			_la = this._input.LA(1);
			if(!(_la===68 || _la===69)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			this.state = 3544;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if (_la===299 || _la===304) {
				{
				this.state = 3543;
				this.showCommandYield();
				}
			}

			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicAliasNameList(): SymbolicAliasNameListContext {
		let localctx: SymbolicAliasNameListContext = new SymbolicAliasNameListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 622, CypherCmdParser.RULE_symbolicAliasNameList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3546;
			this.symbolicAliasNameOrParameter();
			this.state = 3551;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 3547;
				this.match(CypherCmdParser.COMMA);
				this.state = 3548;
				this.symbolicAliasNameOrParameter();
				}
				}
				this.state = 3553;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		let localctx: SymbolicAliasNameOrParameterContext = new SymbolicAliasNameOrParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 624, CypherCmdParser.RULE_symbolicAliasNameOrParameter);
		try {
			this.state = 3556;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3554;
				this.symbolicAliasName();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3555;
				this.parameter("STRING");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicAliasName(): SymbolicAliasNameContext {
		let localctx: SymbolicAliasNameContext = new SymbolicAliasNameContext(this, this._ctx, this.state);
		this.enterRule(localctx, 626, CypherCmdParser.RULE_symbolicAliasName);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3558;
			this.symbolicNameString();
			this.state = 3563;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===86) {
				{
				{
				this.state = 3559;
				this.match(CypherCmdParser.DOT);
				this.state = 3560;
				this.symbolicNameString();
				}
				}
				this.state = 3565;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicNameOrStringParameterList(): SymbolicNameOrStringParameterListContext {
		let localctx: SymbolicNameOrStringParameterListContext = new SymbolicNameOrStringParameterListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 628, CypherCmdParser.RULE_symbolicNameOrStringParameterList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3566;
			this.commandNameExpression();
			this.state = 3571;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			while (_la===52) {
				{
				{
				this.state = 3567;
				this.match(CypherCmdParser.COMMA);
				this.state = 3568;
				this.commandNameExpression();
				}
				}
				this.state = 3573;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public glob(): GlobContext {
		let localctx: GlobContext = new GlobContext(this, this._ctx, this.state);
		this.enterRule(localctx, 630, CypherCmdParser.RULE_glob);
		try {
			this.state = 3579;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3574;
				this.escapedSymbolicNameString();
				this.state = 3576;
				this._errHandler.sync(this);
				switch ( this._interp.adaptivePredict(this._input, 451, this._ctx) ) {
				case 1:
					{
					this.state = 3575;
					this.globRecursive();
					}
					break;
				}
				}
				break;
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 86:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 213:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 269:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3578;
				this.globRecursive();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public globRecursive(): GlobRecursiveContext {
		let localctx: GlobRecursiveContext = new GlobRecursiveContext(this, this._ctx, this.state);
		this.enterRule(localctx, 632, CypherCmdParser.RULE_globRecursive);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3581;
			this.globPart();
			this.state = 3583;
			this._errHandler.sync(this);
			switch ( this._interp.adaptivePredict(this._input, 453, this._ctx) ) {
			case 1:
				{
				this.state = 3582;
				this.globRecursive();
				}
				break;
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public globPart(): GlobPartContext {
		let localctx: GlobPartContext = new GlobPartContext(this, this._ctx, this.state);
		this.enterRule(localctx, 634, CypherCmdParser.RULE_globPart);
		let _la: number;
		try {
			this.state = 3592;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 86:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3585;
				this.match(CypherCmdParser.DOT);
				this.state = 3587;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				if (_la===15) {
					{
					this.state = 3586;
					this.escapedSymbolicNameString();
					}
				}

				}
				break;
			case 213:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3589;
				this.match(CypherCmdParser.QUESTION);
				}
				break;
			case 269:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3590;
				this.match(CypherCmdParser.TIMES);
				}
				break;
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3591;
				this.unescapedSymbolicNameString();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stringList(): StringListContext {
		let localctx: StringListContext = new StringListContext(this, this._ctx, this.state);
		this.enterRule(localctx, 636, CypherCmdParser.RULE_stringList);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3594;
			this.stringLiteral();
			this.state = 3597;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			do {
				{
				{
				this.state = 3595;
				this.match(CypherCmdParser.COMMA);
				this.state = 3596;
				this.stringLiteral();
				}
				}
				this.state = 3599;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
			} while (_la===52);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stringLiteral(): StringLiteralContext {
		let localctx: StringLiteralContext = new StringLiteralContext(this, this._ctx, this.state);
		this.enterRule(localctx, 638, CypherCmdParser.RULE_stringLiteral);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3601;
			_la = this._input.LA(1);
			if(!(_la===13 || _la===14)) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public stringOrParameter(): StringOrParameterContext {
		let localctx: StringOrParameterContext = new StringOrParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 640, CypherCmdParser.RULE_stringOrParameter);
		try {
			this.state = 3605;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 13:
			case 14:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3603;
				this.stringLiteral();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3604;
				this.parameter("STRING");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public mapOrParameter(): MapOrParameterContext {
		let localctx: MapOrParameterContext = new MapOrParameterContext(this, this._ctx, this.state);
		this.enterRule(localctx, 642, CypherCmdParser.RULE_mapOrParameter);
		try {
			this.state = 3609;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 149:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3607;
				this.map();
				}
				break;
			case 83:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3608;
				this.parameter("MAP");
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public map(): MapContext {
		let localctx: MapContext = new MapContext(this, this._ctx, this.state);
		this.enterRule(localctx, 644, CypherCmdParser.RULE_map);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3611;
			this.match(CypherCmdParser.LCURLY);
			this.state = 3625;
			this._errHandler.sync(this);
			_la = this._input.LA(1);
			if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294934528) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4294967175) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4294959103) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0)) {
				{
				this.state = 3612;
				this.propertyKeyName();
				this.state = 3613;
				this.match(CypherCmdParser.COLON);
				this.state = 3614;
				this.expression();
				this.state = 3622;
				this._errHandler.sync(this);
				_la = this._input.LA(1);
				while (_la===52) {
					{
					{
					this.state = 3615;
					this.match(CypherCmdParser.COMMA);
					this.state = 3616;
					this.propertyKeyName();
					this.state = 3617;
					this.match(CypherCmdParser.COLON);
					this.state = 3618;
					this.expression();
					}
					}
					this.state = 3624;
					this._errHandler.sync(this);
					_la = this._input.LA(1);
				}
				}
			}

			this.state = 3627;
			this.match(CypherCmdParser.RCURLY);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicNameString(): SymbolicNameStringContext {
		let localctx: SymbolicNameStringContext = new SymbolicNameStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 646, CypherCmdParser.RULE_symbolicNameString);
		try {
			this.state = 3631;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3629;
				this.escapedSymbolicNameString();
				}
				break;
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 170:
			case 171:
			case 172:
			case 173:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 180:
			case 181:
			case 182:
			case 183:
			case 184:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 281:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3630;
				this.unescapedSymbolicNameString();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public escapedSymbolicNameString(): EscapedSymbolicNameStringContext {
		let localctx: EscapedSymbolicNameStringContext = new EscapedSymbolicNameStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 648, CypherCmdParser.RULE_escapedSymbolicNameString);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3633;
			this.match(CypherCmdParser.ESCAPED_SYMBOLIC_NAME);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public unescapedSymbolicNameString(): UnescapedSymbolicNameStringContext {
		let localctx: UnescapedSymbolicNameStringContext = new UnescapedSymbolicNameStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 650, CypherCmdParser.RULE_unescapedSymbolicNameString);
		try {
			this.state = 3644;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 182:
			case 183:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3635;
				this.unescapedLabelSymbolicNameString();
				}
				break;
			case 181:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3636;
				this.match(CypherCmdParser.NOT);
				}
				break;
			case 184:
				this.enterOuterAlt(localctx, 3);
				{
				this.state = 3637;
				this.match(CypherCmdParser.NULL);
				}
				break;
			case 281:
				this.enterOuterAlt(localctx, 4);
				{
				this.state = 3638;
				this.match(CypherCmdParser.TYPED);
				}
				break;
			case 180:
				this.enterOuterAlt(localctx, 5);
				{
				this.state = 3639;
				this.match(CypherCmdParser.NORMALIZED);
				}
				break;
			case 170:
				this.enterOuterAlt(localctx, 6);
				{
				this.state = 3640;
				this.match(CypherCmdParser.NFC);
				}
				break;
			case 171:
				this.enterOuterAlt(localctx, 7);
				{
				this.state = 3641;
				this.match(CypherCmdParser.NFD);
				}
				break;
			case 172:
				this.enterOuterAlt(localctx, 8);
				{
				this.state = 3642;
				this.match(CypherCmdParser.NFKC);
				}
				break;
			case 173:
				this.enterOuterAlt(localctx, 9);
				{
				this.state = 3643;
				this.match(CypherCmdParser.NFKD);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public symbolicLabelNameString(): SymbolicLabelNameStringContext {
		let localctx: SymbolicLabelNameStringContext = new SymbolicLabelNameStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 652, CypherCmdParser.RULE_symbolicLabelNameString);
		try {
			this.state = 3648;
			this._errHandler.sync(this);
			switch (this._input.LA(1)) {
			case 15:
				this.enterOuterAlt(localctx, 1);
				{
				this.state = 3646;
				this.escapedSymbolicNameString();
				}
				break;
			case 16:
			case 17:
			case 18:
			case 19:
			case 20:
			case 21:
			case 22:
			case 23:
			case 24:
			case 25:
			case 26:
			case 27:
			case 28:
			case 29:
			case 30:
			case 31:
			case 32:
			case 33:
			case 35:
			case 36:
			case 37:
			case 38:
			case 39:
			case 40:
			case 41:
			case 42:
			case 43:
			case 44:
			case 45:
			case 46:
			case 47:
			case 48:
			case 49:
			case 53:
			case 54:
			case 55:
			case 56:
			case 57:
			case 58:
			case 59:
			case 60:
			case 61:
			case 62:
			case 63:
			case 64:
			case 65:
			case 66:
			case 67:
			case 68:
			case 69:
			case 70:
			case 71:
			case 72:
			case 73:
			case 74:
			case 75:
			case 76:
			case 77:
			case 78:
			case 79:
			case 80:
			case 81:
			case 82:
			case 84:
			case 89:
			case 90:
			case 91:
			case 92:
			case 93:
			case 94:
			case 95:
			case 96:
			case 97:
			case 98:
			case 99:
			case 100:
			case 101:
			case 102:
			case 104:
			case 105:
			case 106:
			case 107:
			case 108:
			case 109:
			case 110:
			case 111:
			case 112:
			case 113:
			case 114:
			case 115:
			case 116:
			case 117:
			case 118:
			case 119:
			case 120:
			case 122:
			case 123:
			case 124:
			case 125:
			case 126:
			case 128:
			case 129:
			case 130:
			case 131:
			case 132:
			case 133:
			case 134:
			case 135:
			case 136:
			case 137:
			case 138:
			case 139:
			case 140:
			case 141:
			case 142:
			case 143:
			case 144:
			case 145:
			case 151:
			case 152:
			case 153:
			case 154:
			case 155:
			case 156:
			case 159:
			case 160:
			case 161:
			case 162:
			case 167:
			case 168:
			case 169:
			case 174:
			case 175:
			case 176:
			case 177:
			case 178:
			case 179:
			case 182:
			case 183:
			case 185:
			case 186:
			case 187:
			case 188:
			case 189:
			case 190:
			case 191:
			case 192:
			case 193:
			case 194:
			case 195:
			case 196:
			case 197:
			case 198:
			case 199:
			case 202:
			case 203:
			case 205:
			case 206:
			case 207:
			case 208:
			case 209:
			case 210:
			case 211:
			case 212:
			case 214:
			case 217:
			case 218:
			case 219:
			case 220:
			case 222:
			case 223:
			case 224:
			case 225:
			case 226:
			case 227:
			case 228:
			case 229:
			case 230:
			case 231:
			case 232:
			case 233:
			case 234:
			case 235:
			case 236:
			case 238:
			case 239:
			case 240:
			case 241:
			case 242:
			case 243:
			case 244:
			case 246:
			case 247:
			case 248:
			case 249:
			case 250:
			case 251:
			case 252:
			case 253:
			case 254:
			case 255:
			case 256:
			case 257:
			case 258:
			case 259:
			case 260:
			case 261:
			case 262:
			case 263:
			case 264:
			case 265:
			case 266:
			case 267:
			case 268:
			case 270:
			case 271:
			case 272:
			case 273:
			case 274:
			case 275:
			case 276:
			case 277:
			case 278:
			case 279:
			case 280:
			case 282:
			case 283:
			case 284:
			case 285:
			case 286:
			case 287:
			case 288:
			case 289:
			case 290:
			case 291:
			case 292:
			case 293:
			case 294:
			case 295:
			case 296:
			case 297:
			case 298:
			case 299:
			case 300:
			case 301:
			case 302:
			case 303:
			case 304:
			case 305:
			case 306:
				this.enterOuterAlt(localctx, 2);
				{
				this.state = 3647;
				this.unescapedLabelSymbolicNameString();
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public unescapedLabelSymbolicNameString(): UnescapedLabelSymbolicNameStringContext {
		let localctx: UnescapedLabelSymbolicNameStringContext = new UnescapedLabelSymbolicNameStringContext(this, this._ctx, this.state);
		this.enterRule(localctx, 654, CypherCmdParser.RULE_unescapedLabelSymbolicNameString);
		let _la: number;
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3650;
			_la = this._input.LA(1);
			if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 4294901760) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4293132283) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 4262985727) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 2113929087) !== 0) || ((((_la - 128)) & ~0x1F) === 0 && ((1 << (_la - 128)) & 2676228095) !== 0) || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 4275028871) !== 0) || ((((_la - 192)) & ~0x1F) === 0 && ((1 << (_la - 192)) & 3730828543) !== 0) || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 4292861951) !== 0) || ((((_la - 256)) & ~0x1F) === 0 && ((1 << (_la - 256)) & 4261404671) !== 0) || ((((_la - 288)) & ~0x1F) === 0 && ((1 << (_la - 288)) & 524287) !== 0))) {
			this._errHandler.recoverInline(this);
			}
			else {
				this._errHandler.reportMatch(this);
			    this.consume();
			}
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}
	// @RuleVersion(0)
	public endOfFile(): EndOfFileContext {
		let localctx: EndOfFileContext = new EndOfFileContext(this, this._ctx, this.state);
		this.enterRule(localctx, 656, CypherCmdParser.RULE_endOfFile);
		try {
			this.enterOuterAlt(localctx, 1);
			{
			this.state = 3652;
			this.match(CypherCmdParser.EOF);
			}
		}
		catch (re) {
			if (re instanceof RecognitionException) {
				localctx.exception = re;
				this._errHandler.reportError(this, re);
				this._errHandler.recover(this, re);
			} else {
				throw re;
			}
		}
		finally {
			this.exitRule();
		}
		return localctx;
	}

	public static readonly _serializedATN: number[] = [4,1,310,3655,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,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,
	7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,
	7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,
	7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,
	7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,
	7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,
	7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,
	7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,
	7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,
	7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,
	7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,
	7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,
	7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,
	7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,
	7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,
	7,325,2,326,7,326,2,327,7,327,2,328,7,328,1,0,1,0,1,0,5,0,662,8,0,10,0,
	12,0,665,9,0,1,0,3,0,668,8,0,1,0,1,0,1,1,1,1,3,1,674,8,1,1,2,1,2,1,2,1,
	2,1,2,3,2,681,8,2,1,3,1,3,3,3,685,8,3,1,4,1,4,1,4,1,4,3,4,691,8,4,1,5,1,
	5,1,5,1,5,1,5,1,6,1,6,1,7,1,7,1,8,1,8,3,8,704,8,8,1,9,1,9,1,10,1,10,1,11,
	3,11,711,8,11,1,11,1,11,1,12,1,12,1,13,1,13,1,13,5,13,720,8,13,10,13,12,
	13,723,9,13,1,13,3,13,726,8,13,1,13,1,13,1,14,3,14,731,8,14,1,14,1,14,3,
	14,735,8,14,1,15,1,15,1,15,1,15,3,15,741,8,15,1,16,1,16,1,16,3,16,746,8,
	16,1,16,5,16,749,8,16,10,16,12,16,752,9,16,1,17,4,17,755,8,17,11,17,12,
	17,756,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,
	1,18,1,18,1,18,3,18,775,8,18,1,19,1,19,3,19,779,8,19,1,19,1,19,1,20,1,20,
	1,20,1,20,1,20,1,20,3,20,789,8,20,1,21,1,21,1,22,1,22,1,22,1,23,3,23,797,
	8,23,1,23,1,23,3,23,801,8,23,1,23,3,23,804,8,23,1,23,3,23,807,8,23,1,24,
	1,24,1,24,3,24,812,8,24,1,25,1,25,3,25,816,8,25,1,25,1,25,5,25,820,8,25,
	10,25,12,25,823,9,25,1,26,1,26,1,26,3,26,828,8,26,1,27,1,27,1,28,1,28,1,
	29,1,29,1,29,1,29,1,29,5,29,839,8,29,10,29,12,29,842,9,29,1,30,1,30,1,30,
	1,31,1,31,1,31,1,32,1,32,1,32,1,33,1,33,1,33,3,33,856,8,33,1,34,1,34,1,
	34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,5,36,868,8,36,10,36,12,36,871,9,36,
	1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,
	37,1,37,1,37,1,37,3,37,891,8,37,1,38,1,38,1,38,1,38,5,38,897,8,38,10,38,
	12,38,900,9,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,909,8,39,1,40,3,
	40,912,8,40,1,40,1,40,1,40,1,40,5,40,918,8,40,10,40,12,40,921,9,40,1,41,
	3,41,924,8,41,1,41,1,41,3,41,928,8,41,1,41,1,41,5,41,932,8,41,10,41,12,
	41,935,9,41,1,41,3,41,938,8,41,1,42,1,42,1,42,3,42,943,8,42,1,42,3,42,946,
	8,42,1,42,1,42,1,42,3,42,951,8,42,1,42,3,42,954,8,42,3,42,956,8,42,1,43,
	1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,3,43,968,8,43,1,43,3,43,971,
	8,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,3,
	43,986,8,43,1,44,1,44,1,44,5,44,991,8,44,10,44,12,44,994,9,44,1,45,1,45,
	1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,5,47,1011,
	8,47,10,47,12,47,1014,9,47,3,47,1016,8,47,1,47,3,47,1019,8,47,1,47,1,47,
	1,47,1,47,1,47,5,47,1026,8,47,10,47,12,47,1029,9,47,1,47,3,47,1032,8,47,
	3,47,1034,8,47,3,47,1036,8,47,1,48,1,48,1,48,1,49,1,49,1,50,1,50,1,50,3,
	50,1046,8,50,1,51,1,51,1,51,1,51,3,51,1052,8,51,1,51,1,51,1,51,1,51,1,51,
	1,51,3,51,1060,8,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,4,52,1069,8,52,11,
	52,12,52,1070,1,52,1,52,1,53,1,53,1,53,1,53,1,53,3,53,1080,8,53,1,54,1,
	54,3,54,1084,8,54,1,54,3,54,1087,8,54,1,54,1,54,1,54,1,54,5,54,1093,8,54,
	10,54,12,54,1096,9,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,57,1,57,
	1,57,1,57,1,57,1,58,1,58,1,58,5,58,1114,8,58,10,58,12,58,1117,9,58,1,59,
	1,59,1,59,5,59,1122,8,59,10,59,12,59,1125,9,59,1,60,1,60,1,60,3,60,1130,
	8,60,1,60,3,60,1133,8,60,1,60,1,60,1,61,1,61,1,61,3,61,1140,8,61,1,61,1,
	61,1,61,1,61,5,61,1146,8,61,10,61,12,61,1149,9,61,1,62,1,62,1,62,1,62,1,
	62,3,62,1156,8,62,1,62,1,62,3,62,1160,8,62,1,62,1,62,1,62,3,62,1165,8,62,
	1,63,1,63,3,63,1169,8,63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,3,65,1179,
	8,65,1,65,1,65,5,65,1183,8,65,10,65,12,65,1186,9,65,1,65,4,65,1189,8,65,
	11,65,12,65,1190,1,66,1,66,1,66,3,66,1196,8,66,1,66,1,66,1,66,3,66,1201,
	8,66,1,66,1,66,3,66,1205,8,66,1,66,3,66,1208,8,66,1,66,1,66,3,66,1212,8,
	66,1,66,1,66,3,66,1216,8,66,1,66,3,66,1219,8,66,1,66,1,66,1,66,1,66,3,66,
	1225,8,66,3,66,1227,8,66,1,67,1,67,1,68,1,68,1,69,1,69,1,69,1,69,4,69,1237,
	8,69,11,69,12,69,1238,1,70,1,70,3,70,1243,8,70,1,70,3,70,1246,8,70,1,70,
	3,70,1249,8,70,1,70,1,70,3,70,1253,8,70,1,70,1,70,1,71,1,71,3,71,1259,8,
	71,1,71,3,71,1262,8,71,1,71,3,71,1265,8,71,1,71,1,71,1,72,1,72,1,72,1,72,
	3,72,1273,8,72,1,72,1,72,3,72,1277,8,72,1,73,4,73,1280,8,73,11,73,12,73,
	1281,1,74,1,74,1,74,5,74,1287,8,74,10,74,12,74,1290,9,74,1,75,1,75,1,75,
	1,76,1,76,1,76,1,77,1,77,1,77,1,78,1,78,3,78,1303,8,78,1,79,3,79,1306,8,
	79,1,79,1,79,1,79,3,79,1311,8,79,1,79,3,79,1314,8,79,1,79,3,79,1317,8,79,
	1,79,3,79,1320,8,79,1,79,1,79,3,79,1324,8,79,1,79,3,79,1327,8,79,1,79,1,
	79,3,79,1331,8,79,1,80,3,80,1334,8,80,1,80,1,80,1,80,3,80,1339,8,80,1,80,
	1,80,3,80,1343,8,80,1,80,1,80,1,80,3,80,1348,8,80,1,81,1,81,1,82,1,82,1,
	83,1,83,1,84,1,84,3,84,1358,8,84,1,84,1,84,3,84,1362,8,84,1,84,3,84,1365,
	8,84,1,85,1,85,1,85,1,85,3,85,1371,8,85,1,86,1,86,1,86,3,86,1376,8,86,1,
	86,5,86,1379,8,86,10,86,12,86,1382,9,86,1,87,1,87,1,87,3,87,1387,8,87,1,
	87,5,87,1390,8,87,10,87,12,87,1393,9,87,1,88,1,88,1,88,5,88,1398,8,88,10,
	88,12,88,1401,9,88,1,89,1,89,1,89,5,89,1406,8,89,10,89,12,89,1409,9,89,
	1,90,5,90,1412,8,90,10,90,12,90,1415,9,90,1,90,1,90,1,91,5,91,1420,8,91,
	10,91,12,91,1423,9,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,3,92,1433,
	8,92,1,93,1,93,1,93,1,93,1,93,1,93,3,93,1441,8,93,1,94,1,94,1,94,1,94,5,
	94,1447,8,94,10,94,12,94,1450,9,94,1,95,1,95,1,95,1,96,1,96,1,96,5,96,1458,
	8,96,10,96,12,96,1461,9,96,1,97,1,97,1,97,5,97,1466,8,97,10,97,12,97,1469,
	9,97,1,98,1,98,1,98,5,98,1474,8,98,10,98,12,98,1477,9,98,1,99,5,99,1480,
	8,99,10,99,12,99,1483,9,99,1,99,1,99,1,100,1,100,1,100,5,100,1490,8,100,
	10,100,12,100,1493,9,100,1,101,1,101,3,101,1497,8,101,1,102,1,102,1,102,
	1,102,1,102,1,102,1,102,3,102,1506,8,102,1,102,1,102,1,102,3,102,1511,8,
	102,1,102,1,102,1,102,3,102,1516,8,102,1,102,1,102,3,102,1520,8,102,1,102,
	1,102,1,102,3,102,1525,8,102,1,102,3,102,1528,8,102,1,102,3,102,1531,8,
	102,1,103,1,103,1,104,1,104,1,104,5,104,1538,8,104,10,104,12,104,1541,9,
	104,1,105,1,105,1,105,5,105,1546,8,105,10,105,12,105,1549,9,105,1,106,1,
	106,1,106,5,106,1554,8,106,10,106,12,106,1557,9,106,1,107,1,107,1,107,3,
	107,1562,8,107,1,108,1,108,5,108,1566,8,108,10,108,12,108,1569,9,108,1,
	109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,3,109,1579,8,109,1,109,1,
	109,3,109,1583,8,109,1,109,3,109,1586,8,109,1,110,1,110,1,110,1,111,1,111,
	4,111,1593,8,111,11,111,12,111,1594,1,112,1,112,1,112,1,112,1,112,1,112,
	1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,
	1,112,1,112,1,112,3,112,1618,8,112,1,113,1,113,1,113,1,113,1,113,1,113,
	1,113,1,113,1,113,3,113,1629,8,113,1,114,1,114,4,114,1633,8,114,11,114,
	12,114,1634,1,114,1,114,3,114,1639,8,114,1,114,1,114,1,115,1,115,1,115,
	1,115,1,115,1,116,1,116,1,116,4,116,1651,8,116,11,116,12,116,1652,1,116,
	1,116,3,116,1657,8,116,1,116,1,116,1,117,1,117,1,117,1,117,5,117,1665,8,
	117,10,117,12,117,1668,9,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,
	1,118,3,118,1678,8,118,1,118,1,118,1,118,3,118,1683,8,118,1,118,1,118,1,
	118,3,118,1688,8,118,1,118,1,118,3,118,1692,8,118,1,118,1,118,1,118,3,118,
	1697,8,118,1,118,3,118,1700,8,118,1,118,1,118,1,118,1,118,3,118,1706,8,
	118,1,119,1,119,1,119,1,119,1,119,1,119,3,119,1714,8,119,1,119,1,119,1,
	119,1,119,1,119,1,119,3,119,1722,8,119,1,119,3,119,1725,8,119,1,120,1,120,
	1,120,1,120,3,120,1731,8,120,1,120,1,120,1,120,3,120,1736,8,120,1,120,1,
	120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,
	121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,1762,
	8,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,3,123,1771,8,123,1,123,
	1,123,1,124,1,124,1,124,3,124,1778,8,124,1,124,3,124,1781,8,124,1,124,3,
	124,1784,8,124,1,124,1,124,1,124,1,125,1,125,1,126,1,126,1,127,1,127,1,
	127,1,127,1,128,1,128,1,128,1,128,1,128,5,128,1802,8,128,10,128,12,128,
	1805,9,128,3,128,1807,8,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,
	129,1,129,1,129,3,129,1819,8,129,1,130,1,130,1,130,1,130,1,130,1,131,1,
	131,1,131,1,131,3,131,1830,8,131,1,131,1,131,3,131,1834,8,131,3,131,1836,
	8,131,1,131,1,131,1,132,1,132,1,132,1,132,3,132,1844,8,132,1,132,1,132,
	3,132,1848,8,132,3,132,1850,8,132,1,132,1,132,1,133,1,133,1,133,1,133,1,
	133,1,134,3,134,1860,8,134,1,134,1,134,1,135,3,135,1865,8,135,1,135,1,135,
	1,136,1,136,1,136,1,136,5,136,1873,8,136,10,136,12,136,1876,9,136,3,136,
	1878,8,136,1,136,1,136,1,137,1,137,1,138,1,138,1,138,1,139,1,139,3,139,
	1889,8,139,1,140,1,140,1,140,3,140,1894,8,140,1,140,1,140,1,140,5,140,1899,
	8,140,10,140,12,140,1902,9,140,3,140,1904,8,140,1,140,1,140,1,141,1,141,
	1,142,1,142,1,142,1,143,1,143,1,143,5,143,1916,8,143,10,143,12,143,1919,
	9,143,1,144,1,144,1,145,1,145,1,145,5,145,1926,8,145,10,145,12,145,1929,
	9,145,1,146,3,146,1932,8,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,
	1,146,1,146,1,146,1,146,1,146,1,146,3,146,1947,8,146,1,147,1,147,1,147,
	3,147,1952,8,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,3,147,1961,8,
	147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,1971,8,148,1,
	149,1,149,1,149,1,149,1,149,1,149,3,149,1979,8,149,1,150,1,150,1,150,1,
	150,3,150,1985,8,150,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,
	151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,1,151,3,151,2004,8,151,1,
	152,1,152,3,152,2008,8,152,1,152,3,152,2011,8,152,1,153,1,153,1,153,3,153,
	2016,8,153,1,154,1,154,1,154,1,155,1,155,1,155,1,156,1,156,1,156,1,156,
	1,156,5,156,2029,8,156,10,156,12,156,2032,9,156,3,156,2034,8,156,1,156,
	3,156,2037,8,156,1,156,3,156,2040,8,156,1,156,3,156,2043,8,156,1,156,3,
	156,2046,8,156,1,157,1,157,3,157,2050,8,157,1,157,1,157,3,157,2054,8,157,
	1,157,3,157,2057,8,157,1,158,1,158,1,158,3,158,2062,8,158,1,158,3,158,2065,
	8,158,1,159,1,159,3,159,2069,8,159,1,159,3,159,2072,8,159,1,160,1,160,3,
	160,2076,8,160,1,160,3,160,2079,8,160,1,161,3,161,2082,8,161,1,161,1,161,
	1,161,1,161,1,161,1,161,1,161,3,161,2091,8,161,1,161,1,161,1,161,1,161,
	1,161,1,161,3,161,2099,8,161,1,161,1,161,1,161,3,161,2104,8,161,1,161,3,
	161,2107,8,161,1,162,1,162,1,162,1,162,3,162,2113,8,162,1,163,1,163,1,163,
	1,163,1,163,3,163,2120,8,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,
	1,164,1,164,3,164,2131,8,164,1,165,1,165,3,165,2135,8,165,1,165,3,165,2138,
	8,165,1,166,1,166,1,166,3,166,2143,8,166,3,166,2145,8,166,1,166,3,166,2148,
	8,166,1,167,1,167,3,167,2152,8,167,1,167,3,167,2155,8,167,1,168,1,168,3,
	168,2159,8,168,1,168,3,168,2162,8,168,1,168,3,168,2165,8,168,1,169,3,169,
	2168,8,169,1,169,1,169,3,169,2172,8,169,1,169,3,169,2175,8,169,1,169,3,
	169,2178,8,169,1,170,1,170,1,171,1,171,1,171,1,171,1,171,3,171,2187,8,171,
	3,171,2189,8,171,1,172,1,172,1,172,1,172,1,172,3,172,2196,8,172,1,173,1,
	173,1,173,1,174,1,174,1,174,1,175,1,175,1,175,1,176,1,176,1,176,1,177,1,
	177,1,178,3,178,2213,8,178,1,178,1,178,3,178,2217,8,178,3,178,2219,8,178,
	1,178,3,178,2222,8,178,1,179,1,179,3,179,2226,8,179,1,180,1,180,1,180,1,
	180,1,180,1,180,1,180,3,180,2235,8,180,1,181,1,181,3,181,2239,8,181,1,182,
	1,182,1,182,5,182,2244,8,182,10,182,12,182,2247,9,182,1,183,1,183,3,183,
	2251,8,183,1,183,5,183,2254,8,183,10,183,12,183,2257,9,183,1,184,1,184,
	1,184,1,184,1,184,1,184,1,184,1,184,3,184,2267,8,184,1,184,1,184,1,184,
	1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,3,184,2281,8,184,
	1,184,1,184,1,184,1,184,1,184,3,184,2288,8,184,1,184,1,184,1,184,1,184,
	1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,
	1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,3,184,2315,8,184,
	1,184,1,184,1,184,1,184,1,184,3,184,2322,8,184,3,184,2324,8,184,1,185,1,
	185,1,185,3,185,2329,8,185,1,186,1,186,3,186,2333,8,186,1,187,1,187,1,187,
	1,187,1,187,1,188,1,188,1,188,3,188,2343,8,188,1,188,1,188,1,188,1,188,
	1,188,1,188,1,188,3,188,2352,8,188,1,188,1,188,1,188,1,189,1,189,3,189,
	2359,8,189,1,189,1,189,1,189,3,189,2364,8,189,1,189,1,189,1,189,3,189,2369,
	8,189,1,189,1,189,3,189,2373,8,189,1,190,1,190,1,190,1,190,1,190,1,190,
	1,190,1,190,3,190,2383,8,190,1,190,1,190,1,190,1,190,1,190,1,190,3,190,
	2391,8,190,1,190,1,190,1,190,1,190,1,190,1,190,3,190,2399,8,190,1,190,1,
	190,1,190,1,190,1,190,1,190,1,190,1,190,3,190,2409,8,190,1,191,1,191,1,
	191,1,191,3,191,2415,8,191,1,191,1,191,1,191,1,191,1,191,1,191,1,191,1,
	191,1,191,1,191,3,191,2427,8,191,3,191,2429,8,191,1,191,1,191,1,191,3,191,
	2434,8,191,3,191,2436,8,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,
	192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,
	192,1,192,1,192,1,192,1,192,1,192,3,192,2463,8,192,3,192,2465,8,192,1,193,
	1,193,1,193,1,193,1,193,1,194,3,194,2473,8,194,1,194,1,194,1,194,3,194,
	2478,8,194,1,194,1,194,1,194,3,194,2483,8,194,1,194,1,194,1,194,3,194,2488,
	8,194,1,195,3,195,2491,8,195,1,195,1,195,1,195,3,195,2496,8,195,1,195,1,
	195,1,195,3,195,2501,8,195,1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,
	195,1,195,5,195,2512,8,195,10,195,12,195,2515,9,195,1,195,1,195,3,195,2519,
	8,195,1,196,1,196,1,196,1,196,1,196,1,196,5,196,2527,8,196,10,196,12,196,
	2530,9,196,1,196,1,196,1,197,1,197,1,197,3,197,2537,8,197,1,197,1,197,1,
	197,1,197,1,197,1,197,1,197,5,197,2546,8,197,10,197,12,197,2549,9,197,1,
	197,1,197,1,197,3,197,2554,8,197,1,197,1,197,1,197,1,198,3,198,2560,8,198,
	1,198,1,198,1,198,3,198,2565,8,198,1,198,1,198,1,198,3,198,2570,8,198,1,
	198,1,198,1,198,1,198,1,198,3,198,2577,8,198,1,199,1,199,1,199,1,199,1,
	199,1,199,1,200,1,200,1,200,3,200,2588,8,200,1,200,1,200,1,200,1,200,1,
	200,1,200,3,200,2596,8,200,1,200,1,200,1,200,1,200,3,200,2602,8,200,1,201,
	1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,3,201,2614,8,201,
	3,201,2616,8,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,
	1,202,5,202,2628,8,202,10,202,12,202,2631,9,202,1,202,1,202,3,202,2635,
	8,202,1,203,1,203,1,203,1,203,3,203,2641,8,203,1,204,1,204,1,204,1,204,
	1,204,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,207,1,207,3,207,
	2658,8,207,1,208,3,208,2661,8,208,1,208,1,208,3,208,2665,8,208,1,209,1,
	209,1,209,1,209,1,209,1,209,1,209,5,209,2674,8,209,10,209,12,209,2677,9,
	209,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,3,211,2687,8,211,1,
	211,1,211,1,211,1,211,3,211,2693,8,211,1,212,1,212,1,212,1,212,3,212,2699,
	8,212,1,213,1,213,1,213,1,213,3,213,2705,8,213,1,213,1,213,1,213,1,214,
	3,214,2711,8,214,1,214,1,214,1,214,3,214,2716,8,214,1,214,3,214,2719,8,
	214,1,215,1,215,1,216,1,216,1,216,1,216,1,216,3,216,2728,8,216,1,216,1,
	216,1,216,1,216,1,216,1,216,1,216,3,216,2737,8,216,5,216,2739,8,216,10,
	216,12,216,2742,9,216,1,217,1,217,1,217,1,217,3,217,2748,8,217,1,218,1,
	218,1,218,1,218,3,218,2754,8,218,1,218,1,218,1,218,1,219,1,219,1,219,1,
	219,1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,3,220,2772,8,
	220,1,220,1,220,1,220,1,220,1,220,1,220,3,220,2780,8,220,4,220,2782,8,220,
	11,220,12,220,2783,1,220,1,220,1,220,3,220,2789,8,220,1,221,3,221,2792,
	8,221,1,221,1,221,1,221,3,221,2797,8,221,1,222,1,222,3,222,2801,8,222,1,
	223,1,223,3,223,2805,8,223,1,223,1,223,1,224,1,224,1,224,1,225,1,225,1,
	225,1,225,1,226,1,226,3,226,2818,8,226,1,227,1,227,1,227,3,227,2823,8,227,
	1,228,3,228,2826,8,228,1,228,1,228,3,228,2830,8,228,1,228,3,228,2833,8,
	228,1,229,1,229,1,229,3,229,2838,8,229,1,230,1,230,1,230,1,230,3,230,2844,
	8,230,1,230,3,230,2847,8,230,1,231,1,231,3,231,2851,8,231,1,231,1,231,3,
	231,2855,8,231,1,231,3,231,2858,8,231,1,232,1,232,3,232,2862,8,232,1,232,
	1,232,1,233,1,233,1,234,1,234,3,234,2870,8,234,1,234,1,234,1,234,1,234,
	1,234,1,234,1,234,3,234,2879,8,234,1,235,1,235,1,235,1,235,1,236,1,236,
	1,237,1,237,1,238,1,238,3,238,2891,8,238,1,238,1,238,1,238,1,238,1,239,
	1,239,3,239,2899,8,239,1,239,3,239,2902,8,239,1,239,1,239,1,239,1,239,1,
	239,1,239,1,239,3,239,2911,8,239,1,240,1,240,1,240,1,240,1,241,1,241,1,
	241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,241,3,241,2929,8,
	241,1,242,1,242,3,242,2933,8,242,1,242,1,242,1,242,1,243,3,243,2939,8,243,
	1,243,1,243,1,244,1,244,1,244,1,244,1,244,3,244,2948,8,244,1,244,1,244,
	1,244,3,244,2953,8,244,1,244,3,244,2956,8,244,1,245,1,245,1,245,1,245,1,
	245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,3,245,2971,8,245,1,
	246,1,246,1,246,1,246,1,246,3,246,2978,8,246,1,247,1,247,3,247,2982,8,247,
	1,247,1,247,1,248,1,248,3,248,2988,8,248,1,248,1,248,1,249,1,249,3,249,
	2994,8,249,1,249,1,249,1,250,1,250,3,250,3000,8,250,1,250,1,250,1,250,3,
	250,3005,8,250,1,251,1,251,1,251,3,251,3010,8,251,1,251,1,251,1,251,1,251,
	1,251,1,251,1,251,3,251,3019,8,251,1,252,1,252,1,252,1,252,1,252,1,252,
	3,252,3027,8,252,1,253,1,253,1,253,1,253,1,253,3,253,3034,8,253,3,253,3036,
	8,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,1,253,
	1,253,3,253,3050,8,253,1,253,1,253,3,253,3054,8,253,1,254,1,254,1,254,1,
	254,1,254,1,254,3,254,3062,8,254,1,254,1,254,3,254,3066,8,254,1,254,1,254,
	1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,3,254,
	3081,8,254,1,255,1,255,1,256,1,256,1,256,1,256,1,256,1,256,1,256,1,256,
	1,256,3,256,3094,8,256,1,257,1,257,1,257,1,257,1,258,1,258,1,258,1,258,
	1,258,1,258,3,258,3106,8,258,1,258,3,258,3109,8,258,1,258,1,258,3,258,3113,
	8,258,1,258,1,258,3,258,3117,8,258,1,258,3,258,3120,8,258,3,258,3122,8,
	258,1,258,1,258,1,258,1,259,1,259,1,259,1,259,1,259,1,259,3,259,3133,8,
	259,1,259,1,259,1,259,1,259,1,259,3,259,3140,8,259,1,259,1,259,1,259,1,
	259,1,259,1,259,3,259,3148,8,259,3,259,3150,8,259,1,259,1,259,1,259,1,260,
	1,260,1,260,1,260,1,260,3,260,3160,8,260,1,260,1,260,1,260,1,260,1,260,
	3,260,3167,8,260,3,260,3169,8,260,1,260,1,260,1,260,3,260,3174,8,260,3,
	260,3176,8,260,1,261,1,261,1,262,1,262,1,263,1,263,1,264,1,264,1,265,1,
	265,1,266,1,266,1,266,3,266,3191,8,266,1,266,1,266,1,267,1,267,1,268,1,
	268,1,269,1,269,1,270,1,270,1,270,5,270,3204,8,270,10,270,12,270,3207,9,
	270,1,271,1,271,1,271,3,271,3212,8,271,1,271,1,271,1,271,1,271,1,271,1,
	271,3,271,3220,8,271,1,272,1,272,1,272,3,272,3225,8,272,1,272,1,272,1,272,
	1,272,1,273,1,273,3,273,3233,8,273,1,274,1,274,1,274,3,274,3238,8,274,1,
	274,1,274,1,275,1,275,1,275,5,275,3245,8,275,10,275,12,275,3248,9,275,1,
	276,1,276,1,276,3,276,3253,8,276,1,276,1,276,1,276,3,276,3258,8,276,1,276,
	1,276,1,276,1,276,5,276,3264,8,276,10,276,12,276,3267,9,276,3,276,3269,
	8,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,3277,8,276,1,276,1,276,
	3,276,3281,8,276,3,276,3283,8,276,1,277,1,277,1,277,3,277,3288,8,277,1,
	278,1,278,1,279,1,279,1,280,1,280,1,281,1,281,1,281,1,281,1,281,1,281,3,
	281,3302,8,281,1,281,3,281,3305,8,281,1,281,3,281,3308,8,281,1,282,1,282,
	1,282,1,282,1,282,3,282,3315,8,282,1,282,1,282,1,282,4,282,3320,8,282,11,
	282,12,282,3321,3,282,3324,8,282,1,282,3,282,3327,8,282,1,282,3,282,3330,
	8,282,1,283,1,283,1,283,1,284,1,284,1,285,1,285,1,285,1,286,1,286,1,287,
	3,287,3343,8,287,1,287,1,287,1,287,1,287,3,287,3349,8,287,1,287,1,287,3,
	287,3353,8,287,1,287,3,287,3356,8,287,1,288,1,288,1,288,1,288,3,288,3362,
	8,288,1,288,1,288,1,288,1,288,3,288,3368,8,288,4,288,3370,8,288,11,288,
	12,288,3371,1,288,1,288,1,288,4,288,3377,8,288,11,288,12,288,3378,3,288,
	3381,8,288,1,288,3,288,3384,8,288,1,289,1,289,1,289,1,289,1,290,1,290,1,
	290,4,290,3393,8,290,11,290,12,290,3394,1,291,1,291,1,291,1,291,1,292,1,
	292,1,292,1,292,3,292,3405,8,292,1,293,1,293,1,293,1,293,3,293,3411,8,293,
	1,294,1,294,1,294,3,294,3416,8,294,3,294,3418,8,294,1,294,3,294,3421,8,
	294,1,295,1,295,1,296,1,296,1,296,3,296,3428,8,296,1,296,1,296,3,296,3432,
	8,296,1,296,3,296,3435,8,296,3,296,3437,8,296,1,297,1,297,1,297,1,297,1,
	297,3,297,3444,8,297,3,297,3446,8,297,1,298,1,298,1,298,1,298,1,298,3,298,
	3453,8,298,3,298,3455,8,298,1,299,1,299,1,299,1,300,1,300,3,300,3462,8,
	300,1,301,1,301,3,301,3466,8,301,1,302,1,302,1,302,1,302,1,302,3,302,3473,
	8,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,
	3,302,3486,8,302,3,302,3488,8,302,1,302,1,302,3,302,3492,8,302,1,303,1,
	303,1,303,1,303,3,303,3498,8,303,1,303,1,303,1,303,1,304,1,304,1,304,1,
	304,3,304,3507,8,304,1,304,1,304,1,304,1,304,1,304,1,304,1,304,4,304,3516,
	8,304,11,304,12,304,3517,1,305,1,305,1,305,1,305,3,305,3524,8,305,1,306,
	1,306,1,306,1,307,1,307,1,307,1,308,1,308,1,308,1,309,1,309,1,309,1,310,
	1,310,3,310,3540,8,310,1,310,1,310,1,310,3,310,3545,8,310,1,311,1,311,1,
	311,5,311,3550,8,311,10,311,12,311,3553,9,311,1,312,1,312,3,312,3557,8,
	312,1,313,1,313,1,313,5,313,3562,8,313,10,313,12,313,3565,9,313,1,314,1,
	314,1,314,5,314,3570,8,314,10,314,12,314,3573,9,314,1,315,1,315,3,315,3577,
	8,315,1,315,3,315,3580,8,315,1,316,1,316,3,316,3584,8,316,1,317,1,317,3,
	317,3588,8,317,1,317,1,317,1,317,3,317,3593,8,317,1,318,1,318,1,318,4,318,
	3598,8,318,11,318,12,318,3599,1,319,1,319,1,320,1,320,3,320,3606,8,320,
	1,321,1,321,3,321,3610,8,321,1,322,1,322,1,322,1,322,1,322,1,322,1,322,
	1,322,1,322,5,322,3621,8,322,10,322,12,322,3624,9,322,3,322,3626,8,322,
	1,322,1,322,1,323,1,323,3,323,3632,8,323,1,324,1,324,1,325,1,325,1,325,
	1,325,1,325,1,325,1,325,1,325,1,325,3,325,3645,8,325,1,326,1,326,3,326,
	3649,8,326,1,327,1,327,1,328,1,328,1,328,0,0,329,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,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,
	506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,
	542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,
	578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,
	614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,
	650,652,654,656,0,76,1,0,4,5,2,0,23,23,84,84,1,0,29,30,1,0,78,79,2,0,81,
	81,176,176,2,0,64,64,161,161,1,0,235,236,3,0,40,40,62,62,110,110,2,0,22,
	22,251,251,1,0,125,126,1,0,196,197,2,0,158,158,308,308,2,0,163,163,307,
	307,2,0,127,127,309,309,2,0,50,50,146,146,2,0,50,50,141,141,6,0,103,103,
	121,121,127,127,150,150,158,158,165,166,2,0,51,51,281,281,1,0,170,173,3,
	0,88,88,163,163,200,200,3,0,85,85,164,164,269,269,2,0,163,163,200,200,4,
	0,23,23,26,26,178,178,255,255,3,0,39,39,151,151,274,274,1,0,9,12,2,0,41,
	41,295,295,6,0,118,118,156,156,202,202,214,214,266,266,294,294,2,0,23,23,
	42,42,2,0,175,175,222,223,1,0,222,223,2,0,175,175,223,223,1,0,209,210,1,
	0,119,120,1,0,249,250,2,0,71,71,268,268,2,0,27,27,153,153,2,0,115,115,186,
	186,2,0,31,31,229,229,1,0,246,247,1,0,68,69,2,0,23,23,203,203,1,0,289,290,
	1,0,233,234,2,0,100,100,199,199,2,0,17,17,263,263,1,0,53,54,1,0,207,208,
	2,0,77,77,122,122,3,0,68,68,72,72,123,123,2,0,74,74,129,129,2,0,68,68,123,
	123,1,0,123,124,1,0,144,145,2,0,280,280,282,282,1,0,167,168,2,0,48,48,287,
	287,1,0,194,195,2,0,207,207,233,233,3,0,20,20,68,68,289,289,2,0,233,233,
	289,289,1,0,18,19,1,0,134,135,1,0,58,59,1,0,275,276,2,0,161,161,217,217,
	1,0,223,224,1,0,97,98,2,0,175,175,177,177,1,0,205,206,1,0,241,242,2,0,80,
	80,92,92,2,0,187,187,302,302,2,0,239,240,243,243,1,0,20,21,1,0,13,14,23,
	0,16,33,35,49,53,82,84,84,89,102,104,120,122,126,128,145,151,156,159,162,
	167,169,174,179,182,183,185,199,202,203,205,212,214,214,217,220,222,236,
	238,244,246,268,270,280,282,306,4019,0,658,1,0,0,0,2,673,1,0,0,0,4,675,
	1,0,0,0,6,682,1,0,0,0,8,690,1,0,0,0,10,692,1,0,0,0,12,697,1,0,0,0,14,699,
	1,0,0,0,16,701,1,0,0,0,18,705,1,0,0,0,20,707,1,0,0,0,22,710,1,0,0,0,24,
	714,1,0,0,0,26,716,1,0,0,0,28,730,1,0,0,0,30,736,1,0,0,0,32,742,1,0,0,0,
	34,754,1,0,0,0,36,774,1,0,0,0,38,776,1,0,0,0,40,788,1,0,0,0,42,790,1,0,
	0,0,44,792,1,0,0,0,46,796,1,0,0,0,48,808,1,0,0,0,50,815,1,0,0,0,52,824,
	1,0,0,0,54,829,1,0,0,0,56,831,1,0,0,0,58,833,1,0,0,0,60,843,1,0,0,0,62,
	846,1,0,0,0,64,849,1,0,0,0,66,852,1,0,0,0,68,857,1,0,0,0,70,860,1,0,0,0,
	72,863,1,0,0,0,74,890,1,0,0,0,76,892,1,0,0,0,78,908,1,0,0,0,80,911,1,0,
	0,0,82,923,1,0,0,0,84,955,1,0,0,0,86,957,1,0,0,0,88,987,1,0,0,0,90,995,
	1,0,0,0,92,999,1,0,0,0,94,1004,1,0,0,0,96,1037,1,0,0,0,98,1040,1,0,0,0,
	100,1042,1,0,0,0,102,1047,1,0,0,0,104,1061,1,0,0,0,106,1074,1,0,0,0,108,
	1081,1,0,0,0,110,1097,1,0,0,0,112,1101,1,0,0,0,114,1105,1,0,0,0,116,1110,
	1,0,0,0,118,1118,1,0,0,0,120,1129,1,0,0,0,122,1139,1,0,0,0,124,1164,1,0,
	0,0,126,1168,1,0,0,0,128,1170,1,0,0,0,130,1188,1,0,0,0,132,1226,1,0,0,0,
	134,1228,1,0,0,0,136,1230,1,0,0,0,138,1232,1,0,0,0,140,1240,1,0,0,0,142,
	1256,1,0,0,0,144,1268,1,0,0,0,146,1279,1,0,0,0,148,1283,1,0,0,0,150,1291,
	1,0,0,0,152,1294,1,0,0,0,154,1297,1,0,0,0,156,1302,1,0,0,0,158,1305,1,0,
	0,0,160,1333,1,0,0,0,162,1349,1,0,0,0,164,1351,1,0,0,0,166,1353,1,0,0,0,
	168,1355,1,0,0,0,170,1370,1,0,0,0,172,1372,1,0,0,0,174,1383,1,0,0,0,176,
	1394,1,0,0,0,178,1402,1,0,0,0,180,1413,1,0,0,0,182,1421,1,0,0,0,184,1432,
	1,0,0,0,186,1440,1,0,0,0,188,1442,1,0,0,0,190,1451,1,0,0,0,192,1454,1,0,
	0,0,194,1462,1,0,0,0,196,1470,1,0,0,0,198,1481,1,0,0,0,200,1486,1,0,0,0,
	202,1494,1,0,0,0,204,1530,1,0,0,0,206,1532,1,0,0,0,208,1534,1,0,0,0,210,
	1542,1,0,0,0,212,1550,1,0,0,0,214,1561,1,0,0,0,216,1563,1,0,0,0,218,1585,
	1,0,0,0,220,1587,1,0,0,0,222,1590,1,0,0,0,224,1617,1,0,0,0,226,1628,1,0,
	0,0,228,1630,1,0,0,0,230,1642,1,0,0,0,232,1647,1,0,0,0,234,1660,1,0,0,0,
	236,1705,1,0,0,0,238,1707,1,0,0,0,240,1726,1,0,0,0,242,1741,1,0,0,0,244,
	1754,1,0,0,0,246,1765,1,0,0,0,248,1774,1,0,0,0,250,1788,1,0,0,0,252,1790,
	1,0,0,0,254,1792,1,0,0,0,256,1796,1,0,0,0,258,1818,1,0,0,0,260,1820,1,0,
	0,0,262,1825,1,0,0,0,264,1839,1,0,0,0,266,1853,1,0,0,0,268,1859,1,0,0,0,
	270,1864,1,0,0,0,272,1868,1,0,0,0,274,1881,1,0,0,0,276,1883,1,0,0,0,278,
	1888,1,0,0,0,280,1890,1,0,0,0,282,1907,1,0,0,0,284,1909,1,0,0,0,286,1917,
	1,0,0,0,288,1920,1,0,0,0,290,1922,1,0,0,0,292,1931,1,0,0,0,294,1948,1,0,
	0,0,296,1962,1,0,0,0,298,1972,1,0,0,0,300,1980,1,0,0,0,302,1986,1,0,0,0,
	304,2010,1,0,0,0,306,2012,1,0,0,0,308,2017,1,0,0,0,310,2020,1,0,0,0,312,
	2023,1,0,0,0,314,2056,1,0,0,0,316,2064,1,0,0,0,318,2066,1,0,0,0,320,2073,
	1,0,0,0,322,2106,1,0,0,0,324,2112,1,0,0,0,326,2119,1,0,0,0,328,2130,1,0,
	0,0,330,2132,1,0,0,0,332,2139,1,0,0,0,334,2149,1,0,0,0,336,2156,1,0,0,0,
	338,2167,1,0,0,0,340,2179,1,0,0,0,342,2181,1,0,0,0,344,2195,1,0,0,0,346,
	2197,1,0,0,0,348,2200,1,0,0,0,350,2203,1,0,0,0,352,2206,1,0,0,0,354,2209,
	1,0,0,0,356,2218,1,0,0,0,358,2225,1,0,0,0,360,2227,1,0,0,0,362,2238,1,0,
	0,0,364,2240,1,0,0,0,366,2248,1,0,0,0,368,2323,1,0,0,0,370,2328,1,0,0,0,
	372,2330,1,0,0,0,374,2334,1,0,0,0,376,2339,1,0,0,0,378,2356,1,0,0,0,380,
	2408,1,0,0,0,382,2410,1,0,0,0,384,2464,1,0,0,0,386,2466,1,0,0,0,388,2472,
	1,0,0,0,390,2490,1,0,0,0,392,2520,1,0,0,0,394,2533,1,0,0,0,396,2559,1,0,
	0,0,398,2578,1,0,0,0,400,2584,1,0,0,0,402,2603,1,0,0,0,404,2634,1,0,0,0,
	406,2636,1,0,0,0,408,2642,1,0,0,0,410,2647,1,0,0,0,412,2652,1,0,0,0,414,
	2655,1,0,0,0,416,2660,1,0,0,0,418,2666,1,0,0,0,420,2678,1,0,0,0,422,2681,
	1,0,0,0,424,2694,1,0,0,0,426,2700,1,0,0,0,428,2710,1,0,0,0,430,2720,1,0,
	0,0,432,2722,1,0,0,0,434,2743,1,0,0,0,436,2749,1,0,0,0,438,2758,1,0,0,0,
	440,2767,1,0,0,0,442,2791,1,0,0,0,444,2800,1,0,0,0,446,2802,1,0,0,0,448,
	2808,1,0,0,0,450,2811,1,0,0,0,452,2815,1,0,0,0,454,2819,1,0,0,0,456,2825,
	1,0,0,0,458,2834,1,0,0,0,460,2839,1,0,0,0,462,2848,1,0,0,0,464,2859,1,0,
	0,0,466,2865,1,0,0,0,468,2867,1,0,0,0,470,2880,1,0,0,0,472,2884,1,0,0,0,
	474,2886,1,0,0,0,476,2888,1,0,0,0,478,2896,1,0,0,0,480,2912,1,0,0,0,482,
	2928,1,0,0,0,484,2930,1,0,0,0,486,2938,1,0,0,0,488,2955,1,0,0,0,490,2957,
	1,0,0,0,492,2977,1,0,0,0,494,2979,1,0,0,0,496,2985,1,0,0,0,498,2991,1,0,
	0,0,500,3004,1,0,0,0,502,3006,1,0,0,0,504,3020,1,0,0,0,506,3028,1,0,0,0,
	508,3055,1,0,0,0,510,3082,1,0,0,0,512,3084,1,0,0,0,514,3095,1,0,0,0,516,
	3121,1,0,0,0,518,3149,1,0,0,0,520,3154,1,0,0,0,522,3177,1,0,0,0,524,3179,
	1,0,0,0,526,3181,1,0,0,0,528,3183,1,0,0,0,530,3185,1,0,0,0,532,3187,1,0,
	0,0,534,3194,1,0,0,0,536,3196,1,0,0,0,538,3198,1,0,0,0,540,3200,1,0,0,0,
	542,3211,1,0,0,0,544,3224,1,0,0,0,546,3232,1,0,0,0,548,3234,1,0,0,0,550,
	3241,1,0,0,0,552,3282,1,0,0,0,554,3287,1,0,0,0,556,3289,1,0,0,0,558,3291,
	1,0,0,0,560,3293,1,0,0,0,562,3295,1,0,0,0,564,3309,1,0,0,0,566,3331,1,0,
	0,0,568,3334,1,0,0,0,570,3336,1,0,0,0,572,3339,1,0,0,0,574,3342,1,0,0,0,
	576,3357,1,0,0,0,578,3385,1,0,0,0,580,3389,1,0,0,0,582,3396,1,0,0,0,584,
	3400,1,0,0,0,586,3406,1,0,0,0,588,3420,1,0,0,0,590,3422,1,0,0,0,592,3436,
	1,0,0,0,594,3445,1,0,0,0,596,3454,1,0,0,0,598,3456,1,0,0,0,600,3461,1,0,
	0,0,602,3465,1,0,0,0,604,3467,1,0,0,0,606,3493,1,0,0,0,608,3502,1,0,0,0,
	610,3519,1,0,0,0,612,3525,1,0,0,0,614,3528,1,0,0,0,616,3531,1,0,0,0,618,
	3534,1,0,0,0,620,3537,1,0,0,0,622,3546,1,0,0,0,624,3556,1,0,0,0,626,3558,
	1,0,0,0,628,3566,1,0,0,0,630,3579,1,0,0,0,632,3581,1,0,0,0,634,3592,1,0,
	0,0,636,3594,1,0,0,0,638,3601,1,0,0,0,640,3605,1,0,0,0,642,3609,1,0,0,0,
	644,3611,1,0,0,0,646,3631,1,0,0,0,648,3633,1,0,0,0,650,3644,1,0,0,0,652,
	3648,1,0,0,0,654,3650,1,0,0,0,656,3652,1,0,0,0,658,663,3,2,1,0,659,660,
	5,245,0,0,660,662,3,2,1,0,661,659,1,0,0,0,662,665,1,0,0,0,663,661,1,0,0,
	0,663,664,1,0,0,0,664,667,1,0,0,0,665,663,1,0,0,0,666,668,5,245,0,0,667,
	666,1,0,0,0,667,668,1,0,0,0,668,669,1,0,0,0,669,670,5,0,0,1,670,1,1,0,0,
	0,671,674,3,22,11,0,672,674,3,4,2,0,673,671,1,0,0,0,673,672,1,0,0,0,674,
	3,1,0,0,0,675,680,5,50,0,0,676,681,3,12,6,0,677,681,3,14,7,0,678,681,3,
	16,8,0,679,681,3,6,3,0,680,676,1,0,0,0,680,677,1,0,0,0,680,678,1,0,0,0,
	680,679,1,0,0,0,681,5,1,0,0,0,682,684,5,1,0,0,683,685,3,8,4,0,684,683,1,
	0,0,0,684,685,1,0,0,0,685,7,1,0,0,0,686,691,5,2,0,0,687,691,3,18,9,0,688,
	691,3,644,322,0,689,691,3,10,5,0,690,686,1,0,0,0,690,687,1,0,0,0,690,688,
	1,0,0,0,690,689,1,0,0,0,691,9,1,0,0,0,692,693,3,650,325,0,693,694,5,103,
	0,0,694,695,5,127,0,0,695,696,3,192,96,0,696,11,1,0,0,0,697,698,5,2,0,0,
	698,13,1,0,0,0,699,700,5,3,0,0,700,15,1,0,0,0,701,703,3,20,10,0,702,704,
	3,626,313,0,703,702,1,0,0,0,703,704,1,0,0,0,704,17,1,0,0,0,705,706,5,153,
	0,0,706,19,1,0,0,0,707,708,5,288,0,0,708,21,1,0,0,0,709,711,3,24,12,0,710,
	709,1,0,0,0,710,711,1,0,0,0,711,712,1,0,0,0,712,713,3,28,14,0,713,23,1,
	0,0,0,714,715,7,0,0,0,715,25,1,0,0,0,716,721,3,28,14,0,717,718,5,245,0,
	0,718,720,3,28,14,0,719,717,1,0,0,0,720,723,1,0,0,0,721,719,1,0,0,0,721,
	722,1,0,0,0,722,725,1,0,0,0,723,721,1,0,0,0,724,726,5,245,0,0,725,724,1,
	0,0,0,725,726,1,0,0,0,726,727,1,0,0,0,727,728,5,0,0,1,728,27,1,0,0,0,729,
	731,3,30,15,0,730,729,1,0,0,0,730,731,1,0,0,0,731,734,1,0,0,0,732,735,3,
	292,146,0,733,735,3,32,16,0,734,732,1,0,0,0,734,733,1,0,0,0,735,29,1,0,
	0,0,736,737,5,291,0,0,737,738,5,198,0,0,738,740,5,55,0,0,739,741,5,10,0,
	0,740,739,1,0,0,0,740,741,1,0,0,0,741,31,1,0,0,0,742,750,3,34,17,0,743,
	745,5,283,0,0,744,746,7,1,0,0,745,744,1,0,0,0,745,746,1,0,0,0,746,747,1,
	0,0,0,747,749,3,34,17,0,748,743,1,0,0,0,749,752,1,0,0,0,750,748,1,0,0,0,
	750,751,1,0,0,0,751,33,1,0,0,0,752,750,1,0,0,0,753,755,3,36,18,0,754,753,
	1,0,0,0,755,756,1,0,0,0,756,754,1,0,0,0,756,757,1,0,0,0,757,35,1,0,0,0,
	758,775,3,38,19,0,759,775,3,42,21,0,760,775,3,44,22,0,761,775,3,68,34,0,
	762,775,3,70,35,0,763,775,3,80,40,0,764,775,3,72,36,0,765,775,3,76,38,0,
	766,775,3,82,41,0,767,775,3,88,44,0,768,775,3,66,33,0,769,775,3,92,46,0,
	770,775,3,94,47,0,771,775,3,106,53,0,772,775,3,102,51,0,773,775,3,104,52,
	0,774,758,1,0,0,0,774,759,1,0,0,0,774,760,1,0,0,0,774,761,1,0,0,0,774,762,
	1,0,0,0,774,763,1,0,0,0,774,764,1,0,0,0,774,765,1,0,0,0,774,766,1,0,0,0,
	774,767,1,0,0,0,774,768,1,0,0,0,774,769,1,0,0,0,774,770,1,0,0,0,774,771,
	1,0,0,0,774,772,1,0,0,0,774,773,1,0,0,0,775,37,1,0,0,0,776,778,5,288,0,
	0,777,779,5,123,0,0,778,777,1,0,0,0,778,779,1,0,0,0,779,780,1,0,0,0,780,
	781,3,40,20,0,781,39,1,0,0,0,782,783,5,157,0,0,783,784,3,40,20,0,784,785,
	5,237,0,0,785,789,1,0,0,0,786,789,3,280,140,0,787,789,3,626,313,0,788,782,
	1,0,0,0,788,786,1,0,0,0,788,787,1,0,0,0,789,41,1,0,0,0,790,791,5,113,0,
	0,791,43,1,0,0,0,792,793,5,231,0,0,793,794,3,46,23,0,794,45,1,0,0,0,795,
	797,5,84,0,0,796,795,1,0,0,0,796,797,1,0,0,0,797,798,1,0,0,0,798,800,3,
	50,25,0,799,801,3,58,29,0,800,799,1,0,0,0,800,801,1,0,0,0,801,803,1,0,0,
	0,802,804,3,60,30,0,803,802,1,0,0,0,803,804,1,0,0,0,804,806,1,0,0,0,805,
	807,3,62,31,0,806,805,1,0,0,0,806,807,1,0,0,0,807,47,1,0,0,0,808,811,3,
	192,96,0,809,810,5,28,0,0,810,812,3,288,144,0,811,809,1,0,0,0,811,812,1,
	0,0,0,812,49,1,0,0,0,813,816,5,269,0,0,814,816,3,48,24,0,815,813,1,0,0,
	0,815,814,1,0,0,0,816,821,1,0,0,0,817,818,5,52,0,0,818,820,3,48,24,0,819,
	817,1,0,0,0,820,823,1,0,0,0,821,819,1,0,0,0,821,822,1,0,0,0,822,51,1,0,
	0,0,823,821,1,0,0,0,824,827,3,192,96,0,825,828,3,54,27,0,826,828,3,56,28,
	0,827,825,1,0,0,0,827,826,1,0,0,0,827,828,1,0,0,0,828,53,1,0,0,0,829,830,
	7,2,0,0,830,55,1,0,0,0,831,832,7,3,0,0,832,57,1,0,0,0,833,834,5,192,0,0,
	834,835,5,44,0,0,835,840,3,52,26,0,836,837,5,52,0,0,837,839,3,52,26,0,838,
	836,1,0,0,0,839,842,1,0,0,0,840,838,1,0,0,0,840,841,1,0,0,0,841,59,1,0,
	0,0,842,840,1,0,0,0,843,844,5,256,0,0,844,845,3,192,96,0,845,61,1,0,0,0,
	846,847,5,152,0,0,847,848,3,192,96,0,848,63,1,0,0,0,849,850,5,299,0,0,850,
	851,3,192,96,0,851,65,1,0,0,0,852,853,5,300,0,0,853,855,3,46,23,0,854,856,
	3,64,32,0,855,854,1,0,0,0,855,856,1,0,0,0,856,67,1,0,0,0,857,858,5,64,0,
	0,858,859,3,116,58,0,859,69,1,0,0,0,860,861,5,138,0,0,861,862,3,118,59,
	0,862,71,1,0,0,0,863,864,5,248,0,0,864,869,3,74,37,0,865,866,5,52,0,0,866,
	868,3,74,37,0,867,865,1,0,0,0,868,871,1,0,0,0,869,867,1,0,0,0,869,870,1,
	0,0,0,870,73,1,0,0,0,871,869,1,0,0,0,872,873,3,222,111,0,873,874,5,103,
	0,0,874,875,3,192,96,0,875,891,1,0,0,0,876,877,3,288,144,0,877,878,5,103,
	0,0,878,879,3,192,96,0,879,891,1,0,0,0,880,881,3,288,144,0,881,882,5,201,
	0,0,882,883,3,192,96,0,883,891,1,0,0,0,884,885,3,288,144,0,885,886,3,146,
	73,0,886,891,1,0,0,0,887,888,3,288,144,0,888,889,3,148,74,0,889,891,1,0,
	0,0,890,872,1,0,0,0,890,876,1,0,0,0,890,880,1,0,0,0,890,884,1,0,0,0,890,
	887,1,0,0,0,891,75,1,0,0,0,892,893,5,225,0,0,893,898,3,78,39,0,894,895,
	5,52,0,0,895,897,3,78,39,0,896,894,1,0,0,0,897,900,1,0,0,0,898,896,1,0,
	0,0,898,899,1,0,0,0,899,77,1,0,0,0,900,898,1,0,0,0,901,909,3,222,111,0,
	902,903,3,288,144,0,903,904,3,146,73,0,904,909,1,0,0,0,905,906,3,288,144,
	0,906,907,3,148,74,0,907,909,1,0,0,0,908,901,1,0,0,0,908,902,1,0,0,0,908,
	905,1,0,0,0,909,79,1,0,0,0,910,912,7,4,0,0,911,910,1,0,0,0,911,912,1,0,
	0,0,912,913,1,0,0,0,913,914,5,76,0,0,914,919,3,192,96,0,915,916,5,52,0,
	0,916,918,3,192,96,0,917,915,1,0,0,0,918,921,1,0,0,0,919,917,1,0,0,0,919,
	920,1,0,0,0,920,81,1,0,0,0,921,919,1,0,0,0,922,924,5,188,0,0,923,922,1,
	0,0,0,923,924,1,0,0,0,924,925,1,0,0,0,925,927,5,161,0,0,926,928,3,84,42,
	0,927,926,1,0,0,0,927,928,1,0,0,0,928,929,1,0,0,0,929,933,3,116,58,0,930,
	932,3,86,43,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,937,1,0,0,0,935,933,1,0,0,0,936,938,3,64,32,0,937,936,1,0,0,0,
	937,938,1,0,0,0,938,83,1,0,0,0,939,945,5,226,0,0,940,942,5,97,0,0,941,943,
	5,35,0,0,942,941,1,0,0,0,942,943,1,0,0,0,943,946,1,0,0,0,944,946,5,98,0,
	0,945,940,1,0,0,0,945,944,1,0,0,0,946,956,1,0,0,0,947,953,5,82,0,0,948,
	950,5,223,0,0,949,951,5,35,0,0,950,949,1,0,0,0,950,951,1,0,0,0,951,954,
	1,0,0,0,952,954,5,224,0,0,953,948,1,0,0,0,953,952,1,0,0,0,954,956,1,0,0,
	0,955,939,1,0,0,0,955,947,1,0,0,0,956,85,1,0,0,0,957,985,5,291,0,0,958,
	968,5,134,0,0,959,960,5,42,0,0,960,968,5,134,0,0,961,962,5,266,0,0,962,
	968,5,134,0,0,963,964,5,214,0,0,964,968,5,134,0,0,965,966,5,202,0,0,966,
	968,5,134,0,0,967,958,1,0,0,0,967,959,1,0,0,0,967,961,1,0,0,0,967,963,1,
	0,0,0,967,965,1,0,0,0,968,970,1,0,0,0,969,971,5,244,0,0,970,969,1,0,0,0,
	970,971,1,0,0,0,971,972,1,0,0,0,972,973,3,288,144,0,973,974,3,154,77,0,
	974,975,5,157,0,0,975,976,3,290,145,0,976,977,5,237,0,0,977,986,1,0,0,0,
	978,979,5,142,0,0,979,980,5,186,0,0,980,986,3,290,145,0,981,982,5,238,0,
	0,982,983,3,288,144,0,983,984,3,154,77,0,984,986,1,0,0,0,985,967,1,0,0,
	0,985,978,1,0,0,0,985,981,1,0,0,0,986,87,1,0,0,0,987,988,5,162,0,0,988,
	992,3,120,60,0,989,991,3,90,45,0,990,989,1,0,0,0,991,994,1,0,0,0,992,990,
	1,0,0,0,992,993,1,0,0,0,993,89,1,0,0,0,994,992,1,0,0,0,995,996,5,186,0,
	0,996,997,7,5,0,0,997,998,3,72,36,0,998,91,1,0,0,0,999,1000,5,286,0,0,1000,
	1001,3,192,96,0,1001,1002,5,28,0,0,1002,1003,3,288,144,0,1003,93,1,0,0,
	0,1004,1005,5,45,0,0,1005,1018,3,96,48,0,1006,1015,5,157,0,0,1007,1012,
	3,98,49,0,1008,1009,5,52,0,0,1009,1011,3,98,49,0,1010,1008,1,0,0,0,1011,
	1014,1,0,0,0,1012,1010,1,0,0,0,1012,1013,1,0,0,0,1013,1016,1,0,0,0,1014,
	1012,1,0,0,0,1015,1007,1,0,0,0,1015,1016,1,0,0,0,1016,1017,1,0,0,0,1017,
	1019,5,237,0,0,1018,1006,1,0,0,0,1018,1019,1,0,0,0,1019,1035,1,0,0,0,1020,
	1033,5,304,0,0,1021,1034,5,269,0,0,1022,1027,3,100,50,0,1023,1024,5,52,
	0,0,1024,1026,3,100,50,0,1025,1023,1,0,0,0,1026,1029,1,0,0,0,1027,1025,
	1,0,0,0,1027,1028,1,0,0,0,1028,1031,1,0,0,0,1029,1027,1,0,0,0,1030,1032,
	3,64,32,0,1031,1030,1,0,0,0,1031,1032,1,0,0,0,1032,1034,1,0,0,0,1033,1021,
	1,0,0,0,1033,1022,1,0,0,0,1034,1036,1,0,0,0,1035,1020,1,0,0,0,1035,1036,
	1,0,0,0,1036,95,1,0,0,0,1037,1038,3,286,143,0,1038,1039,3,646,323,0,1039,
	97,1,0,0,0,1040,1041,3,192,96,0,1041,99,1,0,0,0,1042,1045,3,646,323,0,1043,
	1044,5,28,0,0,1044,1046,3,288,144,0,1045,1043,1,0,0,0,1045,1046,1,0,0,0,
	1046,101,1,0,0,0,1047,1048,5,154,0,0,1048,1051,5,65,0,0,1049,1050,5,300,
	0,0,1050,1052,5,128,0,0,1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1053,1,
	0,0,0,1053,1054,5,117,0,0,1054,1055,3,192,96,0,1055,1056,5,28,0,0,1056,
	1059,3,288,144,0,1057,1058,5,112,0,0,1058,1060,3,638,319,0,1059,1057,1,
	0,0,0,1059,1060,1,0,0,0,1060,103,1,0,0,0,1061,1062,5,116,0,0,1062,1063,
	5,157,0,0,1063,1064,3,288,144,0,1064,1065,5,133,0,0,1065,1066,3,192,96,
	0,1066,1068,5,34,0,0,1067,1069,3,36,18,0,1068,1067,1,0,0,0,1069,1070,1,
	0,0,0,1070,1068,1,0,0,0,1070,1071,1,0,0,0,1071,1072,1,0,0,0,1072,1073,5,
	237,0,0,1073,105,1,0,0,0,1074,1075,5,45,0,0,1075,1076,5,149,0,0,1076,1077,
	3,32,16,0,1077,1079,5,216,0,0,1078,1080,3,108,54,0,1079,1078,1,0,0,0,1079,
	1080,1,0,0,0,1080,107,1,0,0,0,1081,1086,5,133,0,0,1082,1084,3,192,96,0,
	1083,1082,1,0,0,0,1083,1084,1,0,0,0,1084,1085,1,0,0,0,1085,1087,5,57,0,
	0,1086,1083,1,0,0,0,1086,1087,1,0,0,0,1087,1088,1,0,0,0,1088,1094,5,276,
	0,0,1089,1093,3,110,55,0,1090,1093,3,112,56,0,1091,1093,3,114,57,0,1092,
	1089,1,0,0,0,1092,1090,1,0,0,0,1092,1091,1,0,0,0,1093,1096,1,0,0,0,1094,
	1092,1,0,0,0,1094,1095,1,0,0,0,1095,109,1,0,0,0,1096,1094,1,0,0,0,1097,
	1098,5,185,0,0,1098,1099,3,192,96,0,1099,1100,7,6,0,0,1100,111,1,0,0,0,
	1101,1102,5,186,0,0,1102,1103,5,109,0,0,1103,1104,7,7,0,0,1104,113,1,0,
	0,0,1105,1106,5,228,0,0,1106,1107,5,259,0,0,1107,1108,5,28,0,0,1108,1109,
	3,288,144,0,1109,115,1,0,0,0,1110,1115,3,120,60,0,1111,1112,5,52,0,0,1112,
	1114,3,120,60,0,1113,1111,1,0,0,0,1114,1117,1,0,0,0,1115,1113,1,0,0,0,1115,
	1116,1,0,0,0,1116,117,1,0,0,0,1117,1115,1,0,0,0,1118,1123,3,122,61,0,1119,
	1120,5,52,0,0,1120,1122,3,122,61,0,1121,1119,1,0,0,0,1122,1125,1,0,0,0,
	1123,1121,1,0,0,0,1123,1124,1,0,0,0,1124,119,1,0,0,0,1125,1123,1,0,0,0,
	1126,1127,3,288,144,0,1127,1128,5,103,0,0,1128,1130,1,0,0,0,1129,1126,1,
	0,0,0,1129,1130,1,0,0,0,1130,1132,1,0,0,0,1131,1133,3,132,66,0,1132,1131,
	1,0,0,0,1132,1133,1,0,0,0,1133,1134,1,0,0,0,1134,1135,3,126,63,0,1135,121,
	1,0,0,0,1136,1137,3,646,323,0,1137,1138,5,103,0,0,1138,1140,1,0,0,0,1139,
	1136,1,0,0,0,1139,1140,1,0,0,0,1140,1141,1,0,0,0,1141,1147,3,142,71,0,1142,
	1143,3,160,80,0,1143,1144,3,142,71,0,1144,1146,1,0,0,0,1145,1142,1,0,0,
	0,1146,1149,1,0,0,0,1147,1145,1,0,0,0,1147,1148,1,0,0,0,1148,123,1,0,0,
	0,1149,1147,1,0,0,0,1150,1151,5,149,0,0,1151,1152,5,10,0,0,1152,1165,5,
	216,0,0,1153,1155,5,149,0,0,1154,1156,5,10,0,0,1155,1154,1,0,0,0,1155,1156,
	1,0,0,0,1156,1157,1,0,0,0,1157,1159,5,52,0,0,1158,1160,5,10,0,0,1159,1158,
	1,0,0,0,1159,1160,1,0,0,0,1160,1161,1,0,0,0,1161,1165,5,216,0,0,1162,1165,
	5,200,0,0,1163,1165,5,269,0,0,1164,1150,1,0,0,0,1164,1153,1,0,0,0,1164,
	1162,1,0,0,0,1164,1163,1,0,0,0,1165,125,1,0,0,0,1166,1169,3,128,64,0,1167,
	1169,3,130,65,0,1168,1166,1,0,0,0,1168,1167,1,0,0,0,1169,127,1,0,0,0,1170,
	1171,7,8,0,0,1171,1172,5,157,0,0,1172,1173,3,130,65,0,1173,1174,5,237,0,
	0,1174,129,1,0,0,0,1175,1184,3,140,70,0,1176,1178,3,158,79,0,1177,1179,
	3,124,62,0,1178,1177,1,0,0,0,1178,1179,1,0,0,0,1179,1180,1,0,0,0,1180,1181,
	3,140,70,0,1181,1183,1,0,0,0,1182,1176,1,0,0,0,1183,1186,1,0,0,0,1184,1182,
	1,0,0,0,1184,1185,1,0,0,0,1185,1189,1,0,0,0,1186,1184,1,0,0,0,1187,1189,
	3,144,72,0,1188,1175,1,0,0,0,1188,1187,1,0,0,0,1189,1190,1,0,0,0,1190,1188,
	1,0,0,0,1190,1191,1,0,0,0,1191,131,1,0,0,0,1192,1193,5,26,0,0,1193,1195,
	5,252,0,0,1194,1196,3,136,68,0,1195,1194,1,0,0,0,1195,1196,1,0,0,0,1196,
	1227,1,0,0,0,1197,1198,5,23,0,0,1198,1200,5,252,0,0,1199,1201,3,136,68,
	0,1200,1199,1,0,0,0,1200,1201,1,0,0,0,1201,1227,1,0,0,0,1202,1204,5,26,
	0,0,1203,1205,5,10,0,0,1204,1203,1,0,0,0,1204,1205,1,0,0,0,1205,1207,1,
	0,0,0,1206,1208,3,136,68,0,1207,1206,1,0,0,0,1207,1208,1,0,0,0,1208,1227,
	1,0,0,0,1209,1211,5,23,0,0,1210,1212,3,136,68,0,1211,1210,1,0,0,0,1211,
	1212,1,0,0,0,1212,1227,1,0,0,0,1213,1215,5,252,0,0,1214,1216,5,10,0,0,1215,
	1214,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217,1219,3,136,68,0,1218,
	1217,1,0,0,0,1218,1219,1,0,0,0,1219,1220,1,0,0,0,1220,1227,3,134,67,0,1221,
	1222,5,252,0,0,1222,1224,5,10,0,0,1223,1225,3,136,68,0,1224,1223,1,0,0,
	0,1224,1225,1,0,0,0,1225,1227,1,0,0,0,1226,1192,1,0,0,0,1226,1197,1,0,0,
	0,1226,1202,1,0,0,0,1226,1209,1,0,0,0,1226,1213,1,0,0,0,1226,1221,1,0,0,
	0,1227,133,1,0,0,0,1228,1229,7,9,0,0,1229,135,1,0,0,0,1230,1231,7,10,0,
	0,1231,137,1,0,0,0,1232,1236,3,140,70,0,1233,1234,3,158,79,0,1234,1235,
	3,140,70,0,1235,1237,1,0,0,0,1236,1233,1,0,0,0,1237,1238,1,0,0,0,1238,1236,
	1,0,0,0,1238,1239,1,0,0,0,1239,139,1,0,0,0,1240,1242,5,157,0,0,1241,1243,
	3,288,144,0,1242,1241,1,0,0,0,1242,1243,1,0,0,0,1243,1245,1,0,0,0,1244,
	1246,3,170,85,0,1245,1244,1,0,0,0,1245,1246,1,0,0,0,1246,1248,1,0,0,0,1247,
	1249,3,156,78,0,1248,1247,1,0,0,0,1248,1249,1,0,0,0,1249,1252,1,0,0,0,1250,
	1251,5,299,0,0,1251,1253,3,192,96,0,1252,1250,1,0,0,0,1252,1253,1,0,0,0,
	1253,1254,1,0,0,0,1254,1255,5,237,0,0,1255,141,1,0,0,0,1256,1258,5,157,
	0,0,1257,1259,3,288,144,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259,1261,
	1,0,0,0,1260,1262,3,188,94,0,1261,1260,1,0,0,0,1261,1262,1,0,0,0,1262,1264,
	1,0,0,0,1263,1265,3,156,78,0,1264,1263,1,0,0,0,1264,1265,1,0,0,0,1265,1266,
	1,0,0,0,1266,1267,5,237,0,0,1267,143,1,0,0,0,1268,1269,5,157,0,0,1269,1272,
	3,120,60,0,1270,1271,5,299,0,0,1271,1273,3,192,96,0,1272,1270,1,0,0,0,1272,
	1273,1,0,0,0,1273,1274,1,0,0,0,1274,1276,5,237,0,0,1275,1277,3,124,62,0,
	1276,1275,1,0,0,0,1276,1277,1,0,0,0,1277,145,1,0,0,0,1278,1280,3,150,75,
	0,1279,1278,1,0,0,0,1280,1281,1,0,0,0,1281,1279,1,0,0,0,1281,1282,1,0,0,
	0,1282,147,1,0,0,0,1283,1284,5,141,0,0,1284,1288,3,646,323,0,1285,1287,
	3,150,75,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,149,1,0,0,0,1290,1288,1,0,0,0,1291,1292,5,50,0,0,1292,1293,
	3,646,323,0,1293,151,1,0,0,0,1294,1295,5,50,0,0,1295,1296,3,646,323,0,1296,
	153,1,0,0,0,1297,1298,5,50,0,0,1298,1299,3,646,323,0,1299,155,1,0,0,0,1300,
	1303,3,644,322,0,1301,1303,3,276,138,0,1302,1300,1,0,0,0,1302,1301,1,0,
	0,0,1303,157,1,0,0,0,1304,1306,3,162,81,0,1305,1304,1,0,0,0,1305,1306,1,
	0,0,0,1306,1307,1,0,0,0,1307,1326,3,164,82,0,1308,1310,5,148,0,0,1309,1311,
	3,288,144,0,1310,1309,1,0,0,0,1310,1311,1,0,0,0,1311,1313,1,0,0,0,1312,
	1314,3,170,85,0,1313,1312,1,0,0,0,1313,1314,1,0,0,0,1314,1316,1,0,0,0,1315,
	1317,3,168,84,0,1316,1315,1,0,0,0,1316,1317,1,0,0,0,1317,1319,1,0,0,0,1318,
	1320,3,156,78,0,1319,1318,1,0,0,0,1319,1320,1,0,0,0,1320,1323,1,0,0,0,1321,
	1322,5,299,0,0,1322,1324,3,192,96,0,1323,1321,1,0,0,0,1323,1324,1,0,0,0,
	1324,1325,1,0,0,0,1325,1327,5,215,0,0,1326,1308,1,0,0,0,1326,1327,1,0,0,
	0,1327,1328,1,0,0,0,1328,1330,3,164,82,0,1329,1331,3,166,83,0,1330,1329,
	1,0,0,0,1330,1331,1,0,0,0,1331,159,1,0,0,0,1332,1334,3,162,81,0,1333,1332,
	1,0,0,0,1333,1334,1,0,0,0,1334,1335,1,0,0,0,1335,1336,3,164,82,0,1336,1338,
	5,148,0,0,1337,1339,3,288,144,0,1338,1337,1,0,0,0,1338,1339,1,0,0,0,1339,
	1340,1,0,0,0,1340,1342,3,190,95,0,1341,1343,3,156,78,0,1342,1341,1,0,0,
	0,1342,1343,1,0,0,0,1343,1344,1,0,0,0,1344,1345,5,215,0,0,1345,1347,3,164,
	82,0,1346,1348,3,166,83,0,1347,1346,1,0,0,0,1347,1348,1,0,0,0,1348,161,
	1,0,0,0,1349,1350,7,11,0,0,1350,163,1,0,0,0,1351,1352,7,12,0,0,1352,165,
	1,0,0,0,1353,1354,7,13,0,0,1354,167,1,0,0,0,1355,1364,5,269,0,0,1356,1358,
	5,10,0,0,1357,1356,1,0,0,0,1357,1358,1,0,0,0,1358,1359,1,0,0,0,1359,1361,
	5,87,0,0,1360,1362,5,10,0,0,1361,1360,1,0,0,0,1361,1362,1,0,0,0,1362,1365,
	1,0,0,0,1363,1365,5,10,0,0,1364,1357,1,0,0,0,1364,1363,1,0,0,0,1364,1365,
	1,0,0,0,1365,169,1,0,0,0,1366,1367,5,50,0,0,1367,1371,3,172,86,0,1368,1369,
	5,141,0,0,1369,1371,3,174,87,0,1370,1366,1,0,0,0,1370,1368,1,0,0,0,1371,
	171,1,0,0,0,1372,1380,3,176,88,0,1373,1375,5,34,0,0,1374,1376,5,50,0,0,
	1375,1374,1,0,0,0,1375,1376,1,0,0,0,1376,1377,1,0,0,0,1377,1379,3,176,88,
	0,1378,1373,1,0,0,0,1379,1382,1,0,0,0,1380,1378,1,0,0,0,1380,1381,1,0,0,
	0,1381,173,1,0,0,0,1382,1380,1,0,0,0,1383,1391,3,178,89,0,1384,1386,5,34,
	0,0,1385,1387,5,50,0,0,1386,1385,1,0,0,0,1386,1387,1,0,0,0,1387,1388,1,
	0,0,0,1388,1390,3,178,89,0,1389,1384,1,0,0,0,1390,1393,1,0,0,0,1391,1389,
	1,0,0,0,1391,1392,1,0,0,0,1392,175,1,0,0,0,1393,1391,1,0,0,0,1394,1399,
	3,180,90,0,1395,1396,7,14,0,0,1396,1398,3,180,90,0,1397,1395,1,0,0,0,1398,
	1401,1,0,0,0,1399,1397,1,0,0,0,1399,1400,1,0,0,0,1400,177,1,0,0,0,1401,
	1399,1,0,0,0,1402,1407,3,182,91,0,1403,1404,7,14,0,0,1404,1406,3,182,91,
	0,1405,1403,1,0,0,0,1406,1409,1,0,0,0,1407,1405,1,0,0,0,1407,1408,1,0,0,
	0,1408,179,1,0,0,0,1409,1407,1,0,0,0,1410,1412,5,147,0,0,1411,1410,1,0,
	0,0,1412,1415,1,0,0,0,1413,1411,1,0,0,0,1413,1414,1,0,0,0,1414,1416,1,0,
	0,0,1415,1413,1,0,0,0,1416,1417,3,184,92,0,1417,181,1,0,0,0,1418,1420,5,
	147,0,0,1419,1418,1,0,0,0,1420,1423,1,0,0,0,1421,1419,1,0,0,0,1421,1422,
	1,0,0,0,1422,1424,1,0,0,0,1423,1421,1,0,0,0,1424,1425,3,186,93,0,1425,183,
	1,0,0,0,1426,1427,5,157,0,0,1427,1428,3,172,86,0,1428,1429,5,237,0,0,1429,
	1433,1,0,0,0,1430,1433,5,164,0,0,1431,1433,3,646,323,0,1432,1426,1,0,0,
	0,1432,1430,1,0,0,0,1432,1431,1,0,0,0,1433,185,1,0,0,0,1434,1435,5,157,
	0,0,1435,1436,3,174,87,0,1436,1437,5,237,0,0,1437,1441,1,0,0,0,1438,1441,
	5,164,0,0,1439,1441,3,652,326,0,1440,1434,1,0,0,0,1440,1438,1,0,0,0,1440,
	1439,1,0,0,0,1441,187,1,0,0,0,1442,1443,7,15,0,0,1443,1448,3,646,323,0,
	1444,1445,7,14,0,0,1445,1447,3,646,323,0,1446,1444,1,0,0,0,1447,1450,1,
	0,0,0,1448,1446,1,0,0,0,1448,1449,1,0,0,0,1449,189,1,0,0,0,1450,1448,1,
	0,0,0,1451,1452,7,15,0,0,1452,1453,3,646,323,0,1453,191,1,0,0,0,1454,1459,
	3,194,97,0,1455,1456,5,191,0,0,1456,1458,3,194,97,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,193,1,0,0,0,1461,
	1459,1,0,0,0,1462,1467,3,196,98,0,1463,1464,5,303,0,0,1464,1466,3,196,98,
	0,1465,1463,1,0,0,0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1467,1468,1,0,0,
	0,1468,195,1,0,0,0,1469,1467,1,0,0,0,1470,1475,3,198,99,0,1471,1472,5,25,
	0,0,1472,1474,3,198,99,0,1473,1471,1,0,0,0,1474,1477,1,0,0,0,1475,1473,
	1,0,0,0,1475,1476,1,0,0,0,1476,197,1,0,0,0,1477,1475,1,0,0,0,1478,1480,
	5,181,0,0,1479,1478,1,0,0,0,1480,1483,1,0,0,0,1481,1479,1,0,0,0,1481,1482,
	1,0,0,0,1482,1484,1,0,0,0,1483,1481,1,0,0,0,1484,1485,3,200,100,0,1485,
	199,1,0,0,0,1486,1491,3,202,101,0,1487,1488,7,16,0,0,1488,1490,3,202,101,
	0,1489,1487,1,0,0,0,1490,1493,1,0,0,0,1491,1489,1,0,0,0,1491,1492,1,0,0,
	0,1492,201,1,0,0,0,1493,1491,1,0,0,0,1494,1496,3,208,104,0,1495,1497,3,
	204,102,0,1496,1495,1,0,0,0,1496,1497,1,0,0,0,1497,203,1,0,0,0,1498,1506,
	5,221,0,0,1499,1500,5,258,0,0,1500,1506,5,300,0,0,1501,1502,5,102,0,0,1502,
	1506,5,300,0,0,1503,1506,5,60,0,0,1504,1506,5,133,0,0,1505,1498,1,0,0,0,
	1505,1499,1,0,0,0,1505,1501,1,0,0,0,1505,1503,1,0,0,0,1505,1504,1,0,0,0,
	1506,1507,1,0,0,0,1507,1531,3,208,104,0,1508,1510,5,141,0,0,1509,1511,5,
	181,0,0,1510,1509,1,0,0,0,1510,1511,1,0,0,0,1511,1512,1,0,0,0,1512,1531,
	5,184,0,0,1513,1515,5,141,0,0,1514,1516,5,181,0,0,1515,1514,1,0,0,0,1515,
	1516,1,0,0,0,1516,1517,1,0,0,0,1517,1520,7,17,0,0,1518,1520,5,51,0,0,1519,
	1513,1,0,0,0,1519,1518,1,0,0,0,1520,1521,1,0,0,0,1521,1531,3,364,182,0,
	1522,1524,5,141,0,0,1523,1525,5,181,0,0,1524,1523,1,0,0,0,1524,1525,1,0,
	0,0,1525,1527,1,0,0,0,1526,1528,3,206,103,0,1527,1526,1,0,0,0,1527,1528,
	1,0,0,0,1528,1529,1,0,0,0,1529,1531,5,180,0,0,1530,1505,1,0,0,0,1530,1508,
	1,0,0,0,1530,1519,1,0,0,0,1530,1522,1,0,0,0,1531,205,1,0,0,0,1532,1533,
	7,18,0,0,1533,207,1,0,0,0,1534,1539,3,210,105,0,1535,1536,7,19,0,0,1536,
	1538,3,210,105,0,1537,1535,1,0,0,0,1538,1541,1,0,0,0,1539,1537,1,0,0,0,
	1539,1540,1,0,0,0,1540,209,1,0,0,0,1541,1539,1,0,0,0,1542,1547,3,212,106,
	0,1543,1544,7,20,0,0,1544,1546,3,212,106,0,1545,1543,1,0,0,0,1546,1549,
	1,0,0,0,1547,1545,1,0,0,0,1547,1548,1,0,0,0,1548,211,1,0,0,0,1549,1547,
	1,0,0,0,1550,1555,3,214,107,0,1551,1552,5,204,0,0,1552,1554,3,214,107,0,
	1553,1551,1,0,0,0,1554,1557,1,0,0,0,1555,1553,1,0,0,0,1555,1556,1,0,0,0,
	1556,213,1,0,0,0,1557,1555,1,0,0,0,1558,1562,3,216,108,0,1559,1560,7,21,
	0,0,1560,1562,3,216,108,0,1561,1558,1,0,0,0,1561,1559,1,0,0,0,1562,215,
	1,0,0,0,1563,1567,3,224,112,0,1564,1566,3,218,109,0,1565,1564,1,0,0,0,1566,
	1569,1,0,0,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,217,1,0,0,0,1569,
	1567,1,0,0,0,1570,1586,3,220,110,0,1571,1586,3,170,85,0,1572,1573,5,148,
	0,0,1573,1574,3,192,96,0,1574,1575,5,215,0,0,1575,1586,1,0,0,0,1576,1578,
	5,148,0,0,1577,1579,3,192,96,0,1578,1577,1,0,0,0,1578,1579,1,0,0,0,1579,
	1580,1,0,0,0,1580,1582,5,87,0,0,1581,1583,3,192,96,0,1582,1581,1,0,0,0,
	1582,1583,1,0,0,0,1583,1584,1,0,0,0,1584,1586,5,215,0,0,1585,1570,1,0,0,
	0,1585,1571,1,0,0,0,1585,1572,1,0,0,0,1585,1576,1,0,0,0,1586,219,1,0,0,
	0,1587,1588,5,86,0,0,1588,1589,3,274,137,0,1589,221,1,0,0,0,1590,1592,3,
	224,112,0,1591,1593,3,220,110,0,1592,1591,1,0,0,0,1593,1594,1,0,0,0,1594,
	1592,1,0,0,0,1594,1595,1,0,0,0,1595,223,1,0,0,0,1596,1618,3,226,113,0,1597,
	1618,3,276,138,0,1598,1618,3,228,114,0,1599,1618,3,232,116,0,1600,1618,
	3,260,130,0,1601,1618,3,262,131,0,1602,1618,3,264,132,0,1603,1618,3,266,
	133,0,1604,1618,3,256,128,0,1605,1618,3,238,119,0,1606,1618,3,272,136,0,
	1607,1618,3,240,120,0,1608,1618,3,242,121,0,1609,1618,3,244,122,0,1610,
	1618,3,246,123,0,1611,1618,3,248,124,0,1612,1618,3,250,125,0,1613,1618,
	3,252,126,0,1614,1618,3,254,127,0,1615,1618,3,280,140,0,1616,1618,3,288,
	144,0,1617,1596,1,0,0,0,1617,1597,1,0,0,0,1617,1598,1,0,0,0,1617,1599,1,
	0,0,0,1617,1600,1,0,0,0,1617,1601,1,0,0,0,1617,1602,1,0,0,0,1617,1603,1,
	0,0,0,1617,1604,1,0,0,0,1617,1605,1,0,0,0,1617,1606,1,0,0,0,1617,1607,1,
	0,0,0,1617,1608,1,0,0,0,1617,1609,1,0,0,0,1617,1610,1,0,0,0,1617,1611,1,
	0,0,0,1617,1612,1,0,0,0,1617,1613,1,0,0,0,1617,1614,1,0,0,0,1617,1615,1,
	0,0,0,1617,1616,1,0,0,0,1618,225,1,0,0,0,1619,1629,3,268,134,0,1620,1629,
	3,638,319,0,1621,1629,3,644,322,0,1622,1629,5,279,0,0,1623,1629,5,111,0,
	0,1624,1629,5,136,0,0,1625,1629,5,137,0,0,1626,1629,5,169,0,0,1627,1629,
	5,184,0,0,1628,1619,1,0,0,0,1628,1620,1,0,0,0,1628,1621,1,0,0,0,1628,1622,
	1,0,0,0,1628,1623,1,0,0,0,1628,1624,1,0,0,0,1628,1625,1,0,0,0,1628,1626,
	1,0,0,0,1628,1627,1,0,0,0,1629,227,1,0,0,0,1630,1632,5,46,0,0,1631,1633,
	3,230,115,0,1632,1631,1,0,0,0,1633,1634,1,0,0,0,1634,1632,1,0,0,0,1634,
	1635,1,0,0,0,1635,1638,1,0,0,0,1636,1637,5,99,0,0,1637,1639,3,192,96,0,
	1638,1636,1,0,0,0,1638,1639,1,0,0,0,1639,1640,1,0,0,0,1640,1641,5,101,0,
	0,1641,229,1,0,0,0,1642,1643,5,298,0,0,1643,1644,3,192,96,0,1644,1645,5,
	267,0,0,1645,1646,3,192,96,0,1646,231,1,0,0,0,1647,1648,5,46,0,0,1648,1650,
	3,192,96,0,1649,1651,3,234,117,0,1650,1649,1,0,0,0,1651,1652,1,0,0,0,1652,
	1650,1,0,0,0,1652,1653,1,0,0,0,1653,1656,1,0,0,0,1654,1655,5,99,0,0,1655,
	1657,3,192,96,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1658,1,0,0,0,1658,
	1659,5,101,0,0,1659,233,1,0,0,0,1660,1661,5,298,0,0,1661,1666,3,236,118,
	0,1662,1663,5,52,0,0,1663,1665,3,236,118,0,1664,1662,1,0,0,0,1665,1668,
	1,0,0,0,1666,1664,1,0,0,0,1666,1667,1,0,0,0,1667,1669,1,0,0,0,1668,1666,
	1,0,0,0,1669,1670,5,267,0,0,1670,1671,3,192,96,0,1671,235,1,0,0,0,1672,
	1678,5,221,0,0,1673,1674,5,258,0,0,1674,1678,5,300,0,0,1675,1676,5,102,
	0,0,1676,1678,5,300,0,0,1677,1672,1,0,0,0,1677,1673,1,0,0,0,1677,1675,1,
	0,0,0,1678,1679,1,0,0,0,1679,1706,3,208,104,0,1680,1682,5,141,0,0,1681,
	1683,5,181,0,0,1682,1681,1,0,0,0,1682,1683,1,0,0,0,1683,1684,1,0,0,0,1684,
	1706,5,184,0,0,1685,1687,5,141,0,0,1686,1688,5,181,0,0,1687,1686,1,0,0,
	0,1687,1688,1,0,0,0,1688,1689,1,0,0,0,1689,1692,5,281,0,0,1690,1692,5,51,
	0,0,1691,1685,1,0,0,0,1691,1690,1,0,0,0,1692,1693,1,0,0,0,1693,1706,3,364,
	182,0,1694,1696,5,141,0,0,1695,1697,5,181,0,0,1696,1695,1,0,0,0,1696,1697,
	1,0,0,0,1697,1699,1,0,0,0,1698,1700,3,206,103,0,1699,1698,1,0,0,0,1699,
	1700,1,0,0,0,1700,1701,1,0,0,0,1701,1706,5,180,0,0,1702,1703,7,16,0,0,1703,
	1706,3,202,101,0,1704,1706,3,192,96,0,1705,1677,1,0,0,0,1705,1680,1,0,0,
	0,1705,1691,1,0,0,0,1705,1694,1,0,0,0,1705,1702,1,0,0,0,1705,1704,1,0,0,
	0,1706,237,1,0,0,0,1707,1708,5,148,0,0,1708,1709,3,288,144,0,1709,1710,
	5,133,0,0,1710,1724,3,192,96,0,1711,1712,5,299,0,0,1712,1714,3,192,96,0,
	1713,1711,1,0,0,0,1713,1714,1,0,0,0,1714,1715,1,0,0,0,1715,1716,5,34,0,
	0,1716,1717,3,192,96,0,1717,1718,5,215,0,0,1718,1725,1,0,0,0,1719,1720,
	5,299,0,0,1720,1722,3,192,96,0,1721,1719,1,0,0,0,1721,1722,1,0,0,0,1722,
	1723,1,0,0,0,1723,1725,5,215,0,0,1724,1713,1,0,0,0,1724,1721,1,0,0,0,1725,
	239,1,0,0,0,1726,1730,5,148,0,0,1727,1728,3,288,144,0,1728,1729,5,103,0,
	0,1729,1731,1,0,0,0,1730,1727,1,0,0,0,1730,1731,1,0,0,0,1731,1732,1,0,0,
	0,1732,1735,3,138,69,0,1733,1734,5,299,0,0,1734,1736,3,192,96,0,1735,1733,
	1,0,0,0,1735,1736,1,0,0,0,1736,1737,1,0,0,0,1737,1738,5,34,0,0,1738,1739,
	3,192,96,0,1739,1740,5,215,0,0,1740,241,1,0,0,0,1741,1742,5,219,0,0,1742,
	1743,5,157,0,0,1743,1744,3,288,144,0,1744,1745,5,103,0,0,1745,1746,3,192,
	96,0,1746,1747,5,52,0,0,1747,1748,3,288,144,0,1748,1749,5,133,0,0,1749,
	1750,3,192,96,0,1750,1751,5,34,0,0,1751,1752,3,192,96,0,1752,1753,5,237,
	0,0,1753,243,1,0,0,0,1754,1755,7,22,0,0,1755,1756,5,157,0,0,1756,1757,3,
	288,144,0,1757,1758,5,133,0,0,1758,1761,3,192,96,0,1759,1760,5,299,0,0,
	1760,1762,3,192,96,0,1761,1759,1,0,0,0,1761,1762,1,0,0,0,1762,1763,1,0,
	0,0,1763,1764,5,237,0,0,1764,245,1,0,0,0,1765,1766,5,179,0,0,1766,1767,
	5,157,0,0,1767,1770,3,192,96,0,1768,1769,5,52,0,0,1769,1771,3,206,103,0,
	1770,1768,1,0,0,0,1770,1771,1,0,0,0,1771,1772,1,0,0,0,1772,1773,5,237,0,
	0,1773,247,1,0,0,0,1774,1775,5,278,0,0,1775,1783,5,157,0,0,1776,1778,7,
	23,0,0,1777,1776,1,0,0,0,1777,1778,1,0,0,0,1778,1780,1,0,0,0,1779,1781,
	3,192,96,0,1780,1779,1,0,0,0,1780,1781,1,0,0,0,1781,1782,1,0,0,0,1782,1784,
	5,117,0,0,1783,1777,1,0,0,0,1783,1784,1,0,0,0,1784,1785,1,0,0,0,1785,1786,
	3,192,96,0,1786,1787,5,237,0,0,1787,249,1,0,0,0,1788,1789,3,138,69,0,1789,
	251,1,0,0,0,1790,1791,3,128,64,0,1791,253,1,0,0,0,1792,1793,5,157,0,0,1793,
	1794,3,192,96,0,1794,1795,5,237,0,0,1795,255,1,0,0,0,1796,1797,3,288,144,
	0,1797,1806,5,149,0,0,1798,1803,3,258,129,0,1799,1800,5,52,0,0,1800,1802,
	3,258,129,0,1801,1799,1,0,0,0,1802,1805,1,0,0,0,1803,1801,1,0,0,0,1803,
	1804,1,0,0,0,1804,1807,1,0,0,0,1805,1803,1,0,0,0,1806,1798,1,0,0,0,1806,
	1807,1,0,0,0,1807,1808,1,0,0,0,1808,1809,5,216,0,0,1809,257,1,0,0,0,1810,
	1811,3,274,137,0,1811,1812,5,50,0,0,1812,1813,3,192,96,0,1813,1819,1,0,
	0,0,1814,1819,3,220,110,0,1815,1819,3,288,144,0,1816,1817,5,86,0,0,1817,
	1819,5,269,0,0,1818,1810,1,0,0,0,1818,1814,1,0,0,0,1818,1815,1,0,0,0,1818,
	1816,1,0,0,0,1819,259,1,0,0,0,1820,1821,5,63,0,0,1821,1822,5,157,0,0,1822,
	1823,5,269,0,0,1823,1824,5,237,0,0,1824,261,1,0,0,0,1825,1826,5,108,0,0,
	1826,1835,5,149,0,0,1827,1836,3,32,16,0,1828,1830,3,84,42,0,1829,1828,1,
	0,0,0,1829,1830,1,0,0,0,1830,1831,1,0,0,0,1831,1833,3,116,58,0,1832,1834,
	3,64,32,0,1833,1832,1,0,0,0,1833,1834,1,0,0,0,1834,1836,1,0,0,0,1835,1827,
	1,0,0,0,1835,1829,1,0,0,0,1836,1837,1,0,0,0,1837,1838,5,216,0,0,1838,263,
	1,0,0,0,1839,1840,5,63,0,0,1840,1849,5,149,0,0,1841,1850,3,32,16,0,1842,
	1844,3,84,42,0,1843,1842,1,0,0,0,1843,1844,1,0,0,0,1844,1845,1,0,0,0,1845,
	1847,3,116,58,0,1846,1848,3,64,32,0,1847,1846,1,0,0,0,1847,1848,1,0,0,0,
	1848,1850,1,0,0,0,1849,1841,1,0,0,0,1849,1843,1,0,0,0,1850,1851,1,0,0,0,
	1851,1852,5,216,0,0,1852,265,1,0,0,0,1853,1854,5,49,0,0,1854,1855,5,149,
	0,0,1855,1856,3,32,16,0,1856,1857,5,216,0,0,1857,267,1,0,0,0,1858,1860,
	5,163,0,0,1859,1858,1,0,0,0,1859,1860,1,0,0,0,1860,1861,1,0,0,0,1861,1862,
	7,24,0,0,1862,269,1,0,0,0,1863,1865,5,163,0,0,1864,1863,1,0,0,0,1864,1865,
	1,0,0,0,1865,1866,1,0,0,0,1866,1867,5,10,0,0,1867,271,1,0,0,0,1868,1877,
	5,148,0,0,1869,1874,3,192,96,0,1870,1871,5,52,0,0,1871,1873,3,192,96,0,
	1872,1870,1,0,0,0,1873,1876,1,0,0,0,1874,1872,1,0,0,0,1874,1875,1,0,0,0,
	1875,1878,1,0,0,0,1876,1874,1,0,0,0,1877,1869,1,0,0,0,1877,1878,1,0,0,0,
	1878,1879,1,0,0,0,1879,1880,5,215,0,0,1880,273,1,0,0,0,1881,1882,3,646,
	323,0,1882,275,1,0,0,0,1883,1884,5,83,0,0,1884,1885,3,278,139,0,1885,277,
	1,0,0,0,1886,1889,3,646,323,0,1887,1889,5,10,0,0,1888,1886,1,0,0,0,1888,
	1887,1,0,0,0,1889,279,1,0,0,0,1890,1891,3,284,142,0,1891,1893,5,157,0,0,
	1892,1894,7,1,0,0,1893,1892,1,0,0,0,1893,1894,1,0,0,0,1894,1903,1,0,0,0,
	1895,1900,3,282,141,0,1896,1897,5,52,0,0,1897,1899,3,282,141,0,1898,1896,
	1,0,0,0,1899,1902,1,0,0,0,1900,1898,1,0,0,0,1900,1901,1,0,0,0,1901,1904,
	1,0,0,0,1902,1900,1,0,0,0,1903,1895,1,0,0,0,1903,1904,1,0,0,0,1904,1905,
	1,0,0,0,1905,1906,5,237,0,0,1906,281,1,0,0,0,1907,1908,3,192,96,0,1908,
	283,1,0,0,0,1909,1910,3,286,143,0,1910,1911,3,646,323,0,1911,285,1,0,0,
	0,1912,1913,3,646,323,0,1913,1914,5,86,0,0,1914,1916,1,0,0,0,1915,1912,
	1,0,0,0,1916,1919,1,0,0,0,1917,1915,1,0,0,0,1917,1918,1,0,0,0,1918,287,
	1,0,0,0,1919,1917,1,0,0,0,1920,1921,3,646,323,0,1921,289,1,0,0,0,1922,1927,
	3,646,323,0,1923,1924,5,52,0,0,1924,1926,3,646,323,0,1925,1923,1,0,0,0,
	1926,1929,1,0,0,0,1927,1925,1,0,0,0,1927,1928,1,0,0,0,1928,291,1,0,0,0,
	1929,1927,1,0,0,0,1930,1932,3,38,19,0,1931,1930,1,0,0,0,1931,1932,1,0,0,
	0,1932,1946,1,0,0,0,1933,1947,3,294,147,0,1934,1947,3,296,148,0,1935,1947,
	3,298,149,0,1936,1947,3,300,150,0,1937,1947,3,476,238,0,1938,1947,3,478,
	239,0,1939,1947,3,468,234,0,1940,1947,3,584,292,0,1941,1947,3,586,293,0,
	1942,1947,3,406,203,0,1943,1947,3,416,208,0,1944,1947,3,302,151,0,1945,
	1947,3,348,174,0,1946,1933,1,0,0,0,1946,1934,1,0,0,0,1946,1935,1,0,0,0,
	1946,1936,1,0,0,0,1946,1937,1,0,0,0,1946,1938,1,0,0,0,1946,1939,1,0,0,0,
	1946,1940,1,0,0,0,1946,1941,1,0,0,0,1946,1942,1,0,0,0,1946,1943,1,0,0,0,
	1946,1944,1,0,0,0,1946,1945,1,0,0,0,1947,293,1,0,0,0,1948,1951,5,64,0,0,
	1949,1950,5,191,0,0,1950,1952,5,227,0,0,1951,1949,1,0,0,0,1951,1952,1,0,
	0,0,1952,1960,1,0,0,0,1953,1961,3,604,302,0,1954,1961,3,562,281,0,1955,
	1961,3,378,189,0,1956,1961,3,564,282,0,1957,1961,3,384,192,0,1958,1961,
	3,422,211,0,1959,1961,3,432,216,0,1960,1953,1,0,0,0,1960,1954,1,0,0,0,1960,
	1955,1,0,0,0,1960,1956,1,0,0,0,1960,1957,1,0,0,0,1960,1958,1,0,0,0,1960,
	1959,1,0,0,0,1961,295,1,0,0,0,1962,1970,5,90,0,0,1963,1971,3,606,303,0,
	1964,1971,3,382,191,0,1965,1971,3,574,287,0,1966,1971,3,402,201,0,1967,
	1971,3,424,212,0,1968,1971,3,412,206,0,1969,1971,3,434,217,0,1970,1963,
	1,0,0,0,1970,1964,1,0,0,0,1970,1965,1,0,0,0,1970,1966,1,0,0,0,1970,1967,
	1,0,0,0,1970,1968,1,0,0,0,1970,1969,1,0,0,0,1971,297,1,0,0,0,1972,1978,
	5,24,0,0,1973,1979,3,608,304,0,1974,1979,3,438,219,0,1975,1979,3,576,288,
	0,1976,1979,3,440,220,0,1977,1979,3,408,204,0,1978,1973,1,0,0,0,1978,1974,
	1,0,0,0,1978,1975,1,0,0,0,1978,1976,1,0,0,0,1978,1977,1,0,0,0,1979,299,
	1,0,0,0,1980,1984,5,220,0,0,1981,1985,3,426,213,0,1982,1985,3,410,205,0,
	1983,1985,3,436,218,0,1984,1981,1,0,0,0,1984,1982,1,0,0,0,1984,1983,1,0,
	0,0,1985,301,1,0,0,0,1986,2003,5,253,0,0,1987,2004,3,620,310,0,1988,2004,
	3,322,161,0,1989,2004,3,454,227,0,1990,2004,3,592,296,0,1991,2004,3,338,
	169,0,1992,2004,3,316,158,0,1993,2004,3,456,228,0,1994,2004,3,336,168,0,
	1995,2004,3,460,230,0,1996,2004,3,428,214,0,1997,2004,3,414,207,0,1998,
	2004,3,352,176,0,1999,2004,3,458,229,0,2000,2004,3,346,173,0,2001,2004,
	3,462,231,0,2002,2004,3,452,226,0,2003,1987,1,0,0,0,2003,1988,1,0,0,0,2003,
	1989,1,0,0,0,2003,1990,1,0,0,0,2003,1991,1,0,0,0,2003,1992,1,0,0,0,2003,
	1993,1,0,0,0,2003,1994,1,0,0,0,2003,1995,1,0,0,0,2003,1996,1,0,0,0,2003,
	1997,1,0,0,0,2003,1998,1,0,0,0,2003,1999,1,0,0,0,2003,2000,1,0,0,0,2003,
	2001,1,0,0,0,2003,2002,1,0,0,0,2004,303,1,0,0,0,2005,2007,3,312,156,0,2006,
	2008,3,44,22,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0,2008,2011,1,0,0,0,2009,
	2011,3,64,32,0,2010,2005,1,0,0,0,2010,2009,1,0,0,0,2011,305,1,0,0,0,2012,
	2015,3,288,144,0,2013,2014,5,28,0,0,2014,2016,3,288,144,0,2015,2013,1,0,
	0,0,2015,2016,1,0,0,0,2016,307,1,0,0,0,2017,2018,5,256,0,0,2018,2019,3,
	270,135,0,2019,309,1,0,0,0,2020,2021,5,152,0,0,2021,2022,3,270,135,0,2022,
	311,1,0,0,0,2023,2033,5,304,0,0,2024,2034,5,269,0,0,2025,2030,3,306,153,
	0,2026,2027,5,52,0,0,2027,2029,3,306,153,0,2028,2026,1,0,0,0,2029,2032,
	1,0,0,0,2030,2028,1,0,0,0,2030,2031,1,0,0,0,2031,2034,1,0,0,0,2032,2030,
	1,0,0,0,2033,2024,1,0,0,0,2033,2025,1,0,0,0,2034,2036,1,0,0,0,2035,2037,
	3,58,29,0,2036,2035,1,0,0,0,2036,2037,1,0,0,0,2037,2039,1,0,0,0,2038,2040,
	3,308,154,0,2039,2038,1,0,0,0,2039,2040,1,0,0,0,2040,2042,1,0,0,0,2041,
	2043,3,310,155,0,2042,2041,1,0,0,0,2042,2043,1,0,0,0,2043,2045,1,0,0,0,
	2044,2046,3,64,32,0,2045,2044,1,0,0,0,2045,2046,1,0,0,0,2046,313,1,0,0,
	0,2047,2049,7,25,0,0,2048,2050,5,193,0,0,2049,2048,1,0,0,0,2049,2050,1,
	0,0,0,2050,2057,1,0,0,0,2051,2053,3,312,156,0,2052,2054,3,44,22,0,2053,
	2052,1,0,0,0,2053,2054,1,0,0,0,2054,2057,1,0,0,0,2055,2057,3,64,32,0,2056,
	2047,1,0,0,0,2056,2051,1,0,0,0,2056,2055,1,0,0,0,2057,315,1,0,0,0,2058,
	2059,7,26,0,0,2059,2065,3,320,160,0,2060,2062,7,27,0,0,2061,2060,1,0,0,
	0,2061,2062,1,0,0,0,2062,2063,1,0,0,0,2063,2065,3,318,159,0,2064,2058,1,
	0,0,0,2064,2061,1,0,0,0,2065,317,1,0,0,0,2066,2068,3,526,263,0,2067,2069,
	3,314,157,0,2068,2067,1,0,0,0,2068,2069,1,0,0,0,2069,2071,1,0,0,0,2070,
	2072,3,358,179,0,2071,2070,1,0,0,0,2071,2072,1,0,0,0,2072,319,1,0,0,0,2073,
	2075,3,526,263,0,2074,2076,3,304,152,0,2075,2074,1,0,0,0,2075,2076,1,0,
	0,0,2076,2078,1,0,0,0,2077,2079,3,358,179,0,2078,2077,1,0,0,0,2078,2079,
	1,0,0,0,2079,321,1,0,0,0,2080,2082,7,28,0,0,2081,2080,1,0,0,0,2081,2082,
	1,0,0,0,2082,2083,1,0,0,0,2083,2084,3,324,162,0,2084,2085,3,334,167,0,2085,
	2107,1,0,0,0,2086,2087,7,28,0,0,2087,2088,5,284,0,0,2088,2107,3,334,167,
	0,2089,2091,7,29,0,0,2090,2089,1,0,0,0,2090,2091,1,0,0,0,2091,2092,1,0,
	0,0,2092,2093,5,143,0,0,2093,2107,3,334,167,0,2094,2095,5,222,0,0,2095,
	2096,5,106,0,0,2096,2107,3,334,167,0,2097,2099,7,30,0,0,2098,2097,1,0,0,
	0,2098,2099,1,0,0,0,2099,2100,1,0,0,0,2100,2101,5,108,0,0,2101,2107,3,332,
	166,0,2102,2104,3,328,164,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104,2105,
	1,0,0,0,2105,2107,3,330,165,0,2106,2081,1,0,0,0,2106,2086,1,0,0,0,2106,
	2090,1,0,0,0,2106,2094,1,0,0,0,2106,2098,1,0,0,0,2106,2103,1,0,0,0,2107,
	323,1,0,0,0,2108,2113,5,285,0,0,2109,2113,3,326,163,0,2110,2111,5,212,0,
	0,2111,2113,5,280,0,0,2112,2108,1,0,0,0,2112,2109,1,0,0,0,2112,2110,1,0,
	0,0,2113,325,1,0,0,0,2114,2120,5,107,0,0,2115,2116,5,212,0,0,2116,2120,
	5,107,0,0,2117,2118,5,212,0,0,2118,2120,5,106,0,0,2119,2114,1,0,0,0,2119,
	2115,1,0,0,0,2119,2117,1,0,0,0,2120,327,1,0,0,0,2121,2131,5,23,0,0,2122,
	2131,5,284,0,0,2123,2131,5,106,0,0,2124,2125,5,175,0,0,2125,2131,5,143,
	0,0,2126,2127,5,175,0,0,2127,2131,5,106,0,0,2128,2129,5,223,0,0,2129,2131,
	5,106,0,0,2130,2121,1,0,0,0,2130,2122,1,0,0,0,2130,2123,1,0,0,0,2130,2124,
	1,0,0,0,2130,2126,1,0,0,0,2130,2128,1,0,0,0,2131,329,1,0,0,0,2132,2134,
	3,528,264,0,2133,2135,3,314,157,0,2134,2133,1,0,0,0,2134,2135,1,0,0,0,2135,
	2137,1,0,0,0,2136,2138,3,358,179,0,2137,2136,1,0,0,0,2137,2138,1,0,0,0,
	2138,331,1,0,0,0,2139,2144,3,528,264,0,2140,2142,7,25,0,0,2141,2143,5,193,
	0,0,2142,2141,1,0,0,0,2142,2143,1,0,0,0,2143,2145,1,0,0,0,2144,2140,1,0,
	0,0,2144,2145,1,0,0,0,2145,2147,1,0,0,0,2146,2148,3,358,179,0,2147,2146,
	1,0,0,0,2147,2148,1,0,0,0,2148,333,1,0,0,0,2149,2151,3,528,264,0,2150,2152,
	3,304,152,0,2151,2150,1,0,0,0,2151,2152,1,0,0,0,2152,2154,1,0,0,0,2153,
	2155,3,358,179,0,2154,2153,1,0,0,0,2154,2155,1,0,0,0,2155,335,1,0,0,0,2156,
	2158,7,31,0,0,2157,2159,3,342,171,0,2158,2157,1,0,0,0,2158,2159,1,0,0,0,
	2159,2161,1,0,0,0,2160,2162,3,304,152,0,2161,2160,1,0,0,0,2161,2162,1,0,
	0,0,2162,2164,1,0,0,0,2163,2165,3,358,179,0,2164,2163,1,0,0,0,2164,2165,
	1,0,0,0,2165,337,1,0,0,0,2166,2168,3,344,172,0,2167,2166,1,0,0,0,2167,2168,
	1,0,0,0,2168,2169,1,0,0,0,2169,2171,3,340,170,0,2170,2172,3,342,171,0,2171,
	2170,1,0,0,0,2171,2172,1,0,0,0,2172,2174,1,0,0,0,2173,2175,3,304,152,0,
	2174,2173,1,0,0,0,2174,2175,1,0,0,0,2175,2177,1,0,0,0,2176,2178,3,358,179,
	0,2177,2176,1,0,0,0,2177,2178,1,0,0,0,2178,339,1,0,0,0,2179,2180,7,32,0,
	0,2180,341,1,0,0,0,2181,2188,5,104,0,0,2182,2186,5,44,0,0,2183,2184,5,66,
	0,0,2184,2187,5,289,0,0,2185,2187,3,646,323,0,2186,2183,1,0,0,0,2186,2185,
	1,0,0,0,2187,2189,1,0,0,0,2188,2182,1,0,0,0,2188,2189,1,0,0,0,2189,343,
	1,0,0,0,2190,2196,5,23,0,0,2191,2192,5,43,0,0,2192,2196,5,133,0,0,2193,
	2194,5,289,0,0,2194,2196,5,75,0,0,2195,2190,1,0,0,0,2195,2191,1,0,0,0,2195,
	2193,1,0,0,0,2196,345,1,0,0,0,2197,2198,3,530,265,0,2198,2199,3,356,178,
	0,2199,347,1,0,0,0,2200,2201,5,265,0,0,2201,2202,3,350,175,0,2202,349,1,
	0,0,0,2203,2204,3,530,265,0,2204,2205,3,356,178,0,2205,351,1,0,0,0,2206,
	2207,3,354,177,0,2207,2208,3,356,178,0,2208,353,1,0,0,0,2209,2210,7,33,
	0,0,2210,355,1,0,0,0,2211,2213,3,304,152,0,2212,2211,1,0,0,0,2212,2213,
	1,0,0,0,2213,2219,1,0,0,0,2214,2216,3,362,181,0,2215,2217,3,304,152,0,2216,
	2215,1,0,0,0,2216,2217,1,0,0,0,2217,2219,1,0,0,0,2218,2212,1,0,0,0,2218,
	2214,1,0,0,0,2219,2221,1,0,0,0,2220,2222,3,358,179,0,2221,2220,1,0,0,0,
	2221,2222,1,0,0,0,2222,357,1,0,0,0,2223,2226,3,348,174,0,2224,2226,3,360,
	180,0,2225,2223,1,0,0,0,2225,2224,1,0,0,0,2226,359,1,0,0,0,2227,2234,5,
	253,0,0,2228,2235,3,316,158,0,2229,2235,3,322,161,0,2230,2235,3,338,169,
	0,2231,2235,3,336,168,0,2232,2235,3,352,176,0,2233,2235,3,346,173,0,2234,
	2228,1,0,0,0,2234,2229,1,0,0,0,2234,2230,1,0,0,0,2234,2231,1,0,0,0,2234,
	2232,1,0,0,0,2234,2233,1,0,0,0,2235,361,1,0,0,0,2236,2239,3,636,318,0,2237,
	2239,3,192,96,0,2238,2236,1,0,0,0,2238,2237,1,0,0,0,2239,363,1,0,0,0,2240,
	2245,3,366,183,0,2241,2242,5,34,0,0,2242,2244,3,366,183,0,2243,2241,1,0,
	0,0,2244,2247,1,0,0,0,2245,2243,1,0,0,0,2245,2246,1,0,0,0,2246,365,1,0,
	0,0,2247,2245,1,0,0,0,2248,2250,3,368,184,0,2249,2251,3,370,185,0,2250,
	2249,1,0,0,0,2250,2251,1,0,0,0,2251,2255,1,0,0,0,2252,2254,3,372,186,0,
	2253,2252,1,0,0,0,2254,2257,1,0,0,0,2255,2253,1,0,0,0,2255,2256,1,0,0,0,
	2256,367,1,0,0,0,2257,2255,1,0,0,0,2258,2324,5,182,0,0,2259,2324,5,184,
	0,0,2260,2324,5,36,0,0,2261,2324,5,37,0,0,2262,2324,5,293,0,0,2263,2324,
	5,261,0,0,2264,2324,5,139,0,0,2265,2267,5,254,0,0,2266,2265,1,0,0,0,2266,
	2267,1,0,0,0,2267,2268,1,0,0,0,2268,2324,5,140,0,0,2269,2324,5,114,0,0,
	2270,2324,5,70,0,0,2271,2272,5,155,0,0,2272,2324,7,34,0,0,2273,2274,5,305,
	0,0,2274,2324,7,34,0,0,2275,2280,5,268,0,0,2276,2277,5,301,0,0,2277,2281,
	5,271,0,0,2278,2279,5,300,0,0,2279,2281,5,271,0,0,2280,2276,1,0,0,0,2280,
	2278,1,0,0,0,2281,2324,1,0,0,0,2282,2287,5,270,0,0,2283,2284,5,301,0,0,
	2284,2288,5,271,0,0,2285,2286,5,300,0,0,2286,2288,5,271,0,0,2287,2283,1,
	0,0,0,2287,2285,1,0,0,0,2288,2324,1,0,0,0,2289,2324,5,93,0,0,2290,2324,
	5,202,0,0,2291,2324,5,175,0,0,2292,2324,5,296,0,0,2293,2324,5,223,0,0,2294,
	2324,5,95,0,0,2295,2324,5,160,0,0,2296,2297,7,35,0,0,2297,2298,5,158,0,
	0,2298,2299,3,364,182,0,2299,2300,5,127,0,0,2300,2324,1,0,0,0,2301,2324,
	5,196,0,0,2302,2324,5,197,0,0,2303,2304,5,212,0,0,2304,2324,5,292,0,0,2305,
	2321,5,26,0,0,2306,2322,5,175,0,0,2307,2322,5,296,0,0,2308,2322,5,223,0,
	0,2309,2322,5,95,0,0,2310,2322,5,160,0,0,2311,2312,5,212,0,0,2312,2322,
	5,292,0,0,2313,2315,5,292,0,0,2314,2313,1,0,0,0,2314,2315,1,0,0,0,2315,
	2316,1,0,0,0,2316,2317,5,158,0,0,2317,2318,3,364,182,0,2318,2319,5,127,
	0,0,2319,2322,1,0,0,0,2320,2322,5,292,0,0,2321,2306,1,0,0,0,2321,2307,1,
	0,0,0,2321,2308,1,0,0,0,2321,2309,1,0,0,0,2321,2310,1,0,0,0,2321,2311,1,
	0,0,0,2321,2314,1,0,0,0,2321,2320,1,0,0,0,2321,2322,1,0,0,0,2322,2324,1,
	0,0,0,2323,2258,1,0,0,0,2323,2259,1,0,0,0,2323,2260,1,0,0,0,2323,2261,1,
	0,0,0,2323,2262,1,0,0,0,2323,2263,1,0,0,0,2323,2264,1,0,0,0,2323,2266,1,
	0,0,0,2323,2269,1,0,0,0,2323,2270,1,0,0,0,2323,2271,1,0,0,0,2323,2273,1,
	0,0,0,2323,2275,1,0,0,0,2323,2282,1,0,0,0,2323,2289,1,0,0,0,2323,2290,1,
	0,0,0,2323,2291,1,0,0,0,2323,2292,1,0,0,0,2323,2293,1,0,0,0,2323,2294,1,
	0,0,0,2323,2295,1,0,0,0,2323,2296,1,0,0,0,2323,2301,1,0,0,0,2323,2302,1,
	0,0,0,2323,2303,1,0,0,0,2323,2305,1,0,0,0,2324,369,1,0,0,0,2325,2326,5,
	181,0,0,2326,2329,5,184,0,0,2327,2329,5,147,0,0,2328,2325,1,0,0,0,2328,
	2327,1,0,0,0,2329,371,1,0,0,0,2330,2332,7,35,0,0,2331,2333,3,370,185,0,
	2332,2331,1,0,0,0,2332,2333,1,0,0,0,2333,373,1,0,0,0,2334,2335,5,157,0,
	0,2335,2336,3,288,144,0,2336,2337,3,150,75,0,2337,2338,5,237,0,0,2338,375,
	1,0,0,0,2339,2340,5,157,0,0,2340,2342,5,237,0,0,2341,2343,3,162,81,0,2342,
	2341,1,0,0,0,2342,2343,1,0,0,0,2343,2344,1,0,0,0,2344,2345,3,164,82,0,2345,
	2346,5,148,0,0,2346,2347,3,288,144,0,2347,2348,3,152,76,0,2348,2349,5,215,
	0,0,2349,2351,3,164,82,0,2350,2352,3,166,83,0,2351,2350,1,0,0,0,2351,2352,
	1,0,0,0,2352,2353,1,0,0,0,2353,2354,5,157,0,0,2354,2355,5,237,0,0,2355,
	377,1,0,0,0,2356,2358,5,58,0,0,2357,2359,3,602,301,0,2358,2357,1,0,0,0,
	2358,2359,1,0,0,0,2359,2363,1,0,0,0,2360,2361,5,130,0,0,2361,2362,5,181,
	0,0,2362,2364,5,108,0,0,2363,2360,1,0,0,0,2363,2364,1,0,0,0,2364,2365,1,
	0,0,0,2365,2368,7,36,0,0,2366,2369,3,374,187,0,2367,2369,3,376,188,0,2368,
	2366,1,0,0,0,2368,2367,1,0,0,0,2369,2370,1,0,0,0,2370,2372,3,380,190,0,
	2371,2373,3,598,299,0,2372,2371,1,0,0,0,2372,2373,1,0,0,0,2373,379,1,0,
	0,0,2374,2375,5,31,0,0,2375,2376,5,108,0,0,2376,2409,3,404,202,0,2377,2378,
	7,37,0,0,2378,2382,3,404,202,0,2379,2383,5,51,0,0,2380,2381,5,141,0,0,2381,
	2383,7,17,0,0,2382,2379,1,0,0,0,2382,2380,1,0,0,0,2383,2384,1,0,0,0,2384,
	2385,3,364,182,0,2385,2409,1,0,0,0,2386,2387,7,37,0,0,2387,2388,3,404,202,
	0,2388,2390,5,141,0,0,2389,2391,7,28,0,0,2390,2389,1,0,0,0,2390,2391,1,
	0,0,0,2391,2392,1,0,0,0,2392,2393,5,284,0,0,2393,2409,1,0,0,0,2394,2395,
	7,37,0,0,2395,2396,3,404,202,0,2396,2398,5,141,0,0,2397,2399,7,28,0,0,2398,
	2397,1,0,0,0,2398,2399,1,0,0,0,2399,2400,1,0,0,0,2400,2401,5,143,0,0,2401,
	2409,1,0,0,0,2402,2403,7,37,0,0,2403,2404,3,404,202,0,2404,2405,5,141,0,
	0,2405,2406,5,181,0,0,2406,2407,5,184,0,0,2407,2409,1,0,0,0,2408,2374,1,
	0,0,0,2408,2377,1,0,0,0,2408,2386,1,0,0,0,2408,2394,1,0,0,0,2408,2402,1,
	0,0,0,2409,381,1,0,0,0,2410,2435,5,58,0,0,2411,2414,5,186,0,0,2412,2415,
	3,374,187,0,2413,2415,3,376,188,0,2414,2412,1,0,0,0,2414,2413,1,0,0,0,2415,
	2416,1,0,0,0,2416,2428,5,31,0,0,2417,2418,5,108,0,0,2418,2429,3,404,202,
	0,2419,2420,3,404,202,0,2420,2426,5,141,0,0,2421,2427,5,284,0,0,2422,2423,
	5,175,0,0,2423,2427,5,143,0,0,2424,2425,5,181,0,0,2425,2427,5,184,0,0,2426,
	2421,1,0,0,0,2426,2422,1,0,0,0,2426,2424,1,0,0,0,2427,2429,1,0,0,0,2428,
	2417,1,0,0,0,2428,2419,1,0,0,0,2429,2436,1,0,0,0,2430,2433,3,602,301,0,
	2431,2432,5,130,0,0,2432,2434,5,108,0,0,2433,2431,1,0,0,0,2433,2434,1,0,
	0,0,2434,2436,1,0,0,0,2435,2411,1,0,0,0,2435,2430,1,0,0,0,2436,383,1,0,
	0,0,2437,2438,5,42,0,0,2438,2439,5,134,0,0,2439,2465,3,388,194,0,2440,2441,
	5,214,0,0,2441,2442,5,134,0,0,2442,2465,3,388,194,0,2443,2444,5,266,0,0,
	2444,2445,5,134,0,0,2445,2465,3,388,194,0,2446,2447,5,202,0,0,2447,2448,
	5,134,0,0,2448,2465,3,388,194,0,2449,2450,5,294,0,0,2450,2451,5,134,0,0,
	2451,2465,3,388,194,0,2452,2453,5,156,0,0,2453,2454,5,134,0,0,2454,2465,
	3,396,198,0,2455,2456,5,118,0,0,2456,2457,5,134,0,0,2457,2465,3,390,195,
	0,2458,2462,5,134,0,0,2459,2460,5,186,0,0,2460,2463,3,386,193,0,2461,2463,
	3,388,194,0,2462,2459,1,0,0,0,2462,2461,1,0,0,0,2463,2465,1,0,0,0,2464,
	2437,1,0,0,0,2464,2440,1,0,0,0,2464,2443,1,0,0,0,2464,2446,1,0,0,0,2464,
	2449,1,0,0,0,2464,2452,1,0,0,0,2464,2455,1,0,0,0,2464,2458,1,0,0,0,2465,
	385,1,0,0,0,2466,2467,3,150,75,0,2467,2468,5,157,0,0,2468,2469,3,290,145,
	0,2469,2470,5,237,0,0,2470,387,1,0,0,0,2471,2473,3,602,301,0,2472,2471,
	1,0,0,0,2472,2473,1,0,0,0,2473,2477,1,0,0,0,2474,2475,5,130,0,0,2475,2476,
	5,181,0,0,2476,2478,5,108,0,0,2477,2474,1,0,0,0,2477,2478,1,0,0,0,2478,
	2479,1,0,0,0,2479,2482,5,115,0,0,2480,2483,3,374,187,0,2481,2483,3,376,
	188,0,2482,2480,1,0,0,0,2482,2481,1,0,0,0,2483,2484,1,0,0,0,2484,2485,5,
	186,0,0,2485,2487,3,404,202,0,2486,2488,3,598,299,0,2487,2486,1,0,0,0,2487,
	2488,1,0,0,0,2488,389,1,0,0,0,2489,2491,3,602,301,0,2490,2489,1,0,0,0,2490,
	2491,1,0,0,0,2491,2495,1,0,0,0,2492,2493,5,130,0,0,2493,2494,5,181,0,0,
	2494,2496,5,108,0,0,2495,2492,1,0,0,0,2495,2496,1,0,0,0,2496,2497,1,0,0,
	0,2497,2500,5,115,0,0,2498,2501,3,392,196,0,2499,2501,3,394,197,0,2500,
	2498,1,0,0,0,2500,2499,1,0,0,0,2501,2502,1,0,0,0,2502,2503,5,186,0,0,2503,
	2504,5,94,0,0,2504,2505,5,148,0,0,2505,2506,3,288,144,0,2506,2513,3,220,
	110,0,2507,2508,5,52,0,0,2508,2509,3,288,144,0,2509,2510,3,220,110,0,2510,
	2512,1,0,0,0,2511,2507,1,0,0,0,2512,2515,1,0,0,0,2513,2511,1,0,0,0,2513,
	2514,1,0,0,0,2514,2516,1,0,0,0,2515,2513,1,0,0,0,2516,2518,5,215,0,0,2517,
	2519,3,598,299,0,2518,2517,1,0,0,0,2518,2519,1,0,0,0,2519,391,1,0,0,0,2520,
	2521,5,157,0,0,2521,2522,3,288,144,0,2522,2523,5,50,0,0,2523,2528,3,646,
	323,0,2524,2525,5,34,0,0,2525,2527,3,646,323,0,2526,2524,1,0,0,0,2527,2530,
	1,0,0,0,2528,2526,1,0,0,0,2528,2529,1,0,0,0,2529,2531,1,0,0,0,2530,2528,
	1,0,0,0,2531,2532,5,237,0,0,2532,393,1,0,0,0,2533,2534,5,157,0,0,2534,2536,
	5,237,0,0,2535,2537,3,162,81,0,2536,2535,1,0,0,0,2536,2537,1,0,0,0,2537,
	2538,1,0,0,0,2538,2539,3,164,82,0,2539,2540,5,148,0,0,2540,2541,3,288,144,
	0,2541,2542,5,50,0,0,2542,2547,3,646,323,0,2543,2544,5,34,0,0,2544,2546,
	3,646,323,0,2545,2543,1,0,0,0,2546,2549,1,0,0,0,2547,2545,1,0,0,0,2547,
	2548,1,0,0,0,2548,2550,1,0,0,0,2549,2547,1,0,0,0,2550,2551,5,215,0,0,2551,
	2553,3,164,82,0,2552,2554,3,166,83,0,2553,2552,1,0,0,0,2553,2554,1,0,0,
	0,2554,2555,1,0,0,0,2555,2556,5,157,0,0,2556,2557,5,237,0,0,2557,395,1,
	0,0,0,2558,2560,3,602,301,0,2559,2558,1,0,0,0,2559,2560,1,0,0,0,2560,2564,
	1,0,0,0,2561,2562,5,130,0,0,2562,2563,5,181,0,0,2563,2565,5,108,0,0,2564,
	2561,1,0,0,0,2564,2565,1,0,0,0,2565,2566,1,0,0,0,2566,2569,5,115,0,0,2567,
	2570,3,398,199,0,2568,2570,3,400,200,0,2569,2567,1,0,0,0,2569,2568,1,0,
	0,0,2570,2571,1,0,0,0,2571,2572,3,646,323,0,2572,2573,5,157,0,0,2573,2574,
	3,288,144,0,2574,2576,5,237,0,0,2575,2577,3,598,299,0,2576,2575,1,0,0,0,
	2576,2577,1,0,0,0,2577,397,1,0,0,0,2578,2579,5,157,0,0,2579,2580,3,288,
	144,0,2580,2581,5,237,0,0,2581,2582,5,186,0,0,2582,2583,5,94,0,0,2583,399,
	1,0,0,0,2584,2585,5,157,0,0,2585,2587,5,237,0,0,2586,2588,3,162,81,0,2587,
	2586,1,0,0,0,2587,2588,1,0,0,0,2588,2589,1,0,0,0,2589,2590,3,164,82,0,2590,
	2591,5,148,0,0,2591,2592,3,288,144,0,2592,2593,5,215,0,0,2593,2595,3,164,
	82,0,2594,2596,3,166,83,0,2595,2594,1,0,0,0,2595,2596,1,0,0,0,2596,2597,
	1,0,0,0,2597,2598,5,157,0,0,2598,2599,5,237,0,0,2599,2601,5,186,0,0,2600,
	2602,5,94,0,0,2601,2600,1,0,0,0,2601,2602,1,0,0,0,2602,401,1,0,0,0,2603,
	2615,5,134,0,0,2604,2605,5,186,0,0,2605,2606,3,150,75,0,2606,2607,5,157,
	0,0,2607,2608,3,290,145,0,2608,2609,5,237,0,0,2609,2616,1,0,0,0,2610,2613,
	3,602,301,0,2611,2612,5,130,0,0,2612,2614,5,108,0,0,2613,2611,1,0,0,0,2613,
	2614,1,0,0,0,2614,2616,1,0,0,0,2615,2604,1,0,0,0,2615,2610,1,0,0,0,2616,
	403,1,0,0,0,2617,2618,3,288,144,0,2618,2619,3,220,110,0,2619,2635,1,0,0,
	0,2620,2621,5,157,0,0,2621,2622,3,288,144,0,2622,2629,3,220,110,0,2623,
	2624,5,52,0,0,2624,2625,3,288,144,0,2625,2626,3,220,110,0,2626,2628,1,0,
	0,0,2627,2623,1,0,0,0,2628,2631,1,0,0,0,2629,2627,1,0,0,0,2629,2630,1,0,
	0,0,2630,2632,1,0,0,0,2631,2629,1,0,0,0,2632,2633,5,237,0,0,2633,2635,1,
	0,0,0,2634,2617,1,0,0,0,2634,2620,1,0,0,0,2635,405,1,0,0,0,2636,2637,5,
	96,0,0,2637,2638,5,246,0,0,2638,2640,3,640,320,0,2639,2641,3,598,299,0,
	2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,407,1,0,0,0,2642,2643,5,246,0,
	0,2643,2644,3,640,320,0,2644,2645,5,248,0,0,2645,2646,3,598,299,0,2646,
	409,1,0,0,0,2647,2648,5,246,0,0,2648,2649,3,640,320,0,2649,2650,5,272,0,
	0,2650,2651,3,640,320,0,2651,411,1,0,0,0,2652,2653,5,246,0,0,2653,2654,
	3,640,320,0,2654,413,1,0,0,0,2655,2657,7,38,0,0,2656,2658,3,304,152,0,2657,
	2656,1,0,0,0,2657,2658,1,0,0,0,2658,415,1,0,0,0,2659,2661,5,91,0,0,2660,
	2659,1,0,0,0,2660,2661,1,0,0,0,2661,2664,1,0,0,0,2662,2665,3,418,209,0,
	2663,2665,3,420,210,0,2664,2662,1,0,0,0,2664,2663,1,0,0,0,2665,417,1,0,
	0,0,2666,2667,5,73,0,0,2667,2668,7,39,0,0,2668,2669,5,117,0,0,2669,2670,
	7,38,0,0,2670,2675,3,640,320,0,2671,2672,5,52,0,0,2672,2674,3,640,320,0,
	2673,2671,1,0,0,0,2674,2677,1,0,0,0,2675,2673,1,0,0,0,2675,2676,1,0,0,0,
	2676,419,1,0,0,0,2677,2675,1,0,0,0,2678,2679,5,218,0,0,2679,2680,7,39,0,
	0,2680,421,1,0,0,0,2681,2682,5,233,0,0,2682,2686,3,600,300,0,2683,2684,
	5,130,0,0,2684,2685,5,181,0,0,2685,2687,5,108,0,0,2686,2683,1,0,0,0,2686,
	2687,1,0,0,0,2687,2692,1,0,0,0,2688,2689,5,28,0,0,2689,2690,5,61,0,0,2690,
	2691,5,185,0,0,2691,2693,3,600,300,0,2692,2688,1,0,0,0,2692,2693,1,0,0,
	0,2693,423,1,0,0,0,2694,2695,5,233,0,0,2695,2698,3,600,300,0,2696,2697,
	5,130,0,0,2697,2699,5,108,0,0,2698,2696,1,0,0,0,2698,2699,1,0,0,0,2699,
	425,1,0,0,0,2700,2701,5,233,0,0,2701,2704,3,600,300,0,2702,2703,5,130,0,
	0,2703,2705,5,108,0,0,2704,2702,1,0,0,0,2704,2705,1,0,0,0,2705,2706,1,0,
	0,0,2706,2707,5,272,0,0,2707,2708,3,600,300,0,2708,427,1,0,0,0,2709,2711,
	7,40,0,0,2710,2709,1,0,0,0,2710,2711,1,0,0,0,2711,2712,1,0,0,0,2712,2715,
	3,430,215,0,2713,2714,5,300,0,0,2714,2716,7,41,0,0,2715,2713,1,0,0,0,2715,
	2716,1,0,0,0,2716,2718,1,0,0,0,2717,2719,3,304,152,0,2718,2717,1,0,0,0,
	2718,2719,1,0,0,0,2719,429,1,0,0,0,2720,2721,7,42,0,0,2721,431,1,0,0,0,
	2722,2723,5,289,0,0,2723,2727,3,600,300,0,2724,2725,5,130,0,0,2725,2726,
	5,181,0,0,2726,2728,5,108,0,0,2727,2724,1,0,0,0,2727,2728,1,0,0,0,2728,
	2729,1,0,0,0,2729,2730,5,248,0,0,2730,2740,3,442,221,0,2731,2736,5,248,
	0,0,2732,2733,5,194,0,0,2733,2737,3,446,223,0,2734,2737,3,448,224,0,2735,
	2737,3,450,225,0,2736,2732,1,0,0,0,2736,2734,1,0,0,0,2736,2735,1,0,0,0,
	2737,2739,1,0,0,0,2738,2731,1,0,0,0,2739,2742,1,0,0,0,2740,2738,1,0,0,0,
	2740,2741,1,0,0,0,2741,433,1,0,0,0,2742,2740,1,0,0,0,2743,2744,5,289,0,
	0,2744,2747,3,600,300,0,2745,2746,5,130,0,0,2746,2748,5,108,0,0,2747,2745,
	1,0,0,0,2747,2748,1,0,0,0,2748,435,1,0,0,0,2749,2750,5,289,0,0,2750,2753,
	3,600,300,0,2751,2752,5,130,0,0,2752,2754,5,108,0,0,2753,2751,1,0,0,0,2753,
	2754,1,0,0,0,2754,2755,1,0,0,0,2755,2756,5,272,0,0,2756,2757,3,600,300,
	0,2757,437,1,0,0,0,2758,2759,5,66,0,0,2759,2760,5,289,0,0,2760,2761,5,248,
	0,0,2761,2762,5,194,0,0,2762,2763,5,117,0,0,2763,2764,3,444,222,0,2764,
	2765,5,272,0,0,2765,2766,3,444,222,0,2766,439,1,0,0,0,2767,2768,5,289,0,
	0,2768,2771,3,600,300,0,2769,2770,5,130,0,0,2770,2772,5,108,0,0,2771,2769,
	1,0,0,0,2771,2772,1,0,0,0,2772,2788,1,0,0,0,2773,2779,5,248,0,0,2774,2780,
	3,442,221,0,2775,2776,5,194,0,0,2776,2780,3,446,223,0,2777,2780,3,448,224,
	0,2778,2780,3,450,225,0,2779,2774,1,0,0,0,2779,2775,1,0,0,0,2779,2777,1,
	0,0,0,2779,2778,1,0,0,0,2780,2782,1,0,0,0,2781,2773,1,0,0,0,2782,2783,1,
	0,0,0,2783,2781,1,0,0,0,2783,2784,1,0,0,0,2784,2789,1,0,0,0,2785,2786,5,
	225,0,0,2786,2787,5,129,0,0,2787,2789,5,68,0,0,2788,2781,1,0,0,0,2788,2785,
	1,0,0,0,2789,441,1,0,0,0,2790,2792,7,43,0,0,2791,2790,1,0,0,0,2791,2792,
	1,0,0,0,2792,2793,1,0,0,0,2793,2794,5,194,0,0,2794,2796,3,444,222,0,2795,
	2797,3,446,223,0,2796,2795,1,0,0,0,2796,2797,1,0,0,0,2797,443,1,0,0,0,2798,
	2801,3,638,319,0,2799,2801,3,276,138,0,2800,2798,1,0,0,0,2800,2799,1,0,
	0,0,2801,445,1,0,0,0,2802,2804,5,47,0,0,2803,2805,5,181,0,0,2804,2803,1,
	0,0,0,2804,2805,1,0,0,0,2805,2806,1,0,0,0,2806,2807,5,230,0,0,2807,447,
	1,0,0,0,2808,2809,5,259,0,0,2809,2810,7,44,0,0,2810,449,1,0,0,0,2811,2812,
	5,129,0,0,2812,2813,5,68,0,0,2813,2814,3,624,312,0,2814,451,1,0,0,0,2815,
	2817,7,41,0,0,2816,2818,3,304,152,0,2817,2816,1,0,0,0,2817,2818,1,0,0,0,
	2818,453,1,0,0,0,2819,2820,5,66,0,0,2820,2822,5,289,0,0,2821,2823,3,304,
	152,0,2822,2821,1,0,0,0,2822,2823,1,0,0,0,2823,455,1,0,0,0,2824,2826,5,
	23,0,0,2825,2824,1,0,0,0,2825,2826,1,0,0,0,2826,2827,1,0,0,0,2827,2829,
	3,466,233,0,2828,2830,3,464,232,0,2829,2828,1,0,0,0,2829,2830,1,0,0,0,2830,
	2832,1,0,0,0,2831,2833,3,304,152,0,2832,2831,1,0,0,0,2832,2833,1,0,0,0,
	2833,457,1,0,0,0,2834,2835,5,262,0,0,2835,2837,3,466,233,0,2836,2838,3,
	304,152,0,2837,2836,1,0,0,0,2837,2838,1,0,0,0,2838,459,1,0,0,0,2839,2840,
	7,42,0,0,2840,2841,3,474,237,0,2841,2843,3,466,233,0,2842,2844,3,464,232,
	0,2843,2842,1,0,0,0,2843,2844,1,0,0,0,2844,2846,1,0,0,0,2845,2847,3,304,
	152,0,2846,2845,1,0,0,0,2846,2847,1,0,0,0,2847,461,1,0,0,0,2848,2850,7,
	41,0,0,2849,2851,3,472,236,0,2850,2849,1,0,0,0,2850,2851,1,0,0,0,2851,2852,
	1,0,0,0,2852,2854,3,466,233,0,2853,2855,3,464,232,0,2854,2853,1,0,0,0,2854,
	2855,1,0,0,0,2855,2857,1,0,0,0,2856,2858,3,304,152,0,2857,2856,1,0,0,0,
	2857,2858,1,0,0,0,2858,463,1,0,0,0,2859,2861,5,28,0,0,2860,2862,5,232,0,
	0,2861,2860,1,0,0,0,2861,2862,1,0,0,0,2862,2863,1,0,0,0,2863,2864,7,45,
	0,0,2864,465,1,0,0,0,2865,2866,7,46,0,0,2866,467,1,0,0,0,2867,2878,5,122,
	0,0,2868,2870,5,132,0,0,2869,2868,1,0,0,0,2869,2870,1,0,0,0,2870,2871,1,
	0,0,0,2871,2872,3,482,241,0,2872,2873,5,272,0,0,2873,2874,3,474,237,0,2874,
	2879,1,0,0,0,2875,2876,3,430,215,0,2876,2877,3,470,235,0,2877,2879,1,0,
	0,0,2878,2869,1,0,0,0,2878,2875,1,0,0,0,2879,469,1,0,0,0,2880,2881,3,474,
	237,0,2881,2882,5,272,0,0,2882,2883,3,472,236,0,2883,471,1,0,0,0,2884,2885,
	3,628,314,0,2885,473,1,0,0,0,2886,2887,3,628,314,0,2887,475,1,0,0,0,2888,
	2890,5,77,0,0,2889,2891,5,132,0,0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,
	2892,1,0,0,0,2892,2893,3,482,241,0,2893,2894,5,272,0,0,2894,2895,3,474,
	237,0,2895,477,1,0,0,0,2896,2910,5,232,0,0,2897,2899,7,47,0,0,2898,2897,
	1,0,0,0,2898,2899,1,0,0,0,2899,2901,1,0,0,0,2900,2902,5,132,0,0,2901,2900,
	1,0,0,0,2901,2902,1,0,0,0,2902,2903,1,0,0,0,2903,2904,3,482,241,0,2904,
	2905,5,117,0,0,2905,2906,3,474,237,0,2906,2911,1,0,0,0,2907,2908,3,430,
	215,0,2908,2909,3,480,240,0,2909,2911,1,0,0,0,2910,2898,1,0,0,0,2910,2907,
	1,0,0,0,2911,479,1,0,0,0,2912,2913,3,474,237,0,2913,2914,5,117,0,0,2914,
	2915,3,472,236,0,2915,481,1,0,0,0,2916,2929,3,484,242,0,2917,2929,3,490,
	245,0,2918,2929,3,516,258,0,2919,2929,3,518,259,0,2920,2929,3,502,251,0,
	2921,2929,3,504,252,0,2922,2929,3,544,272,0,2923,2929,3,542,271,0,2924,
	2929,3,512,256,0,2925,2929,3,508,254,0,2926,2929,3,506,253,0,2927,2929,
	3,514,257,0,2928,2916,1,0,0,0,2928,2917,1,0,0,0,2928,2918,1,0,0,0,2928,
	2919,1,0,0,0,2928,2920,1,0,0,0,2928,2921,1,0,0,0,2928,2922,1,0,0,0,2928,
	2923,1,0,0,0,2928,2924,1,0,0,0,2928,2925,1,0,0,0,2928,2926,1,0,0,0,2928,
	2927,1,0,0,0,2929,483,1,0,0,0,2930,2932,5,23,0,0,2931,2933,3,486,243,0,
	2932,2931,1,0,0,0,2932,2933,1,0,0,0,2933,2934,1,0,0,0,2934,2935,5,186,0,
	0,2935,2936,3,488,244,0,2936,485,1,0,0,0,2937,2939,7,48,0,0,2938,2937,1,
	0,0,0,2938,2939,1,0,0,0,2939,2940,1,0,0,0,2940,2941,5,208,0,0,2941,487,
	1,0,0,0,2942,2943,7,49,0,0,2943,2956,7,50,0,0,2944,2947,7,39,0,0,2945,2948,
	5,269,0,0,2946,2948,3,622,311,0,2947,2945,1,0,0,0,2947,2946,1,0,0,0,2948,
	2956,1,0,0,0,2949,2952,7,51,0,0,2950,2953,5,269,0,0,2951,2953,3,622,311,
	0,2952,2950,1,0,0,0,2952,2951,1,0,0,0,2953,2956,1,0,0,0,2954,2956,5,72,
	0,0,2955,2942,1,0,0,0,2955,2944,1,0,0,0,2955,2949,1,0,0,0,2955,2954,1,0,
	0,0,2956,489,1,0,0,0,2957,2970,5,64,0,0,2958,2959,3,492,246,0,2959,2960,
	5,186,0,0,2960,2961,3,594,297,0,2961,2971,1,0,0,0,2962,2963,3,500,250,0,
	2963,2964,5,186,0,0,2964,2965,5,72,0,0,2965,2971,1,0,0,0,2966,2967,5,186,
	0,0,2967,2968,3,596,298,0,2968,2969,3,552,276,0,2969,2971,1,0,0,0,2970,
	2958,1,0,0,0,2970,2962,1,0,0,0,2970,2966,1,0,0,0,2971,491,1,0,0,0,2972,
	2978,3,526,263,0,2973,2978,3,528,264,0,2974,2978,3,494,247,0,2975,2978,
	3,496,248,0,2976,2978,3,498,249,0,2977,2972,1,0,0,0,2977,2973,1,0,0,0,2977,
	2974,1,0,0,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,493,1,0,0,0,2979,
	2981,5,174,0,0,2980,2982,5,175,0,0,2981,2980,1,0,0,0,2981,2982,1,0,0,0,
	2982,2983,1,0,0,0,2983,2984,7,52,0,0,2984,495,1,0,0,0,2985,2987,5,174,0,
	0,2986,2988,5,223,0,0,2987,2986,1,0,0,0,2987,2988,1,0,0,0,2988,2989,1,0,
	0,0,2989,2990,7,53,0,0,2990,497,1,0,0,0,2991,2993,5,174,0,0,2992,2994,5,
	212,0,0,2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994,2995,1,0,0,0,2995,2996,
	7,54,0,0,2996,499,1,0,0,0,2997,3005,5,20,0,0,2998,3000,5,56,0,0,2999,2998,
	1,0,0,0,2999,3000,1,0,0,0,3000,3001,1,0,0,0,3001,3005,5,68,0,0,3002,3005,
	5,233,0,0,3003,3005,5,289,0,0,3004,2997,1,0,0,0,3004,2999,1,0,0,0,3004,
	3002,1,0,0,0,3004,3003,1,0,0,0,3005,501,1,0,0,0,3006,3018,5,90,0,0,3007,
	3010,3,526,263,0,3008,3010,3,528,264,0,3009,3007,1,0,0,0,3009,3008,1,0,
	0,0,3010,3011,1,0,0,0,3011,3012,5,186,0,0,3012,3013,3,594,297,0,3013,3019,
	1,0,0,0,3014,3015,3,500,250,0,3015,3016,5,186,0,0,3016,3017,5,72,0,0,3017,
	3019,1,0,0,0,3018,3009,1,0,0,0,3018,3014,1,0,0,0,3019,503,1,0,0,0,3020,
	3021,5,154,0,0,3021,3026,5,186,0,0,3022,3023,7,55,0,0,3023,3027,3,640,320,
	0,3024,3025,5,23,0,0,3025,3027,5,67,0,0,3026,3022,1,0,0,0,3026,3024,1,0,
	0,0,3027,505,1,0,0,0,3028,3053,5,253,0,0,3029,3036,3,526,263,0,3030,3036,
	3,528,264,0,3031,3033,3,530,265,0,3032,3034,3,532,266,0,3033,3032,1,0,0,
	0,3033,3034,1,0,0,0,3034,3036,1,0,0,0,3035,3029,1,0,0,0,3035,3030,1,0,0,
	0,3035,3031,1,0,0,0,3036,3037,1,0,0,0,3037,3038,5,186,0,0,3038,3039,3,594,
	297,0,3039,3054,1,0,0,0,3040,3050,5,20,0,0,3041,3050,5,207,0,0,3042,3050,
	5,233,0,0,3043,3050,5,246,0,0,3044,3050,5,247,0,0,3045,3046,3,354,177,0,
	3046,3047,3,538,269,0,3047,3050,1,0,0,0,3048,3050,5,289,0,0,3049,3040,1,
	0,0,0,3049,3041,1,0,0,0,3049,3042,1,0,0,0,3049,3043,1,0,0,0,3049,3044,1,
	0,0,0,3049,3045,1,0,0,0,3049,3048,1,0,0,0,3050,3051,1,0,0,0,3051,3052,5,
	186,0,0,3052,3054,5,72,0,0,3053,3035,1,0,0,0,3053,3049,1,0,0,0,3054,507,
	1,0,0,0,3055,3080,5,248,0,0,3056,3066,3,510,255,0,3057,3061,5,289,0,0,3058,
	3062,5,259,0,0,3059,3060,5,129,0,0,3060,3062,5,68,0,0,3061,3058,1,0,0,0,
	3061,3059,1,0,0,0,3062,3066,1,0,0,0,3063,3064,5,68,0,0,3064,3066,5,16,0,
	0,3065,3056,1,0,0,0,3065,3057,1,0,0,0,3065,3063,1,0,0,0,3066,3067,1,0,0,
	0,3067,3068,5,186,0,0,3068,3081,5,72,0,0,3069,3070,5,144,0,0,3070,3071,
	3,546,273,0,3071,3072,5,186,0,0,3072,3073,3,596,298,0,3073,3081,1,0,0,0,
	3074,3075,5,212,0,0,3075,3076,3,548,274,0,3076,3077,5,186,0,0,3077,3078,
	3,596,298,0,3078,3079,3,552,276,0,3079,3081,1,0,0,0,3080,3065,1,0,0,0,3080,
	3069,1,0,0,0,3080,3074,1,0,0,0,3081,509,1,0,0,0,3082,3083,7,56,0,0,3083,
	511,1,0,0,0,3084,3093,5,225,0,0,3085,3086,7,57,0,0,3086,3087,5,186,0,0,
	3087,3094,5,72,0,0,3088,3089,5,144,0,0,3089,3090,3,546,273,0,3090,3091,
	5,186,0,0,3091,3092,3,596,298,0,3092,3094,1,0,0,0,3093,3085,1,0,0,0,3093,
	3088,1,0,0,0,3094,513,1,0,0,0,3095,3096,5,302,0,0,3096,3097,5,186,0,0,3097,
	3098,3,596,298,0,3098,515,1,0,0,0,3099,3122,5,16,0,0,3100,3122,5,257,0,
	0,3101,3122,5,260,0,0,3102,3106,3,526,263,0,3103,3106,3,528,264,0,3104,
	3106,5,167,0,0,3105,3102,1,0,0,0,3105,3103,1,0,0,0,3105,3104,1,0,0,0,3106,
	3108,1,0,0,0,3107,3109,5,159,0,0,3108,3107,1,0,0,0,3108,3109,1,0,0,0,3109,
	3122,1,0,0,0,3110,3112,5,275,0,0,3111,3113,5,159,0,0,3112,3111,1,0,0,0,
	3112,3113,1,0,0,0,3113,3117,1,0,0,0,3114,3115,5,265,0,0,3115,3117,3,530,
	265,0,3116,3110,1,0,0,0,3116,3114,1,0,0,0,3117,3119,1,0,0,0,3118,3120,3,
	532,266,0,3119,3118,1,0,0,0,3119,3120,1,0,0,0,3120,3122,1,0,0,0,3121,3099,
	1,0,0,0,3121,3100,1,0,0,0,3121,3101,1,0,0,0,3121,3105,1,0,0,0,3121,3116,
	1,0,0,0,3122,3123,1,0,0,0,3123,3124,5,186,0,0,3124,3125,3,594,297,0,3125,
	517,1,0,0,0,3126,3127,5,24,0,0,3127,3150,7,58,0,0,3128,3129,5,32,0,0,3129,
	3150,7,57,0,0,3130,3140,5,20,0,0,3131,3133,5,56,0,0,3132,3131,1,0,0,0,3132,
	3133,1,0,0,0,3133,3134,1,0,0,0,3134,3140,5,68,0,0,3135,3140,5,207,0,0,3136,
	3140,5,233,0,0,3137,3140,5,246,0,0,3138,3140,5,289,0,0,3139,3130,1,0,0,
	0,3139,3132,1,0,0,0,3139,3135,1,0,0,0,3139,3136,1,0,0,0,3139,3137,1,0,0,
	0,3139,3138,1,0,0,0,3140,3141,1,0,0,0,3141,3150,5,159,0,0,3142,3150,3,520,
	260,0,3143,3144,5,220,0,0,3144,3150,7,59,0,0,3145,3147,5,131,0,0,3146,3148,
	3,532,266,0,3147,3146,1,0,0,0,3147,3148,1,0,0,0,3148,3150,1,0,0,0,3149,
	3126,1,0,0,0,3149,3128,1,0,0,0,3149,3139,1,0,0,0,3149,3142,1,0,0,0,3149,
	3143,1,0,0,0,3149,3145,1,0,0,0,3150,3151,1,0,0,0,3151,3152,5,186,0,0,3152,
	3153,5,72,0,0,3153,519,1,0,0,0,3154,3175,5,105,0,0,3155,3156,3,522,261,
	0,3156,3157,5,210,0,0,3157,3176,1,0,0,0,3158,3160,5,38,0,0,3159,3158,1,
	0,0,0,3159,3160,1,0,0,0,3160,3173,1,0,0,0,3161,3162,3,524,262,0,3162,3163,
	3,536,268,0,3163,3174,1,0,0,0,3164,3166,5,289,0,0,3165,3167,5,75,0,0,3166,
	3165,1,0,0,0,3166,3167,1,0,0,0,3167,3169,1,0,0,0,3168,3164,1,0,0,0,3168,
	3169,1,0,0,0,3169,3170,1,0,0,0,3170,3171,3,340,170,0,3171,3172,3,534,267,
	0,3172,3174,1,0,0,0,3173,3161,1,0,0,0,3173,3168,1,0,0,0,3174,3176,1,0,0,
	0,3175,3155,1,0,0,0,3175,3159,1,0,0,0,3176,521,1,0,0,0,3177,3178,7,60,0,
	0,3178,523,1,0,0,0,3179,3180,7,31,0,0,3180,525,1,0,0,0,3181,3182,7,61,0,
	0,3182,527,1,0,0,0,3183,3184,7,62,0,0,3184,529,1,0,0,0,3185,3186,7,63,0,
	0,3186,531,1,0,0,0,3187,3190,5,157,0,0,3188,3191,5,269,0,0,3189,3191,3,
	472,236,0,3190,3188,1,0,0,0,3190,3189,1,0,0,0,3191,3192,1,0,0,0,3192,3193,
	5,237,0,0,3193,533,1,0,0,0,3194,3195,3,540,270,0,3195,535,1,0,0,0,3196,
	3197,3,540,270,0,3197,537,1,0,0,0,3198,3199,3,540,270,0,3199,539,1,0,0,
	0,3200,3205,3,630,315,0,3201,3202,5,52,0,0,3202,3204,3,630,315,0,3203,3201,
	1,0,0,0,3204,3207,1,0,0,0,3205,3203,1,0,0,0,3205,3206,1,0,0,0,3206,541,
	1,0,0,0,3207,3205,1,0,0,0,3208,3212,5,277,0,0,3209,3210,7,64,0,0,3210,3212,
	3,548,274,0,3211,3208,1,0,0,0,3211,3209,1,0,0,0,3212,3213,1,0,0,0,3213,
	3214,5,186,0,0,3214,3215,3,596,298,0,3215,3219,3,552,276,0,3216,3217,5,
	157,0,0,3217,3218,5,269,0,0,3218,3220,5,237,0,0,3219,3216,1,0,0,0,3219,
	3220,1,0,0,0,3220,543,1,0,0,0,3221,3225,5,76,0,0,3222,3223,5,162,0,0,3223,
	3225,3,548,274,0,3224,3221,1,0,0,0,3224,3222,1,0,0,0,3225,3226,1,0,0,0,
	3226,3227,5,186,0,0,3227,3228,3,596,298,0,3228,3229,3,552,276,0,3229,545,
	1,0,0,0,3230,3233,5,269,0,0,3231,3233,3,550,275,0,3232,3230,1,0,0,0,3232,
	3231,1,0,0,0,3233,547,1,0,0,0,3234,3237,5,149,0,0,3235,3238,5,269,0,0,3236,
	3238,3,550,275,0,3237,3235,1,0,0,0,3237,3236,1,0,0,0,3238,3239,1,0,0,0,
	3239,3240,5,216,0,0,3240,549,1,0,0,0,3241,3246,3,646,323,0,3242,3243,5,
	52,0,0,3243,3245,3,646,323,0,3244,3242,1,0,0,0,3245,3248,1,0,0,0,3246,3244,
	1,0,0,0,3246,3247,1,0,0,0,3247,551,1,0,0,0,3248,3246,1,0,0,0,3249,3252,
	3,554,277,0,3250,3253,5,269,0,0,3251,3253,3,550,275,0,3252,3250,1,0,0,0,
	3252,3251,1,0,0,0,3253,3283,1,0,0,0,3254,3255,5,115,0,0,3255,3257,5,157,
	0,0,3256,3258,3,288,144,0,3257,3256,1,0,0,0,3257,3258,1,0,0,0,3258,3268,
	1,0,0,0,3259,3260,5,50,0,0,3260,3265,3,646,323,0,3261,3262,5,34,0,0,3262,
	3264,3,646,323,0,3263,3261,1,0,0,0,3264,3267,1,0,0,0,3265,3263,1,0,0,0,
	3265,3266,1,0,0,0,3266,3269,1,0,0,0,3267,3265,1,0,0,0,3268,3259,1,0,0,0,
	3268,3269,1,0,0,0,3269,3280,1,0,0,0,3270,3271,5,237,0,0,3271,3272,5,299,
	0,0,3272,3281,3,192,96,0,3273,3274,5,299,0,0,3274,3277,3,192,96,0,3275,
	3277,3,644,322,0,3276,3273,1,0,0,0,3276,3275,1,0,0,0,3277,3278,1,0,0,0,
	3278,3279,5,237,0,0,3279,3281,1,0,0,0,3280,3270,1,0,0,0,3280,3276,1,0,0,
	0,3281,3283,1,0,0,0,3282,3249,1,0,0,0,3282,3254,1,0,0,0,3282,3283,1,0,0,
	0,3283,553,1,0,0,0,3284,3288,3,556,278,0,3285,3288,3,560,280,0,3286,3288,
	3,558,279,0,3287,3284,1,0,0,0,3287,3285,1,0,0,0,3287,3286,1,0,0,0,3288,
	555,1,0,0,0,3289,3290,7,65,0,0,3290,557,1,0,0,0,3291,3292,7,66,0,0,3292,
	559,1,0,0,0,3293,3294,7,67,0,0,3294,561,1,0,0,0,3295,3296,5,56,0,0,3296,
	3297,5,68,0,0,3297,3301,3,624,312,0,3298,3299,5,130,0,0,3299,3300,5,181,
	0,0,3300,3302,5,108,0,0,3301,3298,1,0,0,0,3301,3302,1,0,0,0,3302,3304,1,
	0,0,0,3303,3305,3,598,299,0,3304,3303,1,0,0,0,3304,3305,1,0,0,0,3305,3307,
	1,0,0,0,3306,3308,3,588,294,0,3307,3306,1,0,0,0,3307,3308,1,0,0,0,3308,
	563,1,0,0,0,3309,3310,5,68,0,0,3310,3314,3,624,312,0,3311,3312,5,130,0,
	0,3312,3313,5,181,0,0,3313,3315,5,108,0,0,3314,3311,1,0,0,0,3314,3315,1,
	0,0,0,3315,3323,1,0,0,0,3316,3319,5,273,0,0,3317,3320,3,566,283,0,3318,
	3320,3,570,285,0,3319,3317,1,0,0,0,3319,3318,1,0,0,0,3320,3321,1,0,0,0,
	3321,3319,1,0,0,0,3321,3322,1,0,0,0,3322,3324,1,0,0,0,3323,3316,1,0,0,0,
	3323,3324,1,0,0,0,3324,3326,1,0,0,0,3325,3327,3,598,299,0,3326,3325,1,0,
	0,0,3326,3327,1,0,0,0,3327,3329,1,0,0,0,3328,3330,3,588,294,0,3329,3328,
	1,0,0,0,3329,3330,1,0,0,0,3330,565,1,0,0,0,3331,3332,5,10,0,0,3332,3333,
	3,568,284,0,3333,567,1,0,0,0,3334,3335,7,68,0,0,3335,569,1,0,0,0,3336,3337,
	5,10,0,0,3337,3338,3,572,286,0,3338,571,1,0,0,0,3339,3340,7,69,0,0,3340,
	573,1,0,0,0,3341,3343,5,56,0,0,3342,3341,1,0,0,0,3342,3343,1,0,0,0,3343,
	3344,1,0,0,0,3344,3345,5,68,0,0,3345,3348,3,624,312,0,3346,3347,5,130,0,
	0,3347,3349,5,108,0,0,3348,3346,1,0,0,0,3348,3349,1,0,0,0,3349,3352,1,0,
	0,0,3350,3351,7,70,0,0,3351,3353,5,67,0,0,3352,3350,1,0,0,0,3352,3353,1,
	0,0,0,3353,3355,1,0,0,0,3354,3356,3,588,294,0,3355,3354,1,0,0,0,3355,3356,
	1,0,0,0,3356,575,1,0,0,0,3357,3358,5,68,0,0,3358,3361,3,624,312,0,3359,
	3360,5,130,0,0,3360,3362,5,108,0,0,3361,3359,1,0,0,0,3361,3362,1,0,0,0,
	3362,3380,1,0,0,0,3363,3367,5,248,0,0,3364,3368,3,578,289,0,3365,3368,3,
	580,290,0,3366,3368,3,582,291,0,3367,3364,1,0,0,0,3367,3365,1,0,0,0,3367,
	3366,1,0,0,0,3368,3370,1,0,0,0,3369,3363,1,0,0,0,3370,3371,1,0,0,0,3371,
	3369,1,0,0,0,3371,3372,1,0,0,0,3372,3381,1,0,0,0,3373,3374,5,225,0,0,3374,
	3375,5,190,0,0,3375,3377,3,646,323,0,3376,3373,1,0,0,0,3377,3378,1,0,0,
	0,3378,3376,1,0,0,0,3378,3379,1,0,0,0,3379,3381,1,0,0,0,3380,3369,1,0,0,
	0,3380,3376,1,0,0,0,3381,3383,1,0,0,0,3382,3384,3,588,294,0,3383,3382,1,
	0,0,0,3383,3384,1,0,0,0,3384,577,1,0,0,0,3385,3386,5,16,0,0,3386,3387,5,
	217,0,0,3387,3388,7,71,0,0,3388,579,1,0,0,0,3389,3392,5,273,0,0,3390,3393,
	3,566,283,0,3391,3393,3,570,285,0,3392,3390,1,0,0,0,3392,3391,1,0,0,0,3393,
	3394,1,0,0,0,3394,3392,1,0,0,0,3394,3395,1,0,0,0,3395,581,1,0,0,0,3396,
	3397,5,190,0,0,3397,3398,3,646,323,0,3398,3399,3,192,96,0,3399,583,1,0,
	0,0,3400,3401,5,257,0,0,3401,3402,5,68,0,0,3402,3404,3,624,312,0,3403,3405,
	3,588,294,0,3404,3403,1,0,0,0,3404,3405,1,0,0,0,3405,585,1,0,0,0,3406,3407,
	5,260,0,0,3407,3408,5,68,0,0,3408,3410,3,624,312,0,3409,3411,3,588,294,
	0,3410,3409,1,0,0,0,3410,3411,1,0,0,0,3411,587,1,0,0,0,3412,3417,5,297,
	0,0,3413,3415,5,10,0,0,3414,3416,3,590,295,0,3415,3414,1,0,0,0,3415,3416,
	1,0,0,0,3416,3418,1,0,0,0,3417,3413,1,0,0,0,3417,3418,1,0,0,0,3418,3421,
	1,0,0,0,3419,3421,5,183,0,0,3420,3412,1,0,0,0,3420,3419,1,0,0,0,3421,589,
	1,0,0,0,3422,3423,7,72,0,0,3423,591,1,0,0,0,3424,3425,7,49,0,0,3425,3427,
	5,68,0,0,3426,3428,3,304,152,0,3427,3426,1,0,0,0,3427,3428,1,0,0,0,3428,
	3437,1,0,0,0,3429,3431,7,39,0,0,3430,3432,3,624,312,0,3431,3430,1,0,0,0,
	3431,3432,1,0,0,0,3432,3434,1,0,0,0,3433,3435,3,304,152,0,3434,3433,1,0,
	0,0,3434,3435,1,0,0,0,3435,3437,1,0,0,0,3436,3424,1,0,0,0,3436,3429,1,0,
	0,0,3437,593,1,0,0,0,3438,3439,7,49,0,0,3439,3446,5,68,0,0,3440,3443,7,
	39,0,0,3441,3444,5,269,0,0,3442,3444,3,622,311,0,3443,3441,1,0,0,0,3443,
	3442,1,0,0,0,3444,3446,1,0,0,0,3445,3438,1,0,0,0,3445,3440,1,0,0,0,3446,
	595,1,0,0,0,3447,3448,7,49,0,0,3448,3455,5,123,0,0,3449,3452,7,51,0,0,3450,
	3453,5,269,0,0,3451,3453,3,622,311,0,3452,3450,1,0,0,0,3452,3451,1,0,0,
	0,3453,3455,1,0,0,0,3454,3447,1,0,0,0,3454,3449,1,0,0,0,3455,597,1,0,0,
	0,3456,3457,5,189,0,0,3457,3458,3,642,321,0,3458,599,1,0,0,0,3459,3462,
	3,646,323,0,3460,3462,3,276,138,0,3461,3459,1,0,0,0,3461,3460,1,0,0,0,3462,
	601,1,0,0,0,3463,3466,3,646,323,0,3464,3466,3,276,138,0,3465,3463,1,0,0,
	0,3465,3464,1,0,0,0,3466,603,1,0,0,0,3467,3468,5,20,0,0,3468,3472,3,624,
	312,0,3469,3470,5,130,0,0,3470,3471,5,181,0,0,3471,3473,5,108,0,0,3472,
	3469,1,0,0,0,3472,3473,1,0,0,0,3473,3474,1,0,0,0,3474,3475,5,115,0,0,3475,
	3476,5,68,0,0,3476,3487,3,624,312,0,3477,3478,5,33,0,0,3478,3479,3,640,
	320,0,3479,3480,5,289,0,0,3480,3481,3,600,300,0,3481,3482,5,194,0,0,3482,
	3485,3,444,222,0,3483,3484,5,89,0,0,3484,3486,3,642,321,0,3485,3483,1,0,
	0,0,3485,3486,1,0,0,0,3486,3488,1,0,0,0,3487,3477,1,0,0,0,3487,3488,1,0,
	0,0,3488,3491,1,0,0,0,3489,3490,5,211,0,0,3490,3492,3,642,321,0,3491,3489,
	1,0,0,0,3491,3492,1,0,0,0,3492,605,1,0,0,0,3493,3494,5,20,0,0,3494,3497,
	3,624,312,0,3495,3496,5,130,0,0,3496,3498,5,108,0,0,3497,3495,1,0,0,0,3497,
	3498,1,0,0,0,3498,3499,1,0,0,0,3499,3500,5,115,0,0,3500,3501,5,68,0,0,3501,
	607,1,0,0,0,3502,3503,5,20,0,0,3503,3506,3,624,312,0,3504,3505,5,130,0,
	0,3505,3507,5,108,0,0,3506,3504,1,0,0,0,3506,3507,1,0,0,0,3507,3508,1,0,
	0,0,3508,3509,5,248,0,0,3509,3515,5,68,0,0,3510,3516,3,610,305,0,3511,3516,
	3,612,306,0,3512,3516,3,614,307,0,3513,3516,3,616,308,0,3514,3516,3,618,
	309,0,3515,3510,1,0,0,0,3515,3511,1,0,0,0,3515,3512,1,0,0,0,3515,3513,1,
	0,0,0,3515,3514,1,0,0,0,3516,3517,1,0,0,0,3517,3515,1,0,0,0,3517,3518,1,
	0,0,0,3518,609,1,0,0,0,3519,3520,5,264,0,0,3520,3523,3,624,312,0,3521,3522,
	5,33,0,0,3522,3524,3,640,320,0,3523,3521,1,0,0,0,3523,3524,1,0,0,0,3524,
	611,1,0,0,0,3525,3526,5,289,0,0,3526,3527,3,600,300,0,3527,613,1,0,0,0,
	3528,3529,5,194,0,0,3529,3530,3,444,222,0,3530,615,1,0,0,0,3531,3532,5,
	89,0,0,3532,3533,3,642,321,0,3533,617,1,0,0,0,3534,3535,5,211,0,0,3535,
	3536,3,642,321,0,3536,619,1,0,0,0,3537,3539,7,73,0,0,3538,3540,3,624,312,
	0,3539,3538,1,0,0,0,3539,3540,1,0,0,0,3540,3541,1,0,0,0,3541,3542,5,115,
	0,0,3542,3544,7,39,0,0,3543,3545,3,304,152,0,3544,3543,1,0,0,0,3544,3545,
	1,0,0,0,3545,621,1,0,0,0,3546,3551,3,624,312,0,3547,3548,5,52,0,0,3548,
	3550,3,624,312,0,3549,3547,1,0,0,0,3550,3553,1,0,0,0,3551,3549,1,0,0,0,
	3551,3552,1,0,0,0,3552,623,1,0,0,0,3553,3551,1,0,0,0,3554,3557,3,626,313,
	0,3555,3557,3,276,138,0,3556,3554,1,0,0,0,3556,3555,1,0,0,0,3557,625,1,
	0,0,0,3558,3563,3,646,323,0,3559,3560,5,86,0,0,3560,3562,3,646,323,0,3561,
	3559,1,0,0,0,3562,3565,1,0,0,0,3563,3561,1,0,0,0,3563,3564,1,0,0,0,3564,
	627,1,0,0,0,3565,3563,1,0,0,0,3566,3571,3,600,300,0,3567,3568,5,52,0,0,
	3568,3570,3,600,300,0,3569,3567,1,0,0,0,3570,3573,1,0,0,0,3571,3569,1,0,
	0,0,3571,3572,1,0,0,0,3572,629,1,0,0,0,3573,3571,1,0,0,0,3574,3576,3,648,
	324,0,3575,3577,3,632,316,0,3576,3575,1,0,0,0,3576,3577,1,0,0,0,3577,3580,
	1,0,0,0,3578,3580,3,632,316,0,3579,3574,1,0,0,0,3579,3578,1,0,0,0,3580,
	631,1,0,0,0,3581,3583,3,634,317,0,3582,3584,3,632,316,0,3583,3582,1,0,0,
	0,3583,3584,1,0,0,0,3584,633,1,0,0,0,3585,3587,5,86,0,0,3586,3588,3,648,
	324,0,3587,3586,1,0,0,0,3587,3588,1,0,0,0,3588,3593,1,0,0,0,3589,3593,5,
	213,0,0,3590,3593,5,269,0,0,3591,3593,3,650,325,0,3592,3585,1,0,0,0,3592,
	3589,1,0,0,0,3592,3590,1,0,0,0,3592,3591,1,0,0,0,3593,635,1,0,0,0,3594,
	3597,3,638,319,0,3595,3596,5,52,0,0,3596,3598,3,638,319,0,3597,3595,1,0,
	0,0,3598,3599,1,0,0,0,3599,3597,1,0,0,0,3599,3600,1,0,0,0,3600,637,1,0,
	0,0,3601,3602,7,74,0,0,3602,639,1,0,0,0,3603,3606,3,638,319,0,3604,3606,
	3,276,138,0,3605,3603,1,0,0,0,3605,3604,1,0,0,0,3606,641,1,0,0,0,3607,3610,
	3,644,322,0,3608,3610,3,276,138,0,3609,3607,1,0,0,0,3609,3608,1,0,0,0,3610,
	643,1,0,0,0,3611,3625,5,149,0,0,3612,3613,3,274,137,0,3613,3614,5,50,0,
	0,3614,3622,3,192,96,0,3615,3616,5,52,0,0,3616,3617,3,274,137,0,3617,3618,
	5,50,0,0,3618,3619,3,192,96,0,3619,3621,1,0,0,0,3620,3615,1,0,0,0,3621,
	3624,1,0,0,0,3622,3620,1,0,0,0,3622,3623,1,0,0,0,3623,3626,1,0,0,0,3624,
	3622,1,0,0,0,3625,3612,1,0,0,0,3625,3626,1,0,0,0,3626,3627,1,0,0,0,3627,
	3628,5,216,0,0,3628,645,1,0,0,0,3629,3632,3,648,324,0,3630,3632,3,650,325,
	0,3631,3629,1,0,0,0,3631,3630,1,0,0,0,3632,647,1,0,0,0,3633,3634,5,15,0,
	0,3634,649,1,0,0,0,3635,3645,3,654,327,0,3636,3645,5,181,0,0,3637,3645,
	5,184,0,0,3638,3645,5,281,0,0,3639,3645,5,180,0,0,3640,3645,5,170,0,0,3641,
	3645,5,171,0,0,3642,3645,5,172,0,0,3643,3645,5,173,0,0,3644,3635,1,0,0,
	0,3644,3636,1,0,0,0,3644,3637,1,0,0,0,3644,3638,1,0,0,0,3644,3639,1,0,0,
	0,3644,3640,1,0,0,0,3644,3641,1,0,0,0,3644,3642,1,0,0,0,3644,3643,1,0,0,
	0,3645,651,1,0,0,0,3646,3649,3,648,324,0,3647,3649,3,654,327,0,3648,3646,
	1,0,0,0,3648,3647,1,0,0,0,3649,653,1,0,0,0,3650,3651,7,75,0,0,3651,655,
	1,0,0,0,3652,3653,5,0,0,1,3653,657,1,0,0,0,464,663,667,673,680,684,690,
	703,710,721,725,730,734,740,745,750,756,774,778,788,796,800,803,806,811,
	815,821,827,840,855,869,890,898,908,911,919,923,927,933,937,942,945,950,
	953,955,967,970,985,992,1012,1015,1018,1027,1031,1033,1035,1045,1051,1059,
	1070,1079,1083,1086,1092,1094,1115,1123,1129,1132,1139,1147,1155,1159,1164,
	1168,1178,1184,1188,1190,1195,1200,1204,1207,1211,1215,1218,1224,1226,1238,
	1242,1245,1248,1252,1258,1261,1264,1272,1276,1281,1288,1302,1305,1310,1313,
	1316,1319,1323,1326,1330,1333,1338,1342,1347,1357,1361,1364,1370,1375,1380,
	1386,1391,1399,1407,1413,1421,1432,1440,1448,1459,1467,1475,1481,1491,1496,
	1505,1510,1515,1519,1524,1527,1530,1539,1547,1555,1561,1567,1578,1582,1585,
	1594,1617,1628,1634,1638,1652,1656,1666,1677,1682,1687,1691,1696,1699,1705,
	1713,1721,1724,1730,1735,1761,1770,1777,1780,1783,1803,1806,1818,1829,1833,
	1835,1843,1847,1849,1859,1864,1874,1877,1888,1893,1900,1903,1917,1927,1931,
	1946,1951,1960,1970,1978,1984,2003,2007,2010,2015,2030,2033,2036,2039,2042,
	2045,2049,2053,2056,2061,2064,2068,2071,2075,2078,2081,2090,2098,2103,2106,
	2112,2119,2130,2134,2137,2142,2144,2147,2151,2154,2158,2161,2164,2167,2171,
	2174,2177,2186,2188,2195,2212,2216,2218,2221,2225,2234,2238,2245,2250,2255,
	2266,2280,2287,2314,2321,2323,2328,2332,2342,2351,2358,2363,2368,2372,2382,
	2390,2398,2408,2414,2426,2428,2433,2435,2462,2464,2472,2477,2482,2487,2490,
	2495,2500,2513,2518,2528,2536,2547,2553,2559,2564,2569,2576,2587,2595,2601,
	2613,2615,2629,2634,2640,2657,2660,2664,2675,2686,2692,2698,2704,2710,2715,
	2718,2727,2736,2740,2747,2753,2771,2779,2783,2788,2791,2796,2800,2804,2817,
	2822,2825,2829,2832,2837,2843,2846,2850,2854,2857,2861,2869,2878,2890,2898,
	2901,2910,2928,2932,2938,2947,2952,2955,2970,2977,2981,2987,2993,2999,3004,
	3009,3018,3026,3033,3035,3049,3053,3061,3065,3080,3093,3105,3108,3112,3116,
	3119,3121,3132,3139,3147,3149,3159,3166,3168,3173,3175,3190,3205,3211,3219,
	3224,3232,3237,3246,3252,3257,3265,3268,3276,3280,3282,3287,3301,3304,3307,
	3314,3319,3321,3323,3326,3329,3342,3348,3352,3355,3361,3367,3371,3378,3380,
	3383,3392,3394,3404,3410,3415,3417,3420,3427,3431,3434,3436,3443,3445,3452,
	3454,3461,3465,3472,3485,3487,3491,3497,3506,3515,3517,3523,3539,3544,3551,
	3556,3563,3571,3576,3579,3583,3587,3592,3599,3605,3609,3622,3625,3631,3644,
	3648];

	private static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!CypherCmdParser.__ATN) {
			CypherCmdParser.__ATN = new ATNDeserializer().deserialize(CypherCmdParser._serializedATN);
		}

		return CypherCmdParser.__ATN;
	}


	static DecisionsToDFA = CypherCmdParser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) );

}

export class StatementsOrCommandsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public statementOrCommand_list(): StatementOrCommandContext[] {
		return this.getTypedRuleContexts(StatementOrCommandContext) as StatementOrCommandContext[];
	}
	public statementOrCommand(i: number): StatementOrCommandContext {
		return this.getTypedRuleContext(StatementOrCommandContext, i) as StatementOrCommandContext;
	}
	public EOF(): TerminalNode {
		return this.getToken(CypherCmdParser.EOF, 0);
	}
	public SEMICOLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.SEMICOLON);
	}
	public SEMICOLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.SEMICOLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_statementsOrCommands;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStatementsOrCommands) {
	 		listener.enterStatementsOrCommands(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStatementsOrCommands) {
	 		listener.exitStatementsOrCommands(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStatementsOrCommands) {
			return visitor.visitStatementsOrCommands(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StatementOrCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public preparsedStatement(): PreparsedStatementContext {
		return this.getTypedRuleContext(PreparsedStatementContext, 0) as PreparsedStatementContext;
	}
	public consoleCommand(): ConsoleCommandContext {
		return this.getTypedRuleContext(ConsoleCommandContext, 0) as ConsoleCommandContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_statementOrCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStatementOrCommand) {
	 		listener.enterStatementOrCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStatementOrCommand) {
	 		listener.exitStatementOrCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStatementOrCommand) {
			return visitor.visitStatementOrCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConsoleCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public clearCmd(): ClearCmdContext {
		return this.getTypedRuleContext(ClearCmdContext, 0) as ClearCmdContext;
	}
	public historyCmd(): HistoryCmdContext {
		return this.getTypedRuleContext(HistoryCmdContext, 0) as HistoryCmdContext;
	}
	public useCmd(): UseCmdContext {
		return this.getTypedRuleContext(UseCmdContext, 0) as UseCmdContext;
	}
	public paramsCmd(): ParamsCmdContext {
		return this.getTypedRuleContext(ParamsCmdContext, 0) as ParamsCmdContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_consoleCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConsoleCommand) {
	 		listener.enterConsoleCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConsoleCommand) {
	 		listener.exitConsoleCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConsoleCommand) {
			return visitor.visitConsoleCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParamsCmdContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PARAM(): TerminalNode {
		return this.getToken(CypherCmdParser.PARAM, 0);
	}
	public paramsArgs(): ParamsArgsContext {
		return this.getTypedRuleContext(ParamsArgsContext, 0) as ParamsArgsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_paramsCmd;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParamsCmd) {
	 		listener.enterParamsCmd(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParamsCmd) {
	 		listener.exitParamsCmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParamsCmd) {
			return visitor.visitParamsCmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParamsArgsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CLEAR(): TerminalNode {
		return this.getToken(CypherCmdParser.CLEAR, 0);
	}
	public listCompletionRule(): ListCompletionRuleContext {
		return this.getTypedRuleContext(ListCompletionRuleContext, 0) as ListCompletionRuleContext;
	}
	public map(): MapContext {
		return this.getTypedRuleContext(MapContext, 0) as MapContext;
	}
	public lambda(): LambdaContext {
		return this.getTypedRuleContext(LambdaContext, 0) as LambdaContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_paramsArgs;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParamsArgs) {
	 		listener.enterParamsArgs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParamsArgs) {
	 		listener.exitParamsArgs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParamsArgs) {
			return visitor.visitParamsArgs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LambdaContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public unescapedSymbolicNameString(): UnescapedSymbolicNameStringContext {
		return this.getTypedRuleContext(UnescapedSymbolicNameStringContext, 0) as UnescapedSymbolicNameStringContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public GT(): TerminalNode {
		return this.getToken(CypherCmdParser.GT, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_lambda;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLambda) {
	 		listener.enterLambda(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLambda) {
	 		listener.exitLambda(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLambda) {
			return visitor.visitLambda(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ClearCmdContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CLEAR(): TerminalNode {
		return this.getToken(CypherCmdParser.CLEAR, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_clearCmd;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterClearCmd) {
	 		listener.enterClearCmd(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitClearCmd) {
	 		listener.exitClearCmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitClearCmd) {
			return visitor.visitClearCmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HistoryCmdContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HISTORY(): TerminalNode {
		return this.getToken(CypherCmdParser.HISTORY, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_historyCmd;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterHistoryCmd) {
	 		listener.enterHistoryCmd(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitHistoryCmd) {
	 		listener.exitHistoryCmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitHistoryCmd) {
			return visitor.visitHistoryCmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UseCmdContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public useCompletionRule(): UseCompletionRuleContext {
		return this.getTypedRuleContext(UseCompletionRuleContext, 0) as UseCompletionRuleContext;
	}
	public symbolicAliasName(): SymbolicAliasNameContext {
		return this.getTypedRuleContext(SymbolicAliasNameContext, 0) as SymbolicAliasNameContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_useCmd;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUseCmd) {
	 		listener.enterUseCmd(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUseCmd) {
	 		listener.exitUseCmd(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUseCmd) {
			return visitor.visitUseCmd(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListCompletionRuleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIST(): TerminalNode {
		return this.getToken(CypherCmdParser.LIST, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_listCompletionRule;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterListCompletionRule) {
	 		listener.enterListCompletionRule(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitListCompletionRule) {
	 		listener.exitListCompletionRule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitListCompletionRule) {
			return visitor.visitListCompletionRule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UseCompletionRuleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USE(): TerminalNode {
		return this.getToken(CypherCmdParser.USE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_useCompletionRule;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUseCompletionRule) {
	 		listener.enterUseCompletionRule(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUseCompletionRule) {
	 		listener.exitUseCompletionRule(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUseCompletionRule) {
			return visitor.visitUseCompletionRule(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparsedStatementContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public statement(): StatementContext {
		return this.getTypedRuleContext(StatementContext, 0) as StatementContext;
	}
	public preparserOption(): PreparserOptionContext {
		return this.getTypedRuleContext(PreparserOptionContext, 0) as PreparserOptionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_preparsedStatement;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPreparsedStatement) {
	 		listener.enterPreparsedStatement(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPreparsedStatement) {
	 		listener.exitPreparsedStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPreparsedStatement) {
			return visitor.visitPreparsedStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PreparserOptionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXPLAIN(): TerminalNode {
		return this.getToken(CypherCmdParser.EXPLAIN, 0);
	}
	public PROFILE(): TerminalNode {
		return this.getToken(CypherCmdParser.PROFILE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_preparserOption;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPreparserOption) {
	 		listener.enterPreparserOption(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPreparserOption) {
	 		listener.exitPreparserOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPreparserOption) {
			return visitor.visitPreparserOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StatementsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public statement_list(): StatementContext[] {
		return this.getTypedRuleContexts(StatementContext) as StatementContext[];
	}
	public statement(i: number): StatementContext {
		return this.getTypedRuleContext(StatementContext, i) as StatementContext;
	}
	public EOF(): TerminalNode {
		return this.getToken(CypherCmdParser.EOF, 0);
	}
	public SEMICOLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.SEMICOLON);
	}
	public SEMICOLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.SEMICOLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_statements;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStatements) {
	 		listener.enterStatements(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStatements) {
	 		listener.exitStatements(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStatements) {
			return visitor.visitStatements(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StatementContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public command(): CommandContext {
		return this.getTypedRuleContext(CommandContext, 0) as CommandContext;
	}
	public regularQuery(): RegularQueryContext {
		return this.getTypedRuleContext(RegularQueryContext, 0) as RegularQueryContext;
	}
	public periodicCommitQueryHintFailure(): PeriodicCommitQueryHintFailureContext {
		return this.getTypedRuleContext(PeriodicCommitQueryHintFailureContext, 0) as PeriodicCommitQueryHintFailureContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_statement;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStatement) {
	 		listener.enterStatement(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStatement) {
	 		listener.exitStatement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStatement) {
			return visitor.visitStatement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PeriodicCommitQueryHintFailureContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USING(): TerminalNode {
		return this.getToken(CypherCmdParser.USING, 0);
	}
	public PERIODIC(): TerminalNode {
		return this.getToken(CypherCmdParser.PERIODIC, 0);
	}
	public COMMIT(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMIT, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_periodicCommitQueryHintFailure;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPeriodicCommitQueryHintFailure) {
	 		listener.enterPeriodicCommitQueryHintFailure(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPeriodicCommitQueryHintFailure) {
	 		listener.exitPeriodicCommitQueryHintFailure(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPeriodicCommitQueryHintFailure) {
			return visitor.visitPeriodicCommitQueryHintFailure(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RegularQueryContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public singleQuery_list(): SingleQueryContext[] {
		return this.getTypedRuleContexts(SingleQueryContext) as SingleQueryContext[];
	}
	public singleQuery(i: number): SingleQueryContext {
		return this.getTypedRuleContext(SingleQueryContext, i) as SingleQueryContext;
	}
	public UNION_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.UNION);
	}
	public UNION(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.UNION, i);
	}
	public ALL_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.ALL);
	}
	public ALL(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, i);
	}
	public DISTINCT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.DISTINCT);
	}
	public DISTINCT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.DISTINCT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_regularQuery;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRegularQuery) {
	 		listener.enterRegularQuery(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRegularQuery) {
	 		listener.exitRegularQuery(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRegularQuery) {
			return visitor.visitRegularQuery(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SingleQueryContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public clause_list(): ClauseContext[] {
		return this.getTypedRuleContexts(ClauseContext) as ClauseContext[];
	}
	public clause(i: number): ClauseContext {
		return this.getTypedRuleContext(ClauseContext, i) as ClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_singleQuery;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSingleQuery) {
	 		listener.enterSingleQuery(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSingleQuery) {
	 		listener.exitSingleQuery(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSingleQuery) {
			return visitor.visitSingleQuery(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public useClause(): UseClauseContext {
		return this.getTypedRuleContext(UseClauseContext, 0) as UseClauseContext;
	}
	public finishClause(): FinishClauseContext {
		return this.getTypedRuleContext(FinishClauseContext, 0) as FinishClauseContext;
	}
	public returnClause(): ReturnClauseContext {
		return this.getTypedRuleContext(ReturnClauseContext, 0) as ReturnClauseContext;
	}
	public createClause(): CreateClauseContext {
		return this.getTypedRuleContext(CreateClauseContext, 0) as CreateClauseContext;
	}
	public insertClause(): InsertClauseContext {
		return this.getTypedRuleContext(InsertClauseContext, 0) as InsertClauseContext;
	}
	public deleteClause(): DeleteClauseContext {
		return this.getTypedRuleContext(DeleteClauseContext, 0) as DeleteClauseContext;
	}
	public setClause(): SetClauseContext {
		return this.getTypedRuleContext(SetClauseContext, 0) as SetClauseContext;
	}
	public removeClause(): RemoveClauseContext {
		return this.getTypedRuleContext(RemoveClauseContext, 0) as RemoveClauseContext;
	}
	public matchClause(): MatchClauseContext {
		return this.getTypedRuleContext(MatchClauseContext, 0) as MatchClauseContext;
	}
	public mergeClause(): MergeClauseContext {
		return this.getTypedRuleContext(MergeClauseContext, 0) as MergeClauseContext;
	}
	public withClause(): WithClauseContext {
		return this.getTypedRuleContext(WithClauseContext, 0) as WithClauseContext;
	}
	public unwindClause(): UnwindClauseContext {
		return this.getTypedRuleContext(UnwindClauseContext, 0) as UnwindClauseContext;
	}
	public callClause(): CallClauseContext {
		return this.getTypedRuleContext(CallClauseContext, 0) as CallClauseContext;
	}
	public subqueryClause(): SubqueryClauseContext {
		return this.getTypedRuleContext(SubqueryClauseContext, 0) as SubqueryClauseContext;
	}
	public loadCSVClause(): LoadCSVClauseContext {
		return this.getTypedRuleContext(LoadCSVClauseContext, 0) as LoadCSVClauseContext;
	}
	public foreachClause(): ForeachClauseContext {
		return this.getTypedRuleContext(ForeachClauseContext, 0) as ForeachClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_clause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterClause) {
	 		listener.enterClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitClause) {
	 		listener.exitClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitClause) {
			return visitor.visitClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UseClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USE(): TerminalNode {
		return this.getToken(CypherCmdParser.USE, 0);
	}
	public graphReference(): GraphReferenceContext {
		return this.getTypedRuleContext(GraphReferenceContext, 0) as GraphReferenceContext;
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_useClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUseClause) {
	 		listener.enterUseClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUseClause) {
	 		listener.exitUseClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUseClause) {
			return visitor.visitUseClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GraphReferenceContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public graphReference(): GraphReferenceContext {
		return this.getTypedRuleContext(GraphReferenceContext, 0) as GraphReferenceContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public functionInvocation(): FunctionInvocationContext {
		return this.getTypedRuleContext(FunctionInvocationContext, 0) as FunctionInvocationContext;
	}
	public symbolicAliasName(): SymbolicAliasNameContext {
		return this.getTypedRuleContext(SymbolicAliasNameContext, 0) as SymbolicAliasNameContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_graphReference;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGraphReference) {
	 		listener.enterGraphReference(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGraphReference) {
	 		listener.exitGraphReference(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGraphReference) {
			return visitor.visitGraphReference(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FinishClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FINISH(): TerminalNode {
		return this.getToken(CypherCmdParser.FINISH, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_finishClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFinishClause) {
	 		listener.enterFinishClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFinishClause) {
	 		listener.exitFinishClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFinishClause) {
			return visitor.visitFinishClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RETURN(): TerminalNode {
		return this.getToken(CypherCmdParser.RETURN, 0);
	}
	public returnBody(): ReturnBodyContext {
		return this.getTypedRuleContext(ReturnBodyContext, 0) as ReturnBodyContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_returnClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReturnClause) {
	 		listener.enterReturnClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReturnClause) {
	 		listener.exitReturnClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReturnClause) {
			return visitor.visitReturnClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnBodyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public returnItems(): ReturnItemsContext {
		return this.getTypedRuleContext(ReturnItemsContext, 0) as ReturnItemsContext;
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(CypherCmdParser.DISTINCT, 0);
	}
	public orderBy(): OrderByContext {
		return this.getTypedRuleContext(OrderByContext, 0) as OrderByContext;
	}
	public skip(): SkipContext {
		return this.getTypedRuleContext(SkipContext, 0) as SkipContext;
	}
	public limit(): LimitContext {
		return this.getTypedRuleContext(LimitContext, 0) as LimitContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_returnBody;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReturnBody) {
	 		listener.enterReturnBody(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReturnBody) {
	 		listener.exitReturnBody(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReturnBody) {
			return visitor.visitReturnBody(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_returnItem;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReturnItem) {
	 		listener.enterReturnItem(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReturnItem) {
	 		listener.exitReturnItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReturnItem) {
			return visitor.visitReturnItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReturnItemsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public returnItem_list(): ReturnItemContext[] {
		return this.getTypedRuleContexts(ReturnItemContext) as ReturnItemContext[];
	}
	public returnItem(i: number): ReturnItemContext {
		return this.getTypedRuleContext(ReturnItemContext, i) as ReturnItemContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_returnItems;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReturnItems) {
	 		listener.enterReturnItems(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReturnItems) {
	 		listener.exitReturnItems(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReturnItems) {
			return visitor.visitReturnItems(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public ascToken(): AscTokenContext {
		return this.getTypedRuleContext(AscTokenContext, 0) as AscTokenContext;
	}
	public descToken(): DescTokenContext {
		return this.getTypedRuleContext(DescTokenContext, 0) as DescTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_orderItem;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterOrderItem) {
	 		listener.enterOrderItem(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitOrderItem) {
	 		listener.exitOrderItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitOrderItem) {
			return visitor.visitOrderItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AscTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ASC(): TerminalNode {
		return this.getToken(CypherCmdParser.ASC, 0);
	}
	public ASCENDING(): TerminalNode {
		return this.getToken(CypherCmdParser.ASCENDING, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_ascToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAscToken) {
	 		listener.enterAscToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAscToken) {
	 		listener.exitAscToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAscToken) {
			return visitor.visitAscToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DescTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DESC(): TerminalNode {
		return this.getToken(CypherCmdParser.DESC, 0);
	}
	public DESCENDING(): TerminalNode {
		return this.getToken(CypherCmdParser.DESCENDING, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_descToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDescToken) {
	 		listener.enterDescToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDescToken) {
	 		listener.exitDescToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDescToken) {
			return visitor.visitDescToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OrderByContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ORDER(): TerminalNode {
		return this.getToken(CypherCmdParser.ORDER, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(CypherCmdParser.BY, 0);
	}
	public orderItem_list(): OrderItemContext[] {
		return this.getTypedRuleContexts(OrderItemContext) as OrderItemContext[];
	}
	public orderItem(i: number): OrderItemContext {
		return this.getTypedRuleContext(OrderItemContext, i) as OrderItemContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_orderBy;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterOrderBy) {
	 		listener.enterOrderBy(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitOrderBy) {
	 		listener.exitOrderBy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitOrderBy) {
			return visitor.visitOrderBy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SkipContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SKIPROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.SKIPROWS, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_skip;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSkip) {
	 		listener.enterSkip(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSkip) {
	 		listener.exitSkip(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSkip) {
			return visitor.visitSkip(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LimitContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIMITROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.LIMITROWS, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_limit;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLimit) {
	 		listener.enterLimit(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLimit) {
	 		listener.exitLimit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLimit) {
			return visitor.visitLimit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WhereClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_whereClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhereClause) {
	 		listener.enterWhereClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhereClause) {
	 		listener.exitWhereClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhereClause) {
			return visitor.visitWhereClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WithClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public returnBody(): ReturnBodyContext {
		return this.getTypedRuleContext(ReturnBodyContext, 0) as ReturnBodyContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_withClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWithClause) {
	 		listener.enterWithClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWithClause) {
	 		listener.exitWithClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWithClause) {
			return visitor.visitWithClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(CypherCmdParser.CREATE, 0);
	}
	public patternList(): PatternListContext {
		return this.getTypedRuleContext(PatternListContext, 0) as PatternListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateClause) {
	 		listener.enterCreateClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateClause) {
	 		listener.exitCreateClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateClause) {
			return visitor.visitCreateClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public INSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.INSERT, 0);
	}
	public insertPatternList(): InsertPatternListContext {
		return this.getTypedRuleContext(InsertPatternListContext, 0) as InsertPatternListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertClause) {
	 		listener.enterInsertClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertClause) {
	 		listener.exitInsertClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertClause) {
			return visitor.visitInsertClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public setItem_list(): SetItemContext[] {
		return this.getTypedRuleContexts(SetItemContext) as SetItemContext[];
	}
	public setItem(i: number): SetItemContext {
		return this.getTypedRuleContext(SetItemContext, i) as SetItemContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_setClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetClause) {
	 		listener.enterSetClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetClause) {
	 		listener.exitSetClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetClause) {
			return visitor.visitSetClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_setItem;
	}
	public copyFrom(ctx: SetItemContext): void {
		super.copyFrom(ctx);
	}
}
export class SetPropContext extends SetItemContext {
	constructor(parser: CypherCmdParser, ctx: SetItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyExpression(): PropertyExpressionContext {
		return this.getTypedRuleContext(PropertyExpressionContext, 0) as PropertyExpressionContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetProp) {
	 		listener.enterSetProp(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetProp) {
	 		listener.exitSetProp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetProp) {
			return visitor.visitSetProp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AddPropContext extends SetItemContext {
	constructor(parser: CypherCmdParser, ctx: SetItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public PLUSEQUAL(): TerminalNode {
		return this.getToken(CypherCmdParser.PLUSEQUAL, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAddProp) {
	 		listener.enterAddProp(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAddProp) {
	 		listener.exitAddProp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAddProp) {
			return visitor.visitAddProp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetPropsContext extends SetItemContext {
	constructor(parser: CypherCmdParser, ctx: SetItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetProps) {
	 		listener.enterSetProps(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetProps) {
	 		listener.exitSetProps(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetProps) {
			return visitor.visitSetProps(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetLabelsContext extends SetItemContext {
	constructor(parser: CypherCmdParser, ctx: SetItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public nodeLabels(): NodeLabelsContext {
		return this.getTypedRuleContext(NodeLabelsContext, 0) as NodeLabelsContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetLabels) {
	 		listener.enterSetLabels(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetLabels) {
	 		listener.exitSetLabels(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetLabels) {
			return visitor.visitSetLabels(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class SetLabelsIsContext extends SetItemContext {
	constructor(parser: CypherCmdParser, ctx: SetItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public nodeLabelsIs(): NodeLabelsIsContext {
		return this.getTypedRuleContext(NodeLabelsIsContext, 0) as NodeLabelsIsContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetLabelsIs) {
	 		listener.enterSetLabelsIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetLabelsIs) {
	 		listener.exitSetLabelsIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetLabelsIs) {
			return visitor.visitSetLabelsIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemoveClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REMOVE(): TerminalNode {
		return this.getToken(CypherCmdParser.REMOVE, 0);
	}
	public removeItem_list(): RemoveItemContext[] {
		return this.getTypedRuleContexts(RemoveItemContext) as RemoveItemContext[];
	}
	public removeItem(i: number): RemoveItemContext {
		return this.getTypedRuleContext(RemoveItemContext, i) as RemoveItemContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_removeClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRemoveClause) {
	 		listener.enterRemoveClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRemoveClause) {
	 		listener.exitRemoveClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRemoveClause) {
			return visitor.visitRemoveClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemoveItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_removeItem;
	}
	public copyFrom(ctx: RemoveItemContext): void {
		super.copyFrom(ctx);
	}
}
export class RemoveLabelsIsContext extends RemoveItemContext {
	constructor(parser: CypherCmdParser, ctx: RemoveItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public nodeLabelsIs(): NodeLabelsIsContext {
		return this.getTypedRuleContext(NodeLabelsIsContext, 0) as NodeLabelsIsContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRemoveLabelsIs) {
	 		listener.enterRemoveLabelsIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRemoveLabelsIs) {
	 		listener.exitRemoveLabelsIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRemoveLabelsIs) {
			return visitor.visitRemoveLabelsIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RemoveLabelsContext extends RemoveItemContext {
	constructor(parser: CypherCmdParser, ctx: RemoveItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public nodeLabels(): NodeLabelsContext {
		return this.getTypedRuleContext(NodeLabelsContext, 0) as NodeLabelsContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRemoveLabels) {
	 		listener.enterRemoveLabels(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRemoveLabels) {
	 		listener.exitRemoveLabels(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRemoveLabels) {
			return visitor.visitRemoveLabels(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RemovePropContext extends RemoveItemContext {
	constructor(parser: CypherCmdParser, ctx: RemoveItemContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyExpression(): PropertyExpressionContext {
		return this.getTypedRuleContext(PropertyExpressionContext, 0) as PropertyExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRemoveProp) {
	 		listener.enterRemoveProp(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRemoveProp) {
	 		listener.exitRemoveProp(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRemoveProp) {
			return visitor.visitRemoveProp(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeleteClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DELETE(): TerminalNode {
		return this.getToken(CypherCmdParser.DELETE, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
	public DETACH(): TerminalNode {
		return this.getToken(CypherCmdParser.DETACH, 0);
	}
	public NODETACH(): TerminalNode {
		return this.getToken(CypherCmdParser.NODETACH, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_deleteClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDeleteClause) {
	 		listener.enterDeleteClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDeleteClause) {
	 		listener.exitDeleteClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDeleteClause) {
			return visitor.visitDeleteClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MatchClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MATCH(): TerminalNode {
		return this.getToken(CypherCmdParser.MATCH, 0);
	}
	public patternList(): PatternListContext {
		return this.getTypedRuleContext(PatternListContext, 0) as PatternListContext;
	}
	public OPTIONAL(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTIONAL, 0);
	}
	public matchMode(): MatchModeContext {
		return this.getTypedRuleContext(MatchModeContext, 0) as MatchModeContext;
	}
	public hint_list(): HintContext[] {
		return this.getTypedRuleContexts(HintContext) as HintContext[];
	}
	public hint(i: number): HintContext {
		return this.getTypedRuleContext(HintContext, i) as HintContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_matchClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMatchClause) {
	 		listener.enterMatchClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMatchClause) {
	 		listener.exitMatchClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMatchClause) {
			return visitor.visitMatchClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MatchModeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPEATABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.REPEATABLE, 0);
	}
	public ELEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENT, 0);
	}
	public ELEMENTS(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENTS, 0);
	}
	public BINDINGS(): TerminalNode {
		return this.getToken(CypherCmdParser.BINDINGS, 0);
	}
	public DIFFERENT(): TerminalNode {
		return this.getToken(CypherCmdParser.DIFFERENT, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public RELATIONSHIPS(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIPS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_matchMode;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMatchMode) {
	 		listener.enterMatchMode(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMatchMode) {
	 		listener.exitMatchMode(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMatchMode) {
			return visitor.visitMatchMode(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HintContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USING(): TerminalNode {
		return this.getToken(CypherCmdParser.USING, 0);
	}
	public JOIN(): TerminalNode {
		return this.getToken(CypherCmdParser.JOIN, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public nonEmptyNameList(): NonEmptyNameListContext {
		return this.getTypedRuleContext(NonEmptyNameListContext, 0) as NonEmptyNameListContext;
	}
	public SCAN(): TerminalNode {
		return this.getToken(CypherCmdParser.SCAN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public labelOrRelType(): LabelOrRelTypeContext {
		return this.getTypedRuleContext(LabelOrRelTypeContext, 0) as LabelOrRelTypeContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEX, 0);
	}
	public BTREE(): TerminalNode {
		return this.getToken(CypherCmdParser.BTREE, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.TEXT, 0);
	}
	public RANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.RANGE, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(CypherCmdParser.POINT, 0);
	}
	public SEEK(): TerminalNode {
		return this.getToken(CypherCmdParser.SEEK, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_hint;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterHint) {
	 		listener.enterHint(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitHint) {
	 		listener.exitHint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitHint) {
			return visitor.visitHint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MergeClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public MERGE(): TerminalNode {
		return this.getToken(CypherCmdParser.MERGE, 0);
	}
	public pattern(): PatternContext {
		return this.getTypedRuleContext(PatternContext, 0) as PatternContext;
	}
	public mergeAction_list(): MergeActionContext[] {
		return this.getTypedRuleContexts(MergeActionContext) as MergeActionContext[];
	}
	public mergeAction(i: number): MergeActionContext {
		return this.getTypedRuleContext(MergeActionContext, i) as MergeActionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_mergeClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMergeClause) {
	 		listener.enterMergeClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMergeClause) {
	 		listener.exitMergeClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMergeClause) {
			return visitor.visitMergeClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MergeActionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public setClause(): SetClauseContext {
		return this.getTypedRuleContext(SetClauseContext, 0) as SetClauseContext;
	}
	public MATCH(): TerminalNode {
		return this.getToken(CypherCmdParser.MATCH, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(CypherCmdParser.CREATE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_mergeAction;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMergeAction) {
	 		listener.enterMergeAction(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMergeAction) {
	 		listener.exitMergeAction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMergeAction) {
			return visitor.visitMergeAction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnwindClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNWIND(): TerminalNode {
		return this.getToken(CypherCmdParser.UNWIND, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_unwindClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUnwindClause) {
	 		listener.enterUnwindClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUnwindClause) {
	 		listener.exitUnwindClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUnwindClause) {
			return visitor.visitUnwindClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CallClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CALL(): TerminalNode {
		return this.getToken(CypherCmdParser.CALL, 0);
	}
	public procedureName(): ProcedureNameContext {
		return this.getTypedRuleContext(ProcedureNameContext, 0) as ProcedureNameContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public YIELD(): TerminalNode {
		return this.getToken(CypherCmdParser.YIELD, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public procedureResultItem_list(): ProcedureResultItemContext[] {
		return this.getTypedRuleContexts(ProcedureResultItemContext) as ProcedureResultItemContext[];
	}
	public procedureResultItem(i: number): ProcedureResultItemContext {
		return this.getTypedRuleContext(ProcedureResultItemContext, i) as ProcedureResultItemContext;
	}
	public procedureArgument_list(): ProcedureArgumentContext[] {
		return this.getTypedRuleContexts(ProcedureArgumentContext) as ProcedureArgumentContext[];
	}
	public procedureArgument(i: number): ProcedureArgumentContext {
		return this.getTypedRuleContext(ProcedureArgumentContext, i) as ProcedureArgumentContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_callClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCallClause) {
	 		listener.enterCallClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCallClause) {
	 		listener.exitCallClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCallClause) {
			return visitor.visitCallClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public namespace(): NamespaceContext {
		return this.getTypedRuleContext(NamespaceContext, 0) as NamespaceContext;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_procedureName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProcedureName) {
	 		listener.enterProcedureName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProcedureName) {
	 		listener.exitProcedureName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProcedureName) {
			return visitor.visitProcedureName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureArgumentContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_procedureArgument;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProcedureArgument) {
	 		listener.enterProcedureArgument(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProcedureArgument) {
	 		listener.exitProcedureArgument(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProcedureArgument) {
			return visitor.visitProcedureArgument(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureResultItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_procedureResultItem;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProcedureResultItem) {
	 		listener.enterProcedureResultItem(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProcedureResultItem) {
	 		listener.exitProcedureResultItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProcedureResultItem) {
			return visitor.visitProcedureResultItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadCSVClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOAD(): TerminalNode {
		return this.getToken(CypherCmdParser.LOAD, 0);
	}
	public CSV(): TerminalNode {
		return this.getToken(CypherCmdParser.CSV, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public HEADERS(): TerminalNode {
		return this.getToken(CypherCmdParser.HEADERS, 0);
	}
	public FIELDTERMINATOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FIELDTERMINATOR, 0);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_loadCSVClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLoadCSVClause) {
	 		listener.enterLoadCSVClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLoadCSVClause) {
	 		listener.exitLoadCSVClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLoadCSVClause) {
			return visitor.visitLoadCSVClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ForeachClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOREACH(): TerminalNode {
		return this.getToken(CypherCmdParser.FOREACH, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public BAR(): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public clause_list(): ClauseContext[] {
		return this.getTypedRuleContexts(ClauseContext) as ClauseContext[];
	}
	public clause(i: number): ClauseContext {
		return this.getTypedRuleContext(ClauseContext, i) as ClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_foreachClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterForeachClause) {
	 		listener.enterForeachClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitForeachClause) {
	 		listener.exitForeachClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitForeachClause) {
			return visitor.visitForeachClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubqueryClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CALL(): TerminalNode {
		return this.getToken(CypherCmdParser.CALL, 0);
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public regularQuery(): RegularQueryContext {
		return this.getTypedRuleContext(RegularQueryContext, 0) as RegularQueryContext;
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public subqueryInTransactionsParameters(): SubqueryInTransactionsParametersContext {
		return this.getTypedRuleContext(SubqueryInTransactionsParametersContext, 0) as SubqueryInTransactionsParametersContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_subqueryClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSubqueryClause) {
	 		listener.enterSubqueryClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSubqueryClause) {
	 		listener.exitSubqueryClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSubqueryClause) {
			return visitor.visitSubqueryClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubqueryInTransactionsParametersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public TRANSACTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTIONS, 0);
	}
	public CONCURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONCURRENT, 0);
	}
	public subqueryInTransactionsBatchParameters_list(): SubqueryInTransactionsBatchParametersContext[] {
		return this.getTypedRuleContexts(SubqueryInTransactionsBatchParametersContext) as SubqueryInTransactionsBatchParametersContext[];
	}
	public subqueryInTransactionsBatchParameters(i: number): SubqueryInTransactionsBatchParametersContext {
		return this.getTypedRuleContext(SubqueryInTransactionsBatchParametersContext, i) as SubqueryInTransactionsBatchParametersContext;
	}
	public subqueryInTransactionsErrorParameters_list(): SubqueryInTransactionsErrorParametersContext[] {
		return this.getTypedRuleContexts(SubqueryInTransactionsErrorParametersContext) as SubqueryInTransactionsErrorParametersContext[];
	}
	public subqueryInTransactionsErrorParameters(i: number): SubqueryInTransactionsErrorParametersContext {
		return this.getTypedRuleContext(SubqueryInTransactionsErrorParametersContext, i) as SubqueryInTransactionsErrorParametersContext;
	}
	public subqueryInTransactionsReportParameters_list(): SubqueryInTransactionsReportParametersContext[] {
		return this.getTypedRuleContexts(SubqueryInTransactionsReportParametersContext) as SubqueryInTransactionsReportParametersContext[];
	}
	public subqueryInTransactionsReportParameters(i: number): SubqueryInTransactionsReportParametersContext {
		return this.getTypedRuleContext(SubqueryInTransactionsReportParametersContext, i) as SubqueryInTransactionsReportParametersContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_subqueryInTransactionsParameters;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSubqueryInTransactionsParameters) {
	 		listener.enterSubqueryInTransactionsParameters(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSubqueryInTransactionsParameters) {
	 		listener.exitSubqueryInTransactionsParameters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSubqueryInTransactionsParameters) {
			return visitor.visitSubqueryInTransactionsParameters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubqueryInTransactionsBatchParametersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public OF(): TerminalNode {
		return this.getToken(CypherCmdParser.OF, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public ROW(): TerminalNode {
		return this.getToken(CypherCmdParser.ROW, 0);
	}
	public ROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.ROWS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_subqueryInTransactionsBatchParameters;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSubqueryInTransactionsBatchParameters) {
	 		listener.enterSubqueryInTransactionsBatchParameters(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSubqueryInTransactionsBatchParameters) {
	 		listener.exitSubqueryInTransactionsBatchParameters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSubqueryInTransactionsBatchParameters) {
			return visitor.visitSubqueryInTransactionsBatchParameters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubqueryInTransactionsErrorParametersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public ERROR(): TerminalNode {
		return this.getToken(CypherCmdParser.ERROR, 0);
	}
	public CONTINUE(): TerminalNode {
		return this.getToken(CypherCmdParser.CONTINUE, 0);
	}
	public BREAK(): TerminalNode {
		return this.getToken(CypherCmdParser.BREAK, 0);
	}
	public FAIL(): TerminalNode {
		return this.getToken(CypherCmdParser.FAIL, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_subqueryInTransactionsErrorParameters;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSubqueryInTransactionsErrorParameters) {
	 		listener.enterSubqueryInTransactionsErrorParameters(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSubqueryInTransactionsErrorParameters) {
	 		listener.exitSubqueryInTransactionsErrorParameters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSubqueryInTransactionsErrorParameters) {
			return visitor.visitSubqueryInTransactionsErrorParameters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SubqueryInTransactionsReportParametersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REPORT(): TerminalNode {
		return this.getToken(CypherCmdParser.REPORT, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(CypherCmdParser.STATUS, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_subqueryInTransactionsReportParameters;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSubqueryInTransactionsReportParameters) {
	 		listener.enterSubqueryInTransactionsReportParameters(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSubqueryInTransactionsReportParameters) {
	 		listener.exitSubqueryInTransactionsReportParameters(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSubqueryInTransactionsReportParameters) {
			return visitor.visitSubqueryInTransactionsReportParameters(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PatternListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public pattern_list(): PatternContext[] {
		return this.getTypedRuleContexts(PatternContext) as PatternContext[];
	}
	public pattern(i: number): PatternContext {
		return this.getTypedRuleContext(PatternContext, i) as PatternContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_patternList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPatternList) {
	 		listener.enterPatternList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPatternList) {
	 		listener.exitPatternList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPatternList) {
			return visitor.visitPatternList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertPatternListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public insertPattern_list(): InsertPatternContext[] {
		return this.getTypedRuleContexts(InsertPatternContext) as InsertPatternContext[];
	}
	public insertPattern(i: number): InsertPatternContext {
		return this.getTypedRuleContext(InsertPatternContext, i) as InsertPatternContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertPatternList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertPatternList) {
	 		listener.enterInsertPatternList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertPatternList) {
	 		listener.exitInsertPatternList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertPatternList) {
			return visitor.visitInsertPatternList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public anonymousPattern(): AnonymousPatternContext {
		return this.getTypedRuleContext(AnonymousPatternContext, 0) as AnonymousPatternContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public selector(): SelectorContext {
		return this.getTypedRuleContext(SelectorContext, 0) as SelectorContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_pattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPattern) {
	 		listener.enterPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPattern) {
	 		listener.exitPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPattern) {
			return visitor.visitPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public insertNodePattern_list(): InsertNodePatternContext[] {
		return this.getTypedRuleContexts(InsertNodePatternContext) as InsertNodePatternContext[];
	}
	public insertNodePattern(i: number): InsertNodePatternContext {
		return this.getTypedRuleContext(InsertNodePatternContext, i) as InsertNodePatternContext;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public insertRelationshipPattern_list(): InsertRelationshipPatternContext[] {
		return this.getTypedRuleContexts(InsertRelationshipPatternContext) as InsertRelationshipPatternContext[];
	}
	public insertRelationshipPattern(i: number): InsertRelationshipPatternContext {
		return this.getTypedRuleContext(InsertRelationshipPatternContext, i) as InsertRelationshipPatternContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertPattern) {
	 		listener.enterInsertPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertPattern) {
	 		listener.exitInsertPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertPattern) {
			return visitor.visitInsertPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QuantifierContext extends ParserRuleContext {
	public _from_!: Token;
	public _to!: Token;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
	}
	public UNSIGNED_DECIMAL_INTEGER(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, i);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, 0);
	}
	public PLUS(): TerminalNode {
		return this.getToken(CypherCmdParser.PLUS, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_quantifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterQuantifier) {
	 		listener.enterQuantifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitQuantifier) {
	 		listener.exitQuantifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitQuantifier) {
			return visitor.visitQuantifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AnonymousPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public shortestPathPattern(): ShortestPathPatternContext {
		return this.getTypedRuleContext(ShortestPathPatternContext, 0) as ShortestPathPatternContext;
	}
	public patternElement(): PatternElementContext {
		return this.getTypedRuleContext(PatternElementContext, 0) as PatternElementContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_anonymousPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAnonymousPattern) {
	 		listener.enterAnonymousPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAnonymousPattern) {
	 		listener.exitAnonymousPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAnonymousPattern) {
			return visitor.visitAnonymousPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShortestPathPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public patternElement(): PatternElementContext {
		return this.getTypedRuleContext(PatternElementContext, 0) as PatternElementContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public SHORTEST_PATH(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST_PATH, 0);
	}
	public ALL_SHORTEST_PATHS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL_SHORTEST_PATHS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_shortestPathPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShortestPathPattern) {
	 		listener.enterShortestPathPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShortestPathPattern) {
	 		listener.exitShortestPathPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShortestPathPattern) {
			return visitor.visitShortestPathPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PatternElementContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public nodePattern_list(): NodePatternContext[] {
		return this.getTypedRuleContexts(NodePatternContext) as NodePatternContext[];
	}
	public nodePattern(i: number): NodePatternContext {
		return this.getTypedRuleContext(NodePatternContext, i) as NodePatternContext;
	}
	public parenthesizedPath_list(): ParenthesizedPathContext[] {
		return this.getTypedRuleContexts(ParenthesizedPathContext) as ParenthesizedPathContext[];
	}
	public parenthesizedPath(i: number): ParenthesizedPathContext {
		return this.getTypedRuleContext(ParenthesizedPathContext, i) as ParenthesizedPathContext;
	}
	public relationshipPattern_list(): RelationshipPatternContext[] {
		return this.getTypedRuleContexts(RelationshipPatternContext) as RelationshipPatternContext[];
	}
	public relationshipPattern(i: number): RelationshipPatternContext {
		return this.getTypedRuleContext(RelationshipPatternContext, i) as RelationshipPatternContext;
	}
	public quantifier_list(): QuantifierContext[] {
		return this.getTypedRuleContexts(QuantifierContext) as QuantifierContext[];
	}
	public quantifier(i: number): QuantifierContext {
		return this.getTypedRuleContext(QuantifierContext, i) as QuantifierContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_patternElement;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPatternElement) {
	 		listener.enterPatternElement(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPatternElement) {
	 		listener.exitPatternElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPatternElement) {
			return visitor.visitPatternElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SelectorContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_selector;
	}
	public copyFrom(ctx: SelectorContext): void {
		super.copyFrom(ctx);
	}
}
export class AllShortestPathContext extends SelectorContext {
	constructor(parser: CypherCmdParser, ctx: SelectorContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public SHORTEST(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST, 0);
	}
	public pathToken(): PathTokenContext {
		return this.getTypedRuleContext(PathTokenContext, 0) as PathTokenContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAllShortestPath) {
	 		listener.enterAllShortestPath(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAllShortestPath) {
	 		listener.exitAllShortestPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAllShortestPath) {
			return visitor.visitAllShortestPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AnyPathContext extends SelectorContext {
	constructor(parser: CypherCmdParser, ctx: SelectorContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ANY(): TerminalNode {
		return this.getToken(CypherCmdParser.ANY, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public pathToken(): PathTokenContext {
		return this.getTypedRuleContext(PathTokenContext, 0) as PathTokenContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAnyPath) {
	 		listener.enterAnyPath(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAnyPath) {
	 		listener.exitAnyPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAnyPath) {
			return visitor.visitAnyPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShortestGroupContext extends SelectorContext {
	constructor(parser: CypherCmdParser, ctx: SelectorContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public SHORTEST(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST, 0);
	}
	public groupToken(): GroupTokenContext {
		return this.getTypedRuleContext(GroupTokenContext, 0) as GroupTokenContext;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public pathToken(): PathTokenContext {
		return this.getTypedRuleContext(PathTokenContext, 0) as PathTokenContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShortestGroup) {
	 		listener.enterShortestGroup(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShortestGroup) {
	 		listener.exitShortestGroup(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShortestGroup) {
			return visitor.visitShortestGroup(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AnyShortestPathContext extends SelectorContext {
	constructor(parser: CypherCmdParser, ctx: SelectorContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ANY(): TerminalNode {
		return this.getToken(CypherCmdParser.ANY, 0);
	}
	public SHORTEST(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST, 0);
	}
	public pathToken(): PathTokenContext {
		return this.getTypedRuleContext(PathTokenContext, 0) as PathTokenContext;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAnyShortestPath) {
	 		listener.enterAnyShortestPath(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAnyShortestPath) {
	 		listener.exitAnyShortestPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAnyShortestPath) {
			return visitor.visitAnyShortestPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AllPathContext extends SelectorContext {
	constructor(parser: CypherCmdParser, ctx: SelectorContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public pathToken(): PathTokenContext {
		return this.getTypedRuleContext(PathTokenContext, 0) as PathTokenContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAllPath) {
	 		listener.enterAllPath(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAllPath) {
	 		listener.exitAllPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAllPath) {
			return visitor.visitAllPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GroupTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GROUP(): TerminalNode {
		return this.getToken(CypherCmdParser.GROUP, 0);
	}
	public GROUPS(): TerminalNode {
		return this.getToken(CypherCmdParser.GROUPS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_groupToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGroupToken) {
	 		listener.enterGroupToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGroupToken) {
	 		listener.exitGroupToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGroupToken) {
			return visitor.visitGroupToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PathTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PATH(): TerminalNode {
		return this.getToken(CypherCmdParser.PATH, 0);
	}
	public PATHS(): TerminalNode {
		return this.getToken(CypherCmdParser.PATHS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_pathToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPathToken) {
	 		listener.enterPathToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPathToken) {
	 		listener.exitPathToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPathToken) {
			return visitor.visitPathToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PathPatternNonEmptyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public nodePattern_list(): NodePatternContext[] {
		return this.getTypedRuleContexts(NodePatternContext) as NodePatternContext[];
	}
	public nodePattern(i: number): NodePatternContext {
		return this.getTypedRuleContext(NodePatternContext, i) as NodePatternContext;
	}
	public relationshipPattern_list(): RelationshipPatternContext[] {
		return this.getTypedRuleContexts(RelationshipPatternContext) as RelationshipPatternContext[];
	}
	public relationshipPattern(i: number): RelationshipPatternContext {
		return this.getTypedRuleContext(RelationshipPatternContext, i) as RelationshipPatternContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_pathPatternNonEmpty;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPathPatternNonEmpty) {
	 		listener.enterPathPatternNonEmpty(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPathPatternNonEmpty) {
	 		listener.exitPathPatternNonEmpty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPathPatternNonEmpty) {
			return visitor.visitPathPatternNonEmpty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NodePatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public labelExpression(): LabelExpressionContext {
		return this.getTypedRuleContext(LabelExpressionContext, 0) as LabelExpressionContext;
	}
	public properties(): PropertiesContext {
		return this.getTypedRuleContext(PropertiesContext, 0) as PropertiesContext;
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nodePattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNodePattern) {
	 		listener.enterNodePattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNodePattern) {
	 		listener.exitNodePattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNodePattern) {
			return visitor.visitNodePattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertNodePatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public insertNodeLabelExpression(): InsertNodeLabelExpressionContext {
		return this.getTypedRuleContext(InsertNodeLabelExpressionContext, 0) as InsertNodeLabelExpressionContext;
	}
	public properties(): PropertiesContext {
		return this.getTypedRuleContext(PropertiesContext, 0) as PropertiesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertNodePattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertNodePattern) {
	 		listener.enterInsertNodePattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertNodePattern) {
	 		listener.exitInsertNodePattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertNodePattern) {
			return visitor.visitInsertNodePattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParenthesizedPathContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public pattern(): PatternContext {
		return this.getTypedRuleContext(PatternContext, 0) as PatternContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public quantifier(): QuantifierContext {
		return this.getTypedRuleContext(QuantifierContext, 0) as QuantifierContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_parenthesizedPath;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParenthesizedPath) {
	 		listener.enterParenthesizedPath(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParenthesizedPath) {
	 		listener.exitParenthesizedPath(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedPath) {
			return visitor.visitParenthesizedPath(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NodeLabelsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelType_list(): LabelTypeContext[] {
		return this.getTypedRuleContexts(LabelTypeContext) as LabelTypeContext[];
	}
	public labelType(i: number): LabelTypeContext {
		return this.getTypedRuleContext(LabelTypeContext, i) as LabelTypeContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nodeLabels;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNodeLabels) {
	 		listener.enterNodeLabels(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNodeLabels) {
	 		listener.exitNodeLabels(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNodeLabels) {
			return visitor.visitNodeLabels(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NodeLabelsIsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public labelType_list(): LabelTypeContext[] {
		return this.getTypedRuleContexts(LabelTypeContext) as LabelTypeContext[];
	}
	public labelType(i: number): LabelTypeContext {
		return this.getTypedRuleContext(LabelTypeContext, i) as LabelTypeContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nodeLabelsIs;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNodeLabelsIs) {
	 		listener.enterNodeLabelsIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNodeLabelsIs) {
	 		listener.exitNodeLabelsIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNodeLabelsIs) {
			return visitor.visitNodeLabelsIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelType) {
	 		listener.enterLabelType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelType) {
	 		listener.exitLabelType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelType) {
			return visitor.visitLabelType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RelTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_relType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRelType) {
	 		listener.enterRelType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRelType) {
	 		listener.exitRelType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRelType) {
			return visitor.visitRelType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelOrRelTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelOrRelType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelOrRelType) {
	 		listener.enterLabelOrRelType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelOrRelType) {
	 		listener.exitLabelOrRelType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelOrRelType) {
			return visitor.visitLabelOrRelType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertiesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public map(): MapContext {
		return this.getTypedRuleContext(MapContext, 0) as MapContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_properties;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProperties) {
	 		listener.enterProperties(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProperties) {
	 		listener.exitProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProperties) {
			return visitor.visitProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RelationshipPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public arrowLine_list(): ArrowLineContext[] {
		return this.getTypedRuleContexts(ArrowLineContext) as ArrowLineContext[];
	}
	public arrowLine(i: number): ArrowLineContext {
		return this.getTypedRuleContext(ArrowLineContext, i) as ArrowLineContext;
	}
	public leftArrow(): LeftArrowContext {
		return this.getTypedRuleContext(LeftArrowContext, 0) as LeftArrowContext;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public rightArrow(): RightArrowContext {
		return this.getTypedRuleContext(RightArrowContext, 0) as RightArrowContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public labelExpression(): LabelExpressionContext {
		return this.getTypedRuleContext(LabelExpressionContext, 0) as LabelExpressionContext;
	}
	public pathLength(): PathLengthContext {
		return this.getTypedRuleContext(PathLengthContext, 0) as PathLengthContext;
	}
	public properties(): PropertiesContext {
		return this.getTypedRuleContext(PropertiesContext, 0) as PropertiesContext;
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_relationshipPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRelationshipPattern) {
	 		listener.enterRelationshipPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRelationshipPattern) {
	 		listener.exitRelationshipPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRelationshipPattern) {
			return visitor.visitRelationshipPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertRelationshipPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public arrowLine_list(): ArrowLineContext[] {
		return this.getTypedRuleContexts(ArrowLineContext) as ArrowLineContext[];
	}
	public arrowLine(i: number): ArrowLineContext {
		return this.getTypedRuleContext(ArrowLineContext, i) as ArrowLineContext;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public insertRelationshipLabelExpression(): InsertRelationshipLabelExpressionContext {
		return this.getTypedRuleContext(InsertRelationshipLabelExpressionContext, 0) as InsertRelationshipLabelExpressionContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public leftArrow(): LeftArrowContext {
		return this.getTypedRuleContext(LeftArrowContext, 0) as LeftArrowContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public properties(): PropertiesContext {
		return this.getTypedRuleContext(PropertiesContext, 0) as PropertiesContext;
	}
	public rightArrow(): RightArrowContext {
		return this.getTypedRuleContext(RightArrowContext, 0) as RightArrowContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertRelationshipPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertRelationshipPattern) {
	 		listener.enterInsertRelationshipPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertRelationshipPattern) {
	 		listener.exitInsertRelationshipPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertRelationshipPattern) {
			return visitor.visitInsertRelationshipPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LeftArrowContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LT(): TerminalNode {
		return this.getToken(CypherCmdParser.LT, 0);
	}
	public ARROW_LEFT_HEAD(): TerminalNode {
		return this.getToken(CypherCmdParser.ARROW_LEFT_HEAD, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_leftArrow;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLeftArrow) {
	 		listener.enterLeftArrow(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLeftArrow) {
	 		listener.exitLeftArrow(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLeftArrow) {
			return visitor.visitLeftArrow(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ArrowLineContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ARROW_LINE(): TerminalNode {
		return this.getToken(CypherCmdParser.ARROW_LINE, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(CypherCmdParser.MINUS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_arrowLine;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterArrowLine) {
	 		listener.enterArrowLine(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitArrowLine) {
	 		listener.exitArrowLine(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitArrowLine) {
			return visitor.visitArrowLine(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RightArrowContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GT(): TerminalNode {
		return this.getToken(CypherCmdParser.GT, 0);
	}
	public ARROW_RIGHT_HEAD(): TerminalNode {
		return this.getToken(CypherCmdParser.ARROW_RIGHT_HEAD, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_rightArrow;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRightArrow) {
	 		listener.enterRightArrow(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRightArrow) {
	 		listener.exitRightArrow(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRightArrow) {
			return visitor.visitRightArrow(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PathLengthContext extends ParserRuleContext {
	public _from_!: Token;
	public _to!: Token;
	public _single!: Token;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public DOTDOT(): TerminalNode {
		return this.getToken(CypherCmdParser.DOTDOT, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER);
	}
	public UNSIGNED_DECIMAL_INTEGER(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_pathLength;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPathLength) {
	 		listener.enterPathLength(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPathLength) {
	 		listener.exitPathLength(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPathLength) {
			return visitor.visitPathLength(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public labelExpression4(): LabelExpression4Context {
		return this.getTypedRuleContext(LabelExpression4Context, 0) as LabelExpression4Context;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public labelExpression4Is(): LabelExpression4IsContext {
		return this.getTypedRuleContext(LabelExpression4IsContext, 0) as LabelExpression4IsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression) {
	 		listener.enterLabelExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression) {
	 		listener.exitLabelExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression) {
			return visitor.visitLabelExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression4Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression3_list(): LabelExpression3Context[] {
		return this.getTypedRuleContexts(LabelExpression3Context) as LabelExpression3Context[];
	}
	public labelExpression3(i: number): LabelExpression3Context {
		return this.getTypedRuleContext(LabelExpression3Context, i) as LabelExpression3Context;
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression4;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression4) {
	 		listener.enterLabelExpression4(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression4) {
	 		listener.exitLabelExpression4(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression4) {
			return visitor.visitLabelExpression4(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression4IsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression3Is_list(): LabelExpression3IsContext[] {
		return this.getTypedRuleContexts(LabelExpression3IsContext) as LabelExpression3IsContext[];
	}
	public labelExpression3Is(i: number): LabelExpression3IsContext {
		return this.getTypedRuleContext(LabelExpression3IsContext, i) as LabelExpression3IsContext;
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression4Is;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression4Is) {
	 		listener.enterLabelExpression4Is(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression4Is) {
	 		listener.exitLabelExpression4Is(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression4Is) {
			return visitor.visitLabelExpression4Is(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression3Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression2_list(): LabelExpression2Context[] {
		return this.getTypedRuleContexts(LabelExpression2Context) as LabelExpression2Context[];
	}
	public labelExpression2(i: number): LabelExpression2Context {
		return this.getTypedRuleContext(LabelExpression2Context, i) as LabelExpression2Context;
	}
	public AMPERSAND_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.AMPERSAND);
	}
	public AMPERSAND(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.AMPERSAND, i);
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression3;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression3) {
	 		listener.enterLabelExpression3(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression3) {
	 		listener.exitLabelExpression3(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression3) {
			return visitor.visitLabelExpression3(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression3IsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression2Is_list(): LabelExpression2IsContext[] {
		return this.getTypedRuleContexts(LabelExpression2IsContext) as LabelExpression2IsContext[];
	}
	public labelExpression2Is(i: number): LabelExpression2IsContext {
		return this.getTypedRuleContext(LabelExpression2IsContext, i) as LabelExpression2IsContext;
	}
	public AMPERSAND_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.AMPERSAND);
	}
	public AMPERSAND(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.AMPERSAND, i);
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression3Is;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression3Is) {
	 		listener.enterLabelExpression3Is(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression3Is) {
	 		listener.exitLabelExpression3Is(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression3Is) {
			return visitor.visitLabelExpression3Is(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression2Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression1(): LabelExpression1Context {
		return this.getTypedRuleContext(LabelExpression1Context, 0) as LabelExpression1Context;
	}
	public EXCLAMATION_MARK_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.EXCLAMATION_MARK);
	}
	public EXCLAMATION_MARK(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.EXCLAMATION_MARK, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression2;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression2) {
	 		listener.enterLabelExpression2(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression2) {
	 		listener.exitLabelExpression2(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression2) {
			return visitor.visitLabelExpression2(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression2IsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelExpression1Is(): LabelExpression1IsContext {
		return this.getTypedRuleContext(LabelExpression1IsContext, 0) as LabelExpression1IsContext;
	}
	public EXCLAMATION_MARK_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.EXCLAMATION_MARK);
	}
	public EXCLAMATION_MARK(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.EXCLAMATION_MARK, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression2Is;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelExpression2Is) {
	 		listener.enterLabelExpression2Is(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelExpression2Is) {
	 		listener.exitLabelExpression2Is(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelExpression2Is) {
			return visitor.visitLabelExpression2Is(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression1Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression1;
	}
	public copyFrom(ctx: LabelExpression1Context): void {
		super.copyFrom(ctx);
	}
}
export class AnyLabelContext extends LabelExpression1Context {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PERCENT(): TerminalNode {
		return this.getToken(CypherCmdParser.PERCENT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAnyLabel) {
	 		listener.enterAnyLabel(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAnyLabel) {
	 		listener.exitAnyLabel(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAnyLabel) {
			return visitor.visitAnyLabel(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LabelNameContext extends LabelExpression1Context {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelName) {
	 		listener.enterLabelName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelName) {
	 		listener.exitLabelName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelName) {
			return visitor.visitLabelName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ParenthesizedLabelExpressionContext extends LabelExpression1Context {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public labelExpression4(): LabelExpression4Context {
		return this.getTypedRuleContext(LabelExpression4Context, 0) as LabelExpression4Context;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParenthesizedLabelExpression) {
	 		listener.enterParenthesizedLabelExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParenthesizedLabelExpression) {
	 		listener.exitParenthesizedLabelExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedLabelExpression) {
			return visitor.visitParenthesizedLabelExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelExpression1IsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelExpression1Is;
	}
	public copyFrom(ctx: LabelExpression1IsContext): void {
		super.copyFrom(ctx);
	}
}
export class ParenthesizedLabelExpressionIsContext extends LabelExpression1IsContext {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1IsContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public labelExpression4Is(): LabelExpression4IsContext {
		return this.getTypedRuleContext(LabelExpression4IsContext, 0) as LabelExpression4IsContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParenthesizedLabelExpressionIs) {
	 		listener.enterParenthesizedLabelExpressionIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParenthesizedLabelExpressionIs) {
	 		listener.exitParenthesizedLabelExpressionIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedLabelExpressionIs) {
			return visitor.visitParenthesizedLabelExpressionIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class AnyLabelIsContext extends LabelExpression1IsContext {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1IsContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public PERCENT(): TerminalNode {
		return this.getToken(CypherCmdParser.PERCENT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAnyLabelIs) {
	 		listener.enterAnyLabelIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAnyLabelIs) {
	 		listener.exitAnyLabelIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAnyLabelIs) {
			return visitor.visitAnyLabelIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LabelNameIsContext extends LabelExpression1IsContext {
	constructor(parser: CypherCmdParser, ctx: LabelExpression1IsContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public symbolicLabelNameString(): SymbolicLabelNameStringContext {
		return this.getTypedRuleContext(SymbolicLabelNameStringContext, 0) as SymbolicLabelNameStringContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelNameIs) {
	 		listener.enterLabelNameIs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelNameIs) {
	 		listener.exitLabelNameIs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelNameIs) {
			return visitor.visitLabelNameIs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertNodeLabelExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public AMPERSAND_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.AMPERSAND);
	}
	public AMPERSAND(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.AMPERSAND, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertNodeLabelExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertNodeLabelExpression) {
	 		listener.enterInsertNodeLabelExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertNodeLabelExpression) {
	 		listener.exitInsertNodeLabelExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertNodeLabelExpression) {
			return visitor.visitInsertNodeLabelExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class InsertRelationshipLabelExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_insertRelationshipLabelExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterInsertRelationshipLabelExpression) {
	 		listener.enterInsertRelationshipLabelExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitInsertRelationshipLabelExpression) {
	 		listener.exitInsertRelationshipLabelExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitInsertRelationshipLabelExpression) {
			return visitor.visitInsertRelationshipLabelExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression11_list(): Expression11Context[] {
		return this.getTypedRuleContexts(Expression11Context) as Expression11Context[];
	}
	public expression11(i: number): Expression11Context {
		return this.getTypedRuleContext(Expression11Context, i) as Expression11Context;
	}
	public OR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.OR);
	}
	public OR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.OR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression) {
	 		listener.enterExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression) {
	 		listener.exitExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression) {
			return visitor.visitExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression11Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression10_list(): Expression10Context[] {
		return this.getTypedRuleContexts(Expression10Context) as Expression10Context[];
	}
	public expression10(i: number): Expression10Context {
		return this.getTypedRuleContext(Expression10Context, i) as Expression10Context;
	}
	public XOR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.XOR);
	}
	public XOR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.XOR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression11;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression11) {
	 		listener.enterExpression11(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression11) {
	 		listener.exitExpression11(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression11) {
			return visitor.visitExpression11(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression10Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression9_list(): Expression9Context[] {
		return this.getTypedRuleContexts(Expression9Context) as Expression9Context[];
	}
	public expression9(i: number): Expression9Context {
		return this.getTypedRuleContext(Expression9Context, i) as Expression9Context;
	}
	public AND_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.AND);
	}
	public AND(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.AND, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression10;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression10) {
	 		listener.enterExpression10(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression10) {
	 		listener.exitExpression10(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression10) {
			return visitor.visitExpression10(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression9Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression8(): Expression8Context {
		return this.getTypedRuleContext(Expression8Context, 0) as Expression8Context;
	}
	public NOT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.NOT);
	}
	public NOT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression9;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression9) {
	 		listener.enterExpression9(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression9) {
	 		listener.exitExpression9(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression9) {
			return visitor.visitExpression9(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression8Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression7_list(): Expression7Context[] {
		return this.getTypedRuleContexts(Expression7Context) as Expression7Context[];
	}
	public expression7(i: number): Expression7Context {
		return this.getTypedRuleContext(Expression7Context, i) as Expression7Context;
	}
	public EQ_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.EQ);
	}
	public EQ(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, i);
	}
	public INVALID_NEQ_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.INVALID_NEQ);
	}
	public INVALID_NEQ(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.INVALID_NEQ, i);
	}
	public NEQ_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.NEQ);
	}
	public NEQ(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.NEQ, i);
	}
	public LE_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.LE);
	}
	public LE(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.LE, i);
	}
	public GE_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.GE);
	}
	public GE(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.GE, i);
	}
	public LT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.LT);
	}
	public LT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.LT, i);
	}
	public GT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.GT);
	}
	public GT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.GT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression8;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression8) {
	 		listener.enterExpression8(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression8) {
	 		listener.exitExpression8(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression8) {
			return visitor.visitExpression8(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression7Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression6(): Expression6Context {
		return this.getTypedRuleContext(Expression6Context, 0) as Expression6Context;
	}
	public comparisonExpression6(): ComparisonExpression6Context {
		return this.getTypedRuleContext(ComparisonExpression6Context, 0) as ComparisonExpression6Context;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression7;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression7) {
	 		listener.enterExpression7(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression7) {
	 		listener.exitExpression7(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression7) {
			return visitor.visitExpression7(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComparisonExpression6Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_comparisonExpression6;
	}
	public copyFrom(ctx: ComparisonExpression6Context): void {
		super.copyFrom(ctx);
	}
}
export class TypeComparisonContext extends ComparisonExpression6Context {
	constructor(parser: CypherCmdParser, ctx: ComparisonExpression6Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public type_(): TypeContext {
		return this.getTypedRuleContext(TypeContext, 0) as TypeContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public COLONCOLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLONCOLON, 0);
	}
	public TYPED(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPED, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTypeComparison) {
	 		listener.enterTypeComparison(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTypeComparison) {
	 		listener.exitTypeComparison(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTypeComparison) {
			return visitor.visitTypeComparison(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StringAndListComparisonContext extends ComparisonExpression6Context {
	constructor(parser: CypherCmdParser, ctx: ComparisonExpression6Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression6(): Expression6Context {
		return this.getTypedRuleContext(Expression6Context, 0) as Expression6Context;
	}
	public REGEQ(): TerminalNode {
		return this.getToken(CypherCmdParser.REGEQ, 0);
	}
	public STARTS(): TerminalNode {
		return this.getToken(CypherCmdParser.STARTS, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public ENDS(): TerminalNode {
		return this.getToken(CypherCmdParser.ENDS, 0);
	}
	public CONTAINS(): TerminalNode {
		return this.getToken(CypherCmdParser.CONTAINS, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringAndListComparison) {
	 		listener.enterStringAndListComparison(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringAndListComparison) {
	 		listener.exitStringAndListComparison(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringAndListComparison) {
			return visitor.visitStringAndListComparison(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NormalFormComparisonContext extends ComparisonExpression6Context {
	constructor(parser: CypherCmdParser, ctx: ComparisonExpression6Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public NORMALIZED(): TerminalNode {
		return this.getToken(CypherCmdParser.NORMALIZED, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public normalForm(): NormalFormContext {
		return this.getTypedRuleContext(NormalFormContext, 0) as NormalFormContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNormalFormComparison) {
	 		listener.enterNormalFormComparison(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNormalFormComparison) {
	 		listener.exitNormalFormComparison(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNormalFormComparison) {
			return visitor.visitNormalFormComparison(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class NullComparisonContext extends ComparisonExpression6Context {
	constructor(parser: CypherCmdParser, ctx: ComparisonExpression6Context) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNullComparison) {
	 		listener.enterNullComparison(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNullComparison) {
	 		listener.exitNullComparison(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNullComparison) {
			return visitor.visitNullComparison(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NormalFormContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NFC(): TerminalNode {
		return this.getToken(CypherCmdParser.NFC, 0);
	}
	public NFD(): TerminalNode {
		return this.getToken(CypherCmdParser.NFD, 0);
	}
	public NFKC(): TerminalNode {
		return this.getToken(CypherCmdParser.NFKC, 0);
	}
	public NFKD(): TerminalNode {
		return this.getToken(CypherCmdParser.NFKD, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_normalForm;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNormalForm) {
	 		listener.enterNormalForm(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNormalForm) {
	 		listener.exitNormalForm(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNormalForm) {
			return visitor.visitNormalForm(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression6Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression5_list(): Expression5Context[] {
		return this.getTypedRuleContexts(Expression5Context) as Expression5Context[];
	}
	public expression5(i: number): Expression5Context {
		return this.getTypedRuleContext(Expression5Context, i) as Expression5Context;
	}
	public PLUS_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.PLUS);
	}
	public PLUS(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.PLUS, i);
	}
	public MINUS_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.MINUS);
	}
	public MINUS(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.MINUS, i);
	}
	public DOUBLEBAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.DOUBLEBAR);
	}
	public DOUBLEBAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.DOUBLEBAR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression6;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression6) {
	 		listener.enterExpression6(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression6) {
	 		listener.exitExpression6(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression6) {
			return visitor.visitExpression6(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression5Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression4_list(): Expression4Context[] {
		return this.getTypedRuleContexts(Expression4Context) as Expression4Context[];
	}
	public expression4(i: number): Expression4Context {
		return this.getTypedRuleContext(Expression4Context, i) as Expression4Context;
	}
	public TIMES_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.TIMES);
	}
	public TIMES(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, i);
	}
	public DIVIDE_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.DIVIDE);
	}
	public DIVIDE(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.DIVIDE, i);
	}
	public PERCENT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.PERCENT);
	}
	public PERCENT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.PERCENT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression5;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression5) {
	 		listener.enterExpression5(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression5) {
	 		listener.exitExpression5(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression5) {
			return visitor.visitExpression5(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression4Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression3_list(): Expression3Context[] {
		return this.getTypedRuleContexts(Expression3Context) as Expression3Context[];
	}
	public expression3(i: number): Expression3Context {
		return this.getTypedRuleContext(Expression3Context, i) as Expression3Context;
	}
	public POW_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.POW);
	}
	public POW(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.POW, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression4;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression4) {
	 		listener.enterExpression4(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression4) {
	 		listener.exitExpression4(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression4) {
			return visitor.visitExpression4(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression3Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression2(): Expression2Context {
		return this.getTypedRuleContext(Expression2Context, 0) as Expression2Context;
	}
	public PLUS(): TerminalNode {
		return this.getToken(CypherCmdParser.PLUS, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(CypherCmdParser.MINUS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression3;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression3) {
	 		listener.enterExpression3(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression3) {
	 		listener.exitExpression3(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression3) {
			return visitor.visitExpression3(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression2Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression1(): Expression1Context {
		return this.getTypedRuleContext(Expression1Context, 0) as Expression1Context;
	}
	public postFix_list(): PostFixContext[] {
		return this.getTypedRuleContexts(PostFixContext) as PostFixContext[];
	}
	public postFix(i: number): PostFixContext {
		return this.getTypedRuleContext(PostFixContext, i) as PostFixContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression2;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression2) {
	 		listener.enterExpression2(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression2) {
	 		listener.exitExpression2(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression2) {
			return visitor.visitExpression2(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PostFixContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_postFix;
	}
	public copyFrom(ctx: PostFixContext): void {
		super.copyFrom(ctx);
	}
}
export class IndexPostfixContext extends PostFixContext {
	constructor(parser: CypherCmdParser, ctx: PostFixContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterIndexPostfix) {
	 		listener.enterIndexPostfix(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitIndexPostfix) {
	 		listener.exitIndexPostfix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitIndexPostfix) {
			return visitor.visitIndexPostfix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class PropertyPostfixContext extends PostFixContext {
	constructor(parser: CypherCmdParser, ctx: PostFixContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public property(): PropertyContext {
		return this.getTypedRuleContext(PropertyContext, 0) as PropertyContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPropertyPostfix) {
	 		listener.enterPropertyPostfix(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPropertyPostfix) {
	 		listener.exitPropertyPostfix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPropertyPostfix) {
			return visitor.visitPropertyPostfix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class LabelPostfixContext extends PostFixContext {
	constructor(parser: CypherCmdParser, ctx: PostFixContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public labelExpression(): LabelExpressionContext {
		return this.getTypedRuleContext(LabelExpressionContext, 0) as LabelExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelPostfix) {
	 		listener.enterLabelPostfix(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelPostfix) {
	 		listener.exitLabelPostfix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelPostfix) {
			return visitor.visitLabelPostfix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class RangePostfixContext extends PostFixContext {
	public _fromExp!: ExpressionContext;
	public _toExp!: ExpressionContext;
	constructor(parser: CypherCmdParser, ctx: PostFixContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public DOTDOT(): TerminalNode {
		return this.getToken(CypherCmdParser.DOTDOT, 0);
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRangePostfix) {
	 		listener.enterRangePostfix(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRangePostfix) {
	 		listener.exitRangePostfix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRangePostfix) {
			return visitor.visitRangePostfix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DOT(): TerminalNode {
		return this.getToken(CypherCmdParser.DOT, 0);
	}
	public propertyKeyName(): PropertyKeyNameContext {
		return this.getTypedRuleContext(PropertyKeyNameContext, 0) as PropertyKeyNameContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_property;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProperty) {
	 		listener.enterProperty(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProperty) {
	 		listener.exitProperty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProperty) {
			return visitor.visitProperty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertyExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression1(): Expression1Context {
		return this.getTypedRuleContext(Expression1Context, 0) as Expression1Context;
	}
	public property_list(): PropertyContext[] {
		return this.getTypedRuleContexts(PropertyContext) as PropertyContext[];
	}
	public property(i: number): PropertyContext {
		return this.getTypedRuleContext(PropertyContext, i) as PropertyContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_propertyExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPropertyExpression) {
	 		listener.enterPropertyExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPropertyExpression) {
	 		listener.exitPropertyExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPropertyExpression) {
			return visitor.visitPropertyExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class Expression1Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public literal(): LiteralContext {
		return this.getTypedRuleContext(LiteralContext, 0) as LiteralContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
	public caseExpression(): CaseExpressionContext {
		return this.getTypedRuleContext(CaseExpressionContext, 0) as CaseExpressionContext;
	}
	public extendedCaseExpression(): ExtendedCaseExpressionContext {
		return this.getTypedRuleContext(ExtendedCaseExpressionContext, 0) as ExtendedCaseExpressionContext;
	}
	public countStar(): CountStarContext {
		return this.getTypedRuleContext(CountStarContext, 0) as CountStarContext;
	}
	public existsExpression(): ExistsExpressionContext {
		return this.getTypedRuleContext(ExistsExpressionContext, 0) as ExistsExpressionContext;
	}
	public countExpression(): CountExpressionContext {
		return this.getTypedRuleContext(CountExpressionContext, 0) as CountExpressionContext;
	}
	public collectExpression(): CollectExpressionContext {
		return this.getTypedRuleContext(CollectExpressionContext, 0) as CollectExpressionContext;
	}
	public mapProjection(): MapProjectionContext {
		return this.getTypedRuleContext(MapProjectionContext, 0) as MapProjectionContext;
	}
	public listComprehension(): ListComprehensionContext {
		return this.getTypedRuleContext(ListComprehensionContext, 0) as ListComprehensionContext;
	}
	public listLiteral(): ListLiteralContext {
		return this.getTypedRuleContext(ListLiteralContext, 0) as ListLiteralContext;
	}
	public patternComprehension(): PatternComprehensionContext {
		return this.getTypedRuleContext(PatternComprehensionContext, 0) as PatternComprehensionContext;
	}
	public reduceExpression(): ReduceExpressionContext {
		return this.getTypedRuleContext(ReduceExpressionContext, 0) as ReduceExpressionContext;
	}
	public listItemsPredicate(): ListItemsPredicateContext {
		return this.getTypedRuleContext(ListItemsPredicateContext, 0) as ListItemsPredicateContext;
	}
	public normalizeFunction(): NormalizeFunctionContext {
		return this.getTypedRuleContext(NormalizeFunctionContext, 0) as NormalizeFunctionContext;
	}
	public trimFunction(): TrimFunctionContext {
		return this.getTypedRuleContext(TrimFunctionContext, 0) as TrimFunctionContext;
	}
	public patternExpression(): PatternExpressionContext {
		return this.getTypedRuleContext(PatternExpressionContext, 0) as PatternExpressionContext;
	}
	public shortestPathExpression(): ShortestPathExpressionContext {
		return this.getTypedRuleContext(ShortestPathExpressionContext, 0) as ShortestPathExpressionContext;
	}
	public parenthesizedExpression(): ParenthesizedExpressionContext {
		return this.getTypedRuleContext(ParenthesizedExpressionContext, 0) as ParenthesizedExpressionContext;
	}
	public functionInvocation(): FunctionInvocationContext {
		return this.getTypedRuleContext(FunctionInvocationContext, 0) as FunctionInvocationContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_expression1;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExpression1) {
	 		listener.enterExpression1(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExpression1) {
	 		listener.exitExpression1(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExpression1) {
			return visitor.visitExpression1(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LiteralContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_literal;
	}
	public copyFrom(ctx: LiteralContext): void {
		super.copyFrom(ctx);
	}
}
export class NummericLiteralContext extends LiteralContext {
	constructor(parser: CypherCmdParser, ctx: LiteralContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public numberLiteral(): NumberLiteralContext {
		return this.getTypedRuleContext(NumberLiteralContext, 0) as NumberLiteralContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNummericLiteral) {
	 		listener.enterNummericLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNummericLiteral) {
	 		listener.exitNummericLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNummericLiteral) {
			return visitor.visitNummericLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class BooleanLiteralContext extends LiteralContext {
	constructor(parser: CypherCmdParser, ctx: LiteralContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public TRUE(): TerminalNode {
		return this.getToken(CypherCmdParser.TRUE, 0);
	}
	public FALSE(): TerminalNode {
		return this.getToken(CypherCmdParser.FALSE, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterBooleanLiteral) {
	 		listener.enterBooleanLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitBooleanLiteral) {
	 		listener.exitBooleanLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitBooleanLiteral) {
			return visitor.visitBooleanLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class KeywordLiteralContext extends LiteralContext {
	constructor(parser: CypherCmdParser, ctx: LiteralContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public INF(): TerminalNode {
		return this.getToken(CypherCmdParser.INF, 0);
	}
	public INFINITY(): TerminalNode {
		return this.getToken(CypherCmdParser.INFINITY, 0);
	}
	public NAN(): TerminalNode {
		return this.getToken(CypherCmdParser.NAN, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterKeywordLiteral) {
	 		listener.enterKeywordLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitKeywordLiteral) {
	 		listener.exitKeywordLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitKeywordLiteral) {
			return visitor.visitKeywordLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class OtherLiteralContext extends LiteralContext {
	constructor(parser: CypherCmdParser, ctx: LiteralContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public map(): MapContext {
		return this.getTypedRuleContext(MapContext, 0) as MapContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterOtherLiteral) {
	 		listener.enterOtherLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitOtherLiteral) {
	 		listener.exitOtherLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitOtherLiteral) {
			return visitor.visitOtherLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class StringsLiteralContext extends LiteralContext {
	constructor(parser: CypherCmdParser, ctx: LiteralContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringsLiteral) {
	 		listener.enterStringsLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringsLiteral) {
	 		listener.exitStringsLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringsLiteral) {
			return visitor.visitStringsLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CASE(): TerminalNode {
		return this.getToken(CypherCmdParser.CASE, 0);
	}
	public END(): TerminalNode {
		return this.getToken(CypherCmdParser.END, 0);
	}
	public caseAlternative_list(): CaseAlternativeContext[] {
		return this.getTypedRuleContexts(CaseAlternativeContext) as CaseAlternativeContext[];
	}
	public caseAlternative(i: number): CaseAlternativeContext {
		return this.getTypedRuleContext(CaseAlternativeContext, i) as CaseAlternativeContext;
	}
	public ELSE(): TerminalNode {
		return this.getToken(CypherCmdParser.ELSE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_caseExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCaseExpression) {
	 		listener.enterCaseExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCaseExpression) {
	 		listener.exitCaseExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCaseExpression) {
			return visitor.visitCaseExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CaseAlternativeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHEN(): TerminalNode {
		return this.getToken(CypherCmdParser.WHEN, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public THEN(): TerminalNode {
		return this.getToken(CypherCmdParser.THEN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_caseAlternative;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCaseAlternative) {
	 		listener.enterCaseAlternative(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCaseAlternative) {
	 		listener.exitCaseAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCaseAlternative) {
			return visitor.visitCaseAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExtendedCaseExpressionContext extends ParserRuleContext {
	public _elseExp!: ExpressionContext;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CASE(): TerminalNode {
		return this.getToken(CypherCmdParser.CASE, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public END(): TerminalNode {
		return this.getToken(CypherCmdParser.END, 0);
	}
	public extendedCaseAlternative_list(): ExtendedCaseAlternativeContext[] {
		return this.getTypedRuleContexts(ExtendedCaseAlternativeContext) as ExtendedCaseAlternativeContext[];
	}
	public extendedCaseAlternative(i: number): ExtendedCaseAlternativeContext {
		return this.getTypedRuleContext(ExtendedCaseAlternativeContext, i) as ExtendedCaseAlternativeContext;
	}
	public ELSE(): TerminalNode {
		return this.getToken(CypherCmdParser.ELSE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_extendedCaseExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExtendedCaseExpression) {
	 		listener.enterExtendedCaseExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExtendedCaseExpression) {
	 		listener.exitExtendedCaseExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExtendedCaseExpression) {
			return visitor.visitExtendedCaseExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExtendedCaseAlternativeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WHEN(): TerminalNode {
		return this.getToken(CypherCmdParser.WHEN, 0);
	}
	public extendedWhen_list(): ExtendedWhenContext[] {
		return this.getTypedRuleContexts(ExtendedWhenContext) as ExtendedWhenContext[];
	}
	public extendedWhen(i: number): ExtendedWhenContext {
		return this.getTypedRuleContext(ExtendedWhenContext, i) as ExtendedWhenContext;
	}
	public THEN(): TerminalNode {
		return this.getToken(CypherCmdParser.THEN, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_extendedCaseAlternative;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExtendedCaseAlternative) {
	 		listener.enterExtendedCaseAlternative(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExtendedCaseAlternative) {
	 		listener.exitExtendedCaseAlternative(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExtendedCaseAlternative) {
			return visitor.visitExtendedCaseAlternative(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExtendedWhenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_extendedWhen;
	}
	public copyFrom(ctx: ExtendedWhenContext): void {
		super.copyFrom(ctx);
	}
}
export class WhenStringOrListContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression6(): Expression6Context {
		return this.getTypedRuleContext(Expression6Context, 0) as Expression6Context;
	}
	public REGEQ(): TerminalNode {
		return this.getToken(CypherCmdParser.REGEQ, 0);
	}
	public STARTS(): TerminalNode {
		return this.getToken(CypherCmdParser.STARTS, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public ENDS(): TerminalNode {
		return this.getToken(CypherCmdParser.ENDS, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenStringOrList) {
	 		listener.enterWhenStringOrList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenStringOrList) {
	 		listener.exitWhenStringOrList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenStringOrList) {
			return visitor.visitWhenStringOrList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WhenTypeContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public type_(): TypeContext {
		return this.getTypedRuleContext(TypeContext, 0) as TypeContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public TYPED(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPED, 0);
	}
	public COLONCOLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLONCOLON, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenType) {
	 		listener.enterWhenType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenType) {
	 		listener.exitWhenType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenType) {
			return visitor.visitWhenType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WhenFormContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public NORMALIZED(): TerminalNode {
		return this.getToken(CypherCmdParser.NORMALIZED, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public normalForm(): NormalFormContext {
		return this.getTypedRuleContext(NormalFormContext, 0) as NormalFormContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenForm) {
	 		listener.enterWhenForm(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenForm) {
	 		listener.exitWhenForm(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenForm) {
			return visitor.visitWhenForm(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WhenNullContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenNull) {
	 		listener.enterWhenNull(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenNull) {
	 		listener.exitWhenNull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenNull) {
			return visitor.visitWhenNull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WhenEqualsContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenEquals) {
	 		listener.enterWhenEquals(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenEquals) {
	 		listener.exitWhenEquals(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenEquals) {
			return visitor.visitWhenEquals(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class WhenComparatorContext extends ExtendedWhenContext {
	constructor(parser: CypherCmdParser, ctx: ExtendedWhenContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public expression7(): Expression7Context {
		return this.getTypedRuleContext(Expression7Context, 0) as Expression7Context;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public NEQ(): TerminalNode {
		return this.getToken(CypherCmdParser.NEQ, 0);
	}
	public INVALID_NEQ(): TerminalNode {
		return this.getToken(CypherCmdParser.INVALID_NEQ, 0);
	}
	public LE(): TerminalNode {
		return this.getToken(CypherCmdParser.LE, 0);
	}
	public GE(): TerminalNode {
		return this.getToken(CypherCmdParser.GE, 0);
	}
	public LT(): TerminalNode {
		return this.getToken(CypherCmdParser.LT, 0);
	}
	public GT(): TerminalNode {
		return this.getToken(CypherCmdParser.GT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWhenComparator) {
	 		listener.enterWhenComparator(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWhenComparator) {
	 		listener.exitWhenComparator(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWhenComparator) {
			return visitor.visitWhenComparator(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListComprehensionContext extends ParserRuleContext {
	public _whereExp!: ExpressionContext;
	public _barExp!: ExpressionContext;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public BAR(): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, 0);
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_listComprehension;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterListComprehension) {
	 		listener.enterListComprehension(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitListComprehension) {
	 		listener.exitListComprehension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitListComprehension) {
			return visitor.visitListComprehension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PatternComprehensionContext extends ParserRuleContext {
	public _whereExp!: ExpressionContext;
	public _barExp!: ExpressionContext;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public pathPatternNonEmpty(): PathPatternNonEmptyContext {
		return this.getTypedRuleContext(PathPatternNonEmptyContext, 0) as PathPatternNonEmptyContext;
	}
	public BAR(): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, 0);
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_patternComprehension;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPatternComprehension) {
	 		listener.enterPatternComprehension(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPatternComprehension) {
	 		listener.exitPatternComprehension(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPatternComprehension) {
			return visitor.visitPatternComprehension(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReduceExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REDUCE(): TerminalNode {
		return this.getToken(CypherCmdParser.REDUCE, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable_list(): VariableContext[] {
		return this.getTypedRuleContexts(VariableContext) as VariableContext[];
	}
	public variable(i: number): VariableContext {
		return this.getTypedRuleContext(VariableContext, i) as VariableContext;
	}
	public EQ(): TerminalNode {
		return this.getToken(CypherCmdParser.EQ, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public BAR(): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_reduceExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReduceExpression) {
	 		listener.enterReduceExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReduceExpression) {
	 		listener.exitReduceExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReduceExpression) {
			return visitor.visitReduceExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListItemsPredicateContext extends ParserRuleContext {
	public _inExp!: ExpressionContext;
	public _whereExp!: ExpressionContext;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public ANY(): TerminalNode {
		return this.getToken(CypherCmdParser.ANY, 0);
	}
	public NONE(): TerminalNode {
		return this.getToken(CypherCmdParser.NONE, 0);
	}
	public SINGLE(): TerminalNode {
		return this.getToken(CypherCmdParser.SINGLE, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_listItemsPredicate;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterListItemsPredicate) {
	 		listener.enterListItemsPredicate(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitListItemsPredicate) {
	 		listener.exitListItemsPredicate(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitListItemsPredicate) {
			return visitor.visitListItemsPredicate(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NormalizeFunctionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NORMALIZE(): TerminalNode {
		return this.getToken(CypherCmdParser.NORMALIZE, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public COMMA(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, 0);
	}
	public normalForm(): NormalFormContext {
		return this.getTypedRuleContext(NormalFormContext, 0) as NormalFormContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_normalizeFunction;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNormalizeFunction) {
	 		listener.enterNormalizeFunction(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNormalizeFunction) {
	 		listener.exitNormalizeFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNormalizeFunction) {
			return visitor.visitNormalizeFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TrimFunctionContext extends ParserRuleContext {
	public _trimCharacterString!: ExpressionContext;
	public _trimSource!: ExpressionContext;
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TRIM(): TerminalNode {
		return this.getToken(CypherCmdParser.TRIM, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public BOTH(): TerminalNode {
		return this.getToken(CypherCmdParser.BOTH, 0);
	}
	public LEADING(): TerminalNode {
		return this.getToken(CypherCmdParser.LEADING, 0);
	}
	public TRAILING(): TerminalNode {
		return this.getToken(CypherCmdParser.TRAILING, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_trimFunction;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTrimFunction) {
	 		listener.enterTrimFunction(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTrimFunction) {
	 		listener.exitTrimFunction(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTrimFunction) {
			return visitor.visitTrimFunction(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PatternExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public pathPatternNonEmpty(): PathPatternNonEmptyContext {
		return this.getTypedRuleContext(PathPatternNonEmptyContext, 0) as PathPatternNonEmptyContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_patternExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPatternExpression) {
	 		listener.enterPatternExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPatternExpression) {
	 		listener.exitPatternExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPatternExpression) {
			return visitor.visitPatternExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShortestPathExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public shortestPathPattern(): ShortestPathPatternContext {
		return this.getTypedRuleContext(ShortestPathPatternContext, 0) as ShortestPathPatternContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_shortestPathExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShortestPathExpression) {
	 		listener.enterShortestPathExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShortestPathExpression) {
	 		listener.exitShortestPathExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShortestPathExpression) {
			return visitor.visitShortestPathExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParenthesizedExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_parenthesizedExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParenthesizedExpression) {
	 		listener.enterParenthesizedExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParenthesizedExpression) {
	 		listener.exitParenthesizedExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParenthesizedExpression) {
			return visitor.visitParenthesizedExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MapProjectionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public mapProjectionElement_list(): MapProjectionElementContext[] {
		return this.getTypedRuleContexts(MapProjectionElementContext) as MapProjectionElementContext[];
	}
	public mapProjectionElement(i: number): MapProjectionElementContext {
		return this.getTypedRuleContext(MapProjectionElementContext, i) as MapProjectionElementContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_mapProjection;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMapProjection) {
	 		listener.enterMapProjection(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMapProjection) {
	 		listener.exitMapProjection(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMapProjection) {
			return visitor.visitMapProjection(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MapProjectionElementContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public propertyKeyName(): PropertyKeyNameContext {
		return this.getTypedRuleContext(PropertyKeyNameContext, 0) as PropertyKeyNameContext;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public property(): PropertyContext {
		return this.getTypedRuleContext(PropertyContext, 0) as PropertyContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public DOT(): TerminalNode {
		return this.getToken(CypherCmdParser.DOT, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_mapProjectionElement;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMapProjectionElement) {
	 		listener.enterMapProjectionElement(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMapProjectionElement) {
	 		listener.exitMapProjectionElement(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMapProjectionElement) {
			return visitor.visitMapProjectionElement(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CountStarContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COUNT(): TerminalNode {
		return this.getToken(CypherCmdParser.COUNT, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_countStar;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCountStar) {
	 		listener.enterCountStar(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCountStar) {
	 		listener.exitCountStar(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCountStar) {
			return visitor.visitCountStar(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExistsExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public regularQuery(): RegularQueryContext {
		return this.getTypedRuleContext(RegularQueryContext, 0) as RegularQueryContext;
	}
	public patternList(): PatternListContext {
		return this.getTypedRuleContext(PatternListContext, 0) as PatternListContext;
	}
	public matchMode(): MatchModeContext {
		return this.getTypedRuleContext(MatchModeContext, 0) as MatchModeContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_existsExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExistsExpression) {
	 		listener.enterExistsExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExistsExpression) {
	 		listener.exitExistsExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExistsExpression) {
			return visitor.visitExistsExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CountExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COUNT(): TerminalNode {
		return this.getToken(CypherCmdParser.COUNT, 0);
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public regularQuery(): RegularQueryContext {
		return this.getTypedRuleContext(RegularQueryContext, 0) as RegularQueryContext;
	}
	public patternList(): PatternListContext {
		return this.getTypedRuleContext(PatternListContext, 0) as PatternListContext;
	}
	public matchMode(): MatchModeContext {
		return this.getTypedRuleContext(MatchModeContext, 0) as MatchModeContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_countExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCountExpression) {
	 		listener.enterCountExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCountExpression) {
	 		listener.exitCountExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCountExpression) {
			return visitor.visitCountExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CollectExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COLLECT(): TerminalNode {
		return this.getToken(CypherCmdParser.COLLECT, 0);
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public regularQuery(): RegularQueryContext {
		return this.getTypedRuleContext(RegularQueryContext, 0) as RegularQueryContext;
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_collectExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCollectExpression) {
	 		listener.enterCollectExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCollectExpression) {
	 		listener.exitCollectExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCollectExpression) {
			return visitor.visitCollectExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NumberLiteralContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DECIMAL_DOUBLE(): TerminalNode {
		return this.getToken(CypherCmdParser.DECIMAL_DOUBLE, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public UNSIGNED_HEX_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_HEX_INTEGER, 0);
	}
	public UNSIGNED_OCTAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_OCTAL_INTEGER, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(CypherCmdParser.MINUS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_numberLiteral;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNumberLiteral) {
	 		listener.enterNumberLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNumberLiteral) {
	 		listener.exitNumberLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNumberLiteral) {
			return visitor.visitNumberLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SignedIntegerLiteralContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public MINUS(): TerminalNode {
		return this.getToken(CypherCmdParser.MINUS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_signedIntegerLiteral;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSignedIntegerLiteral) {
	 		listener.enterSignedIntegerLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSignedIntegerLiteral) {
	 		listener.exitSignedIntegerLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSignedIntegerLiteral) {
			return visitor.visitSignedIntegerLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ListLiteralContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_listLiteral;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterListLiteral) {
	 		listener.enterListLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitListLiteral) {
	 		listener.exitListLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitListLiteral) {
			return visitor.visitListLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertyKeyNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_propertyKeyName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPropertyKeyName) {
	 		listener.enterPropertyKeyName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPropertyKeyName) {
	 		listener.exitPropertyKeyName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPropertyKeyName) {
			return visitor.visitPropertyKeyName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParameterContext extends ParserRuleContext {
	public paramType: String;
	constructor(parser: CypherCmdParser, parent: ParserRuleContext, invokingState: number, paramType: String) {
		super(parent, invokingState);
    	this.parser = parser;
        this.paramType = paramType;
	}
	public DOLLAR(): TerminalNode {
		return this.getToken(CypherCmdParser.DOLLAR, 0);
	}
	public parameterName(): ParameterNameContext {
		return this.getTypedRuleContext(ParameterNameContext, 0) as ParameterNameContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_parameter;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParameter) {
	 		listener.enterParameter(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParameter) {
	 		listener.exitParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParameter) {
			return visitor.visitParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ParameterNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_parameterName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterParameterName) {
	 		listener.enterParameterName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitParameterName) {
	 		listener.exitParameterName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitParameterName) {
			return visitor.visitParameterName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionInvocationContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public functionName(): FunctionNameContext {
		return this.getTypedRuleContext(FunctionNameContext, 0) as FunctionNameContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public functionArgument_list(): FunctionArgumentContext[] {
		return this.getTypedRuleContexts(FunctionArgumentContext) as FunctionArgumentContext[];
	}
	public functionArgument(i: number): FunctionArgumentContext {
		return this.getTypedRuleContext(FunctionArgumentContext, i) as FunctionArgumentContext;
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(CypherCmdParser.DISTINCT, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_functionInvocation;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFunctionInvocation) {
	 		listener.enterFunctionInvocation(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFunctionInvocation) {
	 		listener.exitFunctionInvocation(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFunctionInvocation) {
			return visitor.visitFunctionInvocation(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionArgumentContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_functionArgument;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFunctionArgument) {
	 		listener.enterFunctionArgument(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFunctionArgument) {
	 		listener.exitFunctionArgument(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFunctionArgument) {
			return visitor.visitFunctionArgument(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public namespace(): NamespaceContext {
		return this.getTypedRuleContext(NamespaceContext, 0) as NamespaceContext;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_functionName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFunctionName) {
	 		listener.enterFunctionName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFunctionName) {
	 		listener.exitFunctionName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFunctionName) {
			return visitor.visitFunctionName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NamespaceContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public DOT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.DOT);
	}
	public DOT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.DOT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_namespace;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNamespace) {
	 		listener.enterNamespace(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNamespace) {
	 		listener.exitNamespace(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNamespace) {
			return visitor.visitNamespace(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class VariableContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_variable;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterVariable) {
	 		listener.enterVariable(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitVariable) {
	 		listener.exitVariable(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitVariable) {
			return visitor.visitVariable(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NonEmptyNameListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nonEmptyNameList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNonEmptyNameList) {
	 		listener.enterNonEmptyNameList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNonEmptyNameList) {
	 		listener.exitNonEmptyNameList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNonEmptyNameList) {
			return visitor.visitNonEmptyNameList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public createCommand(): CreateCommandContext {
		return this.getTypedRuleContext(CreateCommandContext, 0) as CreateCommandContext;
	}
	public dropCommand(): DropCommandContext {
		return this.getTypedRuleContext(DropCommandContext, 0) as DropCommandContext;
	}
	public alterCommand(): AlterCommandContext {
		return this.getTypedRuleContext(AlterCommandContext, 0) as AlterCommandContext;
	}
	public renameCommand(): RenameCommandContext {
		return this.getTypedRuleContext(RenameCommandContext, 0) as RenameCommandContext;
	}
	public denyCommand(): DenyCommandContext {
		return this.getTypedRuleContext(DenyCommandContext, 0) as DenyCommandContext;
	}
	public revokeCommand(): RevokeCommandContext {
		return this.getTypedRuleContext(RevokeCommandContext, 0) as RevokeCommandContext;
	}
	public grantCommand(): GrantCommandContext {
		return this.getTypedRuleContext(GrantCommandContext, 0) as GrantCommandContext;
	}
	public startDatabase(): StartDatabaseContext {
		return this.getTypedRuleContext(StartDatabaseContext, 0) as StartDatabaseContext;
	}
	public stopDatabase(): StopDatabaseContext {
		return this.getTypedRuleContext(StopDatabaseContext, 0) as StopDatabaseContext;
	}
	public enableServerCommand(): EnableServerCommandContext {
		return this.getTypedRuleContext(EnableServerCommandContext, 0) as EnableServerCommandContext;
	}
	public allocationCommand(): AllocationCommandContext {
		return this.getTypedRuleContext(AllocationCommandContext, 0) as AllocationCommandContext;
	}
	public showCommand(): ShowCommandContext {
		return this.getTypedRuleContext(ShowCommandContext, 0) as ShowCommandContext;
	}
	public terminateCommand(): TerminateCommandContext {
		return this.getTypedRuleContext(TerminateCommandContext, 0) as TerminateCommandContext;
	}
	public useClause(): UseClauseContext {
		return this.getTypedRuleContext(UseClauseContext, 0) as UseClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_command;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCommand) {
	 		listener.enterCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCommand) {
	 		listener.exitCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCommand) {
			return visitor.visitCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(CypherCmdParser.CREATE, 0);
	}
	public createAlias(): CreateAliasContext {
		return this.getTypedRuleContext(CreateAliasContext, 0) as CreateAliasContext;
	}
	public createCompositeDatabase(): CreateCompositeDatabaseContext {
		return this.getTypedRuleContext(CreateCompositeDatabaseContext, 0) as CreateCompositeDatabaseContext;
	}
	public createConstraint(): CreateConstraintContext {
		return this.getTypedRuleContext(CreateConstraintContext, 0) as CreateConstraintContext;
	}
	public createDatabase(): CreateDatabaseContext {
		return this.getTypedRuleContext(CreateDatabaseContext, 0) as CreateDatabaseContext;
	}
	public createIndex(): CreateIndexContext {
		return this.getTypedRuleContext(CreateIndexContext, 0) as CreateIndexContext;
	}
	public createRole(): CreateRoleContext {
		return this.getTypedRuleContext(CreateRoleContext, 0) as CreateRoleContext;
	}
	public createUser(): CreateUserContext {
		return this.getTypedRuleContext(CreateUserContext, 0) as CreateUserContext;
	}
	public OR(): TerminalNode {
		return this.getToken(CypherCmdParser.OR, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(CypherCmdParser.REPLACE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateCommand) {
	 		listener.enterCreateCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateCommand) {
	 		listener.exitCreateCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateCommand) {
			return visitor.visitCreateCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(CypherCmdParser.DROP, 0);
	}
	public dropAlias(): DropAliasContext {
		return this.getTypedRuleContext(DropAliasContext, 0) as DropAliasContext;
	}
	public dropConstraint(): DropConstraintContext {
		return this.getTypedRuleContext(DropConstraintContext, 0) as DropConstraintContext;
	}
	public dropDatabase(): DropDatabaseContext {
		return this.getTypedRuleContext(DropDatabaseContext, 0) as DropDatabaseContext;
	}
	public dropIndex(): DropIndexContext {
		return this.getTypedRuleContext(DropIndexContext, 0) as DropIndexContext;
	}
	public dropRole(): DropRoleContext {
		return this.getTypedRuleContext(DropRoleContext, 0) as DropRoleContext;
	}
	public dropServer(): DropServerContext {
		return this.getTypedRuleContext(DropServerContext, 0) as DropServerContext;
	}
	public dropUser(): DropUserContext {
		return this.getTypedRuleContext(DropUserContext, 0) as DropUserContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropCommand) {
	 		listener.enterDropCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropCommand) {
	 		listener.exitDropCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropCommand) {
			return visitor.visitDropCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALTER(): TerminalNode {
		return this.getToken(CypherCmdParser.ALTER, 0);
	}
	public alterAlias(): AlterAliasContext {
		return this.getTypedRuleContext(AlterAliasContext, 0) as AlterAliasContext;
	}
	public alterCurrentUser(): AlterCurrentUserContext {
		return this.getTypedRuleContext(AlterCurrentUserContext, 0) as AlterCurrentUserContext;
	}
	public alterDatabase(): AlterDatabaseContext {
		return this.getTypedRuleContext(AlterDatabaseContext, 0) as AlterDatabaseContext;
	}
	public alterUser(): AlterUserContext {
		return this.getTypedRuleContext(AlterUserContext, 0) as AlterUserContext;
	}
	public alterServer(): AlterServerContext {
		return this.getTypedRuleContext(AlterServerContext, 0) as AlterServerContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterCommand) {
	 		listener.enterAlterCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterCommand) {
	 		listener.exitAlterCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterCommand) {
			return visitor.visitAlterCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RENAME(): TerminalNode {
		return this.getToken(CypherCmdParser.RENAME, 0);
	}
	public renameRole(): RenameRoleContext {
		return this.getTypedRuleContext(RenameRoleContext, 0) as RenameRoleContext;
	}
	public renameServer(): RenameServerContext {
		return this.getTypedRuleContext(RenameServerContext, 0) as RenameServerContext;
	}
	public renameUser(): RenameUserContext {
		return this.getTypedRuleContext(RenameUserContext, 0) as RenameUserContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_renameCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRenameCommand) {
	 		listener.enterRenameCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRenameCommand) {
	 		listener.exitRenameCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRenameCommand) {
			return visitor.visitRenameCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SHOW(): TerminalNode {
		return this.getToken(CypherCmdParser.SHOW, 0);
	}
	public showAliases(): ShowAliasesContext {
		return this.getTypedRuleContext(ShowAliasesContext, 0) as ShowAliasesContext;
	}
	public showConstraintCommand(): ShowConstraintCommandContext {
		return this.getTypedRuleContext(ShowConstraintCommandContext, 0) as ShowConstraintCommandContext;
	}
	public showCurrentUser(): ShowCurrentUserContext {
		return this.getTypedRuleContext(ShowCurrentUserContext, 0) as ShowCurrentUserContext;
	}
	public showDatabase(): ShowDatabaseContext {
		return this.getTypedRuleContext(ShowDatabaseContext, 0) as ShowDatabaseContext;
	}
	public showFunctions(): ShowFunctionsContext {
		return this.getTypedRuleContext(ShowFunctionsContext, 0) as ShowFunctionsContext;
	}
	public showIndexCommand(): ShowIndexCommandContext {
		return this.getTypedRuleContext(ShowIndexCommandContext, 0) as ShowIndexCommandContext;
	}
	public showPrivileges(): ShowPrivilegesContext {
		return this.getTypedRuleContext(ShowPrivilegesContext, 0) as ShowPrivilegesContext;
	}
	public showProcedures(): ShowProceduresContext {
		return this.getTypedRuleContext(ShowProceduresContext, 0) as ShowProceduresContext;
	}
	public showRolePrivileges(): ShowRolePrivilegesContext {
		return this.getTypedRuleContext(ShowRolePrivilegesContext, 0) as ShowRolePrivilegesContext;
	}
	public showRoles(): ShowRolesContext {
		return this.getTypedRuleContext(ShowRolesContext, 0) as ShowRolesContext;
	}
	public showServers(): ShowServersContext {
		return this.getTypedRuleContext(ShowServersContext, 0) as ShowServersContext;
	}
	public showSettings(): ShowSettingsContext {
		return this.getTypedRuleContext(ShowSettingsContext, 0) as ShowSettingsContext;
	}
	public showSupportedPrivileges(): ShowSupportedPrivilegesContext {
		return this.getTypedRuleContext(ShowSupportedPrivilegesContext, 0) as ShowSupportedPrivilegesContext;
	}
	public showTransactions(): ShowTransactionsContext {
		return this.getTypedRuleContext(ShowTransactionsContext, 0) as ShowTransactionsContext;
	}
	public showUserPrivileges(): ShowUserPrivilegesContext {
		return this.getTypedRuleContext(ShowUserPrivilegesContext, 0) as ShowUserPrivilegesContext;
	}
	public showUsers(): ShowUsersContext {
		return this.getTypedRuleContext(ShowUsersContext, 0) as ShowUsersContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowCommand) {
	 		listener.enterShowCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowCommand) {
	 		listener.exitShowCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowCommand) {
			return visitor.visitShowCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCommandYieldContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public yieldClause(): YieldClauseContext {
		return this.getTypedRuleContext(YieldClauseContext, 0) as YieldClauseContext;
	}
	public returnClause(): ReturnClauseContext {
		return this.getTypedRuleContext(ReturnClauseContext, 0) as ReturnClauseContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showCommandYield;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowCommandYield) {
	 		listener.enterShowCommandYield(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowCommandYield) {
	 		listener.exitShowCommandYield(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowCommandYield) {
			return visitor.visitShowCommandYield(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class YieldItemContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public variable_list(): VariableContext[] {
		return this.getTypedRuleContexts(VariableContext) as VariableContext[];
	}
	public variable(i: number): VariableContext {
		return this.getTypedRuleContext(VariableContext, i) as VariableContext;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_yieldItem;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterYieldItem) {
	 		listener.enterYieldItem(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitYieldItem) {
	 		listener.exitYieldItem(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitYieldItem) {
			return visitor.visitYieldItem(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class YieldSkipContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SKIPROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.SKIPROWS, 0);
	}
	public signedIntegerLiteral(): SignedIntegerLiteralContext {
		return this.getTypedRuleContext(SignedIntegerLiteralContext, 0) as SignedIntegerLiteralContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_yieldSkip;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterYieldSkip) {
	 		listener.enterYieldSkip(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitYieldSkip) {
	 		listener.exitYieldSkip(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitYieldSkip) {
			return visitor.visitYieldSkip(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class YieldLimitContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIMITROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.LIMITROWS, 0);
	}
	public signedIntegerLiteral(): SignedIntegerLiteralContext {
		return this.getTypedRuleContext(SignedIntegerLiteralContext, 0) as SignedIntegerLiteralContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_yieldLimit;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterYieldLimit) {
	 		listener.enterYieldLimit(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitYieldLimit) {
	 		listener.exitYieldLimit(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitYieldLimit) {
			return visitor.visitYieldLimit(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class YieldClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public YIELD(): TerminalNode {
		return this.getToken(CypherCmdParser.YIELD, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public yieldItem_list(): YieldItemContext[] {
		return this.getTypedRuleContexts(YieldItemContext) as YieldItemContext[];
	}
	public yieldItem(i: number): YieldItemContext {
		return this.getTypedRuleContext(YieldItemContext, i) as YieldItemContext;
	}
	public orderBy(): OrderByContext {
		return this.getTypedRuleContext(OrderByContext, 0) as OrderByContext;
	}
	public yieldSkip(): YieldSkipContext {
		return this.getTypedRuleContext(YieldSkipContext, 0) as YieldSkipContext;
	}
	public yieldLimit(): YieldLimitContext {
		return this.getTypedRuleContext(YieldLimitContext, 0) as YieldLimitContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_yieldClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterYieldClause) {
	 		listener.enterYieldClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitYieldClause) {
	 		listener.exitYieldClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitYieldClause) {
			return visitor.visitYieldClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowBriefAndYieldContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BRIEF(): TerminalNode {
		return this.getToken(CypherCmdParser.BRIEF, 0);
	}
	public VERBOSE(): TerminalNode {
		return this.getToken(CypherCmdParser.VERBOSE, 0);
	}
	public OUTPUT(): TerminalNode {
		return this.getToken(CypherCmdParser.OUTPUT, 0);
	}
	public yieldClause(): YieldClauseContext {
		return this.getTypedRuleContext(YieldClauseContext, 0) as YieldClauseContext;
	}
	public returnClause(): ReturnClauseContext {
		return this.getTypedRuleContext(ReturnClauseContext, 0) as ReturnClauseContext;
	}
	public whereClause(): WhereClauseContext {
		return this.getTypedRuleContext(WhereClauseContext, 0) as WhereClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showBriefAndYield;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowBriefAndYield) {
	 		listener.enterShowBriefAndYield(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowBriefAndYield) {
	 		listener.exitShowBriefAndYield(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowBriefAndYield) {
			return visitor.visitShowBriefAndYield(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowIndexCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public showIndexesNoBrief(): ShowIndexesNoBriefContext {
		return this.getTypedRuleContext(ShowIndexesNoBriefContext, 0) as ShowIndexesNoBriefContext;
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.FULLTEXT, 0);
	}
	public LOOKUP(): TerminalNode {
		return this.getToken(CypherCmdParser.LOOKUP, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(CypherCmdParser.POINT, 0);
	}
	public RANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.RANGE, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.TEXT, 0);
	}
	public VECTOR(): TerminalNode {
		return this.getToken(CypherCmdParser.VECTOR, 0);
	}
	public showIndexesAllowBrief(): ShowIndexesAllowBriefContext {
		return this.getTypedRuleContext(ShowIndexesAllowBriefContext, 0) as ShowIndexesAllowBriefContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public BTREE(): TerminalNode {
		return this.getToken(CypherCmdParser.BTREE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showIndexCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowIndexCommand) {
	 		listener.enterShowIndexCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowIndexCommand) {
	 		listener.exitShowIndexCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowIndexCommand) {
			return visitor.visitShowIndexCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowIndexesAllowBriefContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public showBriefAndYield(): ShowBriefAndYieldContext {
		return this.getTypedRuleContext(ShowBriefAndYieldContext, 0) as ShowBriefAndYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showIndexesAllowBrief;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowIndexesAllowBrief) {
	 		listener.enterShowIndexesAllowBrief(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowIndexesAllowBrief) {
	 		listener.exitShowIndexesAllowBrief(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowIndexesAllowBrief) {
			return visitor.visitShowIndexesAllowBrief(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowIndexesNoBriefContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showIndexesNoBrief;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowIndexesNoBrief) {
	 		listener.enterShowIndexesNoBrief(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowIndexesNoBrief) {
	 		listener.exitShowIndexesNoBrief(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowIndexesNoBrief) {
			return visitor.visitShowIndexesNoBrief(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowConstraintCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showConstraintCommand;
	}
	public copyFrom(ctx: ShowConstraintCommandContext): void {
		super.copyFrom(ctx);
	}
}
export class ShowConstraintUniqueContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUE, 0);
	}
	public showConstraintsAllowYield(): ShowConstraintsAllowYieldContext {
		return this.getTypedRuleContext(ShowConstraintsAllowYieldContext, 0) as ShowConstraintsAllowYieldContext;
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintUnique) {
	 		listener.enterShowConstraintUnique(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintUnique) {
	 		listener.exitShowConstraintUnique(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintUnique) {
			return visitor.visitShowConstraintUnique(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowConstraintMultiContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public constraintAllowYieldType(): ConstraintAllowYieldTypeContext {
		return this.getTypedRuleContext(ConstraintAllowYieldTypeContext, 0) as ConstraintAllowYieldTypeContext;
	}
	public showConstraintsAllowYield(): ShowConstraintsAllowYieldContext {
		return this.getTypedRuleContext(ShowConstraintsAllowYieldContext, 0) as ShowConstraintsAllowYieldContext;
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintMulti) {
	 		listener.enterShowConstraintMulti(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintMulti) {
	 		listener.exitShowConstraintMulti(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintMulti) {
			return visitor.visitShowConstraintMulti(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowConstraintRelExistContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public EXIST(): TerminalNode {
		return this.getToken(CypherCmdParser.EXIST, 0);
	}
	public showConstraintsAllowYield(): ShowConstraintsAllowYieldContext {
		return this.getTypedRuleContext(ShowConstraintsAllowYieldContext, 0) as ShowConstraintsAllowYieldContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintRelExist) {
	 		listener.enterShowConstraintRelExist(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintRelExist) {
	 		listener.exitShowConstraintRelExist(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintRelExist) {
			return visitor.visitShowConstraintRelExist(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowConstraintOldExistsContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public showConstraintsAllowBrief(): ShowConstraintsAllowBriefContext {
		return this.getTypedRuleContext(ShowConstraintsAllowBriefContext, 0) as ShowConstraintsAllowBriefContext;
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintOldExists) {
	 		listener.enterShowConstraintOldExists(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintOldExists) {
	 		listener.exitShowConstraintOldExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintOldExists) {
			return visitor.visitShowConstraintOldExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowConstraintBriefAndYieldContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public showConstraintsAllowBriefAndYield(): ShowConstraintsAllowBriefAndYieldContext {
		return this.getTypedRuleContext(ShowConstraintsAllowBriefAndYieldContext, 0) as ShowConstraintsAllowBriefAndYieldContext;
	}
	public constraintBriefAndYieldType(): ConstraintBriefAndYieldTypeContext {
		return this.getTypedRuleContext(ConstraintBriefAndYieldTypeContext, 0) as ConstraintBriefAndYieldTypeContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintBriefAndYield) {
	 		listener.enterShowConstraintBriefAndYield(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintBriefAndYield) {
	 		listener.exitShowConstraintBriefAndYield(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintBriefAndYield) {
			return visitor.visitShowConstraintBriefAndYield(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ShowConstraintKeyContext extends ShowConstraintCommandContext {
	constructor(parser: CypherCmdParser, ctx: ShowConstraintCommandContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public KEY(): TerminalNode {
		return this.getToken(CypherCmdParser.KEY, 0);
	}
	public showConstraintsAllowYield(): ShowConstraintsAllowYieldContext {
		return this.getTypedRuleContext(ShowConstraintsAllowYieldContext, 0) as ShowConstraintsAllowYieldContext;
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintKey) {
	 		listener.enterShowConstraintKey(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintKey) {
	 		listener.exitShowConstraintKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintKey) {
			return visitor.visitShowConstraintKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintAllowYieldTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNIQUENESS(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUENESS, 0);
	}
	public constraintExistType(): ConstraintExistTypeContext {
		return this.getTypedRuleContext(ConstraintExistTypeContext, 0) as ConstraintExistTypeContext;
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
	public TYPE(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_constraintAllowYieldType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintAllowYieldType) {
	 		listener.enterConstraintAllowYieldType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintAllowYieldType) {
	 		listener.exitConstraintAllowYieldType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintAllowYieldType) {
			return visitor.visitConstraintAllowYieldType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintExistTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXISTENCE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTENCE, 0);
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
	public EXIST(): TerminalNode {
		return this.getToken(CypherCmdParser.EXIST, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_constraintExistType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintExistType) {
	 		listener.enterConstraintExistType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintExistType) {
	 		listener.exitConstraintExistType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintExistType) {
			return visitor.visitConstraintExistType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintBriefAndYieldTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUE, 0);
	}
	public EXIST(): TerminalNode {
		return this.getToken(CypherCmdParser.EXIST, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(CypherCmdParser.KEY, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_constraintBriefAndYieldType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintBriefAndYieldType) {
	 		listener.enterConstraintBriefAndYieldType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintBriefAndYieldType) {
	 		listener.exitConstraintBriefAndYieldType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintBriefAndYieldType) {
			return visitor.visitConstraintBriefAndYieldType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowConstraintsAllowBriefAndYieldContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public showBriefAndYield(): ShowBriefAndYieldContext {
		return this.getTypedRuleContext(ShowBriefAndYieldContext, 0) as ShowBriefAndYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showConstraintsAllowBriefAndYield;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintsAllowBriefAndYield) {
	 		listener.enterShowConstraintsAllowBriefAndYield(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintsAllowBriefAndYield) {
	 		listener.exitShowConstraintsAllowBriefAndYield(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintsAllowBriefAndYield) {
			return visitor.visitShowConstraintsAllowBriefAndYield(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowConstraintsAllowBriefContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
	public BRIEF(): TerminalNode {
		return this.getToken(CypherCmdParser.BRIEF, 0);
	}
	public VERBOSE(): TerminalNode {
		return this.getToken(CypherCmdParser.VERBOSE, 0);
	}
	public OUTPUT(): TerminalNode {
		return this.getToken(CypherCmdParser.OUTPUT, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showConstraintsAllowBrief;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintsAllowBrief) {
	 		listener.enterShowConstraintsAllowBrief(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintsAllowBrief) {
	 		listener.exitShowConstraintsAllowBrief(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintsAllowBrief) {
			return visitor.visitShowConstraintsAllowBrief(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowConstraintsAllowYieldContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showConstraintsAllowYield;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowConstraintsAllowYield) {
	 		listener.enterShowConstraintsAllowYield(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowConstraintsAllowYield) {
	 		listener.exitShowConstraintsAllowYield(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowConstraintsAllowYield) {
			return visitor.visitShowConstraintsAllowYield(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowProceduresContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURE, 0);
	}
	public PROCEDURES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURES, 0);
	}
	public executableBy(): ExecutableByContext {
		return this.getTypedRuleContext(ExecutableByContext, 0) as ExecutableByContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showProcedures;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowProcedures) {
	 		listener.enterShowProcedures(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowProcedures) {
	 		listener.exitShowProcedures(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowProcedures) {
			return visitor.visitShowProcedures(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowFunctionsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public functionToken(): FunctionTokenContext {
		return this.getTypedRuleContext(FunctionTokenContext, 0) as FunctionTokenContext;
	}
	public showFunctionsType(): ShowFunctionsTypeContext {
		return this.getTypedRuleContext(ShowFunctionsTypeContext, 0) as ShowFunctionsTypeContext;
	}
	public executableBy(): ExecutableByContext {
		return this.getTypedRuleContext(ExecutableByContext, 0) as ExecutableByContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showFunctions;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowFunctions) {
	 		listener.enterShowFunctions(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowFunctions) {
	 		listener.exitShowFunctions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowFunctions) {
			return visitor.visitShowFunctions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FunctionTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(CypherCmdParser.FUNCTION, 0);
	}
	public FUNCTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.FUNCTIONS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_functionToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFunctionToken) {
	 		listener.enterFunctionToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFunctionToken) {
	 		listener.exitFunctionToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFunctionToken) {
			return visitor.visitFunctionToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecutableByContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXECUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXECUTABLE, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(CypherCmdParser.BY, 0);
	}
	public CURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CURRENT, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_executableBy;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExecutableBy) {
	 		listener.enterExecutableBy(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExecutableBy) {
	 		listener.exitExecutableBy(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExecutableBy) {
			return visitor.visitExecutableBy(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowFunctionsTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public BUILT(): TerminalNode {
		return this.getToken(CypherCmdParser.BUILT, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public DEFINED(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFINED, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showFunctionsType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowFunctionsType) {
	 		listener.enterShowFunctionsType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowFunctionsType) {
	 		listener.exitShowFunctionsType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowFunctionsType) {
			return visitor.visitShowFunctionsType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowTransactionsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public transactionToken(): TransactionTokenContext {
		return this.getTypedRuleContext(TransactionTokenContext, 0) as TransactionTokenContext;
	}
	public namesAndClauses(): NamesAndClausesContext {
		return this.getTypedRuleContext(NamesAndClausesContext, 0) as NamesAndClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showTransactions;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowTransactions) {
	 		listener.enterShowTransactions(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowTransactions) {
	 		listener.exitShowTransactions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowTransactions) {
			return visitor.visitShowTransactions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TerminateCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TERMINATE(): TerminalNode {
		return this.getToken(CypherCmdParser.TERMINATE, 0);
	}
	public terminateTransactions(): TerminateTransactionsContext {
		return this.getTypedRuleContext(TerminateTransactionsContext, 0) as TerminateTransactionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_terminateCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTerminateCommand) {
	 		listener.enterTerminateCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTerminateCommand) {
	 		listener.exitTerminateCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTerminateCommand) {
			return visitor.visitTerminateCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TerminateTransactionsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public transactionToken(): TransactionTokenContext {
		return this.getTypedRuleContext(TransactionTokenContext, 0) as TransactionTokenContext;
	}
	public namesAndClauses(): NamesAndClausesContext {
		return this.getTypedRuleContext(NamesAndClausesContext, 0) as NamesAndClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_terminateTransactions;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTerminateTransactions) {
	 		listener.enterTerminateTransactions(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTerminateTransactions) {
	 		listener.exitTerminateTransactions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTerminateTransactions) {
			return visitor.visitTerminateTransactions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowSettingsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public settingToken(): SettingTokenContext {
		return this.getTypedRuleContext(SettingTokenContext, 0) as SettingTokenContext;
	}
	public namesAndClauses(): NamesAndClausesContext {
		return this.getTypedRuleContext(NamesAndClausesContext, 0) as NamesAndClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showSettings;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowSettings) {
	 		listener.enterShowSettings(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowSettings) {
	 		listener.exitShowSettings(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowSettings) {
			return visitor.visitShowSettings(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SettingTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SETTING(): TerminalNode {
		return this.getToken(CypherCmdParser.SETTING, 0);
	}
	public SETTINGS(): TerminalNode {
		return this.getToken(CypherCmdParser.SETTINGS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_settingToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSettingToken) {
	 		listener.enterSettingToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSettingToken) {
	 		listener.exitSettingToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSettingToken) {
			return visitor.visitSettingToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NamesAndClausesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringsOrExpression(): StringsOrExpressionContext {
		return this.getTypedRuleContext(StringsOrExpressionContext, 0) as StringsOrExpressionContext;
	}
	public composableCommandClauses(): ComposableCommandClausesContext {
		return this.getTypedRuleContext(ComposableCommandClausesContext, 0) as ComposableCommandClausesContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_namesAndClauses;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNamesAndClauses) {
	 		listener.enterNamesAndClauses(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNamesAndClauses) {
	 		listener.exitNamesAndClauses(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNamesAndClauses) {
			return visitor.visitNamesAndClauses(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComposableCommandClausesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public terminateCommand(): TerminateCommandContext {
		return this.getTypedRuleContext(TerminateCommandContext, 0) as TerminateCommandContext;
	}
	public composableShowCommandClauses(): ComposableShowCommandClausesContext {
		return this.getTypedRuleContext(ComposableShowCommandClausesContext, 0) as ComposableShowCommandClausesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_composableCommandClauses;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterComposableCommandClauses) {
	 		listener.enterComposableCommandClauses(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitComposableCommandClauses) {
	 		listener.exitComposableCommandClauses(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitComposableCommandClauses) {
			return visitor.visitComposableCommandClauses(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ComposableShowCommandClausesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SHOW(): TerminalNode {
		return this.getToken(CypherCmdParser.SHOW, 0);
	}
	public showIndexCommand(): ShowIndexCommandContext {
		return this.getTypedRuleContext(ShowIndexCommandContext, 0) as ShowIndexCommandContext;
	}
	public showConstraintCommand(): ShowConstraintCommandContext {
		return this.getTypedRuleContext(ShowConstraintCommandContext, 0) as ShowConstraintCommandContext;
	}
	public showFunctions(): ShowFunctionsContext {
		return this.getTypedRuleContext(ShowFunctionsContext, 0) as ShowFunctionsContext;
	}
	public showProcedures(): ShowProceduresContext {
		return this.getTypedRuleContext(ShowProceduresContext, 0) as ShowProceduresContext;
	}
	public showSettings(): ShowSettingsContext {
		return this.getTypedRuleContext(ShowSettingsContext, 0) as ShowSettingsContext;
	}
	public showTransactions(): ShowTransactionsContext {
		return this.getTypedRuleContext(ShowTransactionsContext, 0) as ShowTransactionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_composableShowCommandClauses;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterComposableShowCommandClauses) {
	 		listener.enterComposableShowCommandClauses(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitComposableShowCommandClauses) {
	 		listener.exitComposableShowCommandClauses(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitComposableShowCommandClauses) {
			return visitor.visitComposableShowCommandClauses(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringsOrExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringList(): StringListContext {
		return this.getTypedRuleContext(StringListContext, 0) as StringListContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_stringsOrExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringsOrExpression) {
	 		listener.enterStringsOrExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringsOrExpression) {
	 		listener.exitStringsOrExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringsOrExpression) {
			return visitor.visitStringsOrExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public typePart_list(): TypePartContext[] {
		return this.getTypedRuleContexts(TypePartContext) as TypePartContext[];
	}
	public typePart(i: number): TypePartContext {
		return this.getTypedRuleContext(TypePartContext, i) as TypePartContext;
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_type;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterType) {
	 		listener.enterType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitType) {
	 		listener.exitType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitType) {
			return visitor.visitType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypePartContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public typeName(): TypeNameContext {
		return this.getTypedRuleContext(TypeNameContext, 0) as TypeNameContext;
	}
	public typeNullability(): TypeNullabilityContext {
		return this.getTypedRuleContext(TypeNullabilityContext, 0) as TypeNullabilityContext;
	}
	public typeListSuffix_list(): TypeListSuffixContext[] {
		return this.getTypedRuleContexts(TypeListSuffixContext) as TypeListSuffixContext[];
	}
	public typeListSuffix(i: number): TypeListSuffixContext {
		return this.getTypedRuleContext(TypeListSuffixContext, i) as TypeListSuffixContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_typePart;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTypePart) {
	 		listener.enterTypePart(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTypePart) {
	 		listener.exitTypePart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTypePart) {
			return visitor.visitTypePart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypeNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NOTHING(): TerminalNode {
		return this.getToken(CypherCmdParser.NOTHING, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public BOOL(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOL, 0);
	}
	public BOOLEAN(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOLEAN, 0);
	}
	public VARCHAR(): TerminalNode {
		return this.getToken(CypherCmdParser.VARCHAR, 0);
	}
	public STRING(): TerminalNode {
		return this.getToken(CypherCmdParser.STRING, 0);
	}
	public INT(): TerminalNode {
		return this.getToken(CypherCmdParser.INT, 0);
	}
	public INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.INTEGER, 0);
	}
	public SIGNED(): TerminalNode {
		return this.getToken(CypherCmdParser.SIGNED, 0);
	}
	public FLOAT(): TerminalNode {
		return this.getToken(CypherCmdParser.FLOAT, 0);
	}
	public DATE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATE, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(CypherCmdParser.LOCAL, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(CypherCmdParser.TIME, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(CypherCmdParser.DATETIME, 0);
	}
	public ZONED(): TerminalNode {
		return this.getToken(CypherCmdParser.ZONED, 0);
	}
	public WITHOUT(): TerminalNode {
		return this.getToken(CypherCmdParser.WITHOUT, 0);
	}
	public TIMEZONE(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMEZONE, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public TIMESTAMP(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMESTAMP, 0);
	}
	public DURATION(): TerminalNode {
		return this.getToken(CypherCmdParser.DURATION, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(CypherCmdParser.POINT, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public VERTEX(): TerminalNode {
		return this.getToken(CypherCmdParser.VERTEX, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public EDGE(): TerminalNode {
		return this.getToken(CypherCmdParser.EDGE, 0);
	}
	public MAP(): TerminalNode {
		return this.getToken(CypherCmdParser.MAP, 0);
	}
	public LT(): TerminalNode {
		return this.getToken(CypherCmdParser.LT, 0);
	}
	public type_(): TypeContext {
		return this.getTypedRuleContext(TypeContext, 0) as TypeContext;
	}
	public GT(): TerminalNode {
		return this.getToken(CypherCmdParser.GT, 0);
	}
	public LIST(): TerminalNode {
		return this.getToken(CypherCmdParser.LIST, 0);
	}
	public ARRAY(): TerminalNode {
		return this.getToken(CypherCmdParser.ARRAY, 0);
	}
	public PATH(): TerminalNode {
		return this.getToken(CypherCmdParser.PATH, 0);
	}
	public PATHS(): TerminalNode {
		return this.getToken(CypherCmdParser.PATHS, 0);
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(CypherCmdParser.VALUE, 0);
	}
	public ANY(): TerminalNode {
		return this.getToken(CypherCmdParser.ANY, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_typeName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTypeName) {
	 		listener.enterTypeName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTypeName) {
	 		listener.exitTypeName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTypeName) {
			return visitor.visitTypeName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypeNullabilityContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public EXCLAMATION_MARK(): TerminalNode {
		return this.getToken(CypherCmdParser.EXCLAMATION_MARK, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_typeNullability;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTypeNullability) {
	 		listener.enterTypeNullability(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTypeNullability) {
	 		listener.exitTypeNullability(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTypeNullability) {
			return visitor.visitTypeNullability(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TypeListSuffixContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LIST(): TerminalNode {
		return this.getToken(CypherCmdParser.LIST, 0);
	}
	public ARRAY(): TerminalNode {
		return this.getToken(CypherCmdParser.ARRAY, 0);
	}
	public typeNullability(): TypeNullabilityContext {
		return this.getTypedRuleContext(TypeNullabilityContext, 0) as TypeNullabilityContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_typeListSuffix;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTypeListSuffix) {
	 		listener.enterTypeListSuffix(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTypeListSuffix) {
	 		listener.exitTypeListSuffix(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTypeListSuffix) {
			return visitor.visitTypeListSuffix(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommandNodePatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public labelType(): LabelTypeContext {
		return this.getTypedRuleContext(LabelTypeContext, 0) as LabelTypeContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_commandNodePattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCommandNodePattern) {
	 		listener.enterCommandNodePattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCommandNodePattern) {
	 		listener.exitCommandNodePattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCommandNodePattern) {
			return visitor.visitCommandNodePattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommandRelPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.LPAREN);
	}
	public LPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, i);
	}
	public RPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.RPAREN);
	}
	public RPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, i);
	}
	public arrowLine_list(): ArrowLineContext[] {
		return this.getTypedRuleContexts(ArrowLineContext) as ArrowLineContext[];
	}
	public arrowLine(i: number): ArrowLineContext {
		return this.getTypedRuleContext(ArrowLineContext, i) as ArrowLineContext;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public relType(): RelTypeContext {
		return this.getTypedRuleContext(RelTypeContext, 0) as RelTypeContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public leftArrow(): LeftArrowContext {
		return this.getTypedRuleContext(LeftArrowContext, 0) as LeftArrowContext;
	}
	public rightArrow(): RightArrowContext {
		return this.getTypedRuleContext(RightArrowContext, 0) as RightArrowContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_commandRelPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCommandRelPattern) {
	 		listener.enterCommandRelPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCommandRelPattern) {
	 		listener.exitCommandRelPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCommandRelPattern) {
			return visitor.visitCommandRelPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateConstraintContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINT, 0);
	}
	public constraintType(): ConstraintTypeContext {
		return this.getTypedRuleContext(ConstraintTypeContext, 0) as ConstraintTypeContext;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public commandNodePattern(): CommandNodePatternContext {
		return this.getTypedRuleContext(CommandNodePatternContext, 0) as CommandNodePatternContext;
	}
	public commandRelPattern(): CommandRelPatternContext {
		return this.getTypedRuleContext(CommandRelPatternContext, 0) as CommandRelPatternContext;
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createConstraint;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateConstraint) {
	 		listener.enterCreateConstraint(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateConstraint) {
	 		listener.exitCreateConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateConstraint) {
			return visitor.visitCreateConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_constraintType;
	}
	public copyFrom(ctx: ConstraintTypeContext): void {
		super.copyFrom(ctx);
	}
}
export class ConstraintTypedContext extends ConstraintTypeContext {
	constructor(parser: CypherCmdParser, ctx: ConstraintTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public type_(): TypeContext {
		return this.getTypedRuleContext(TypeContext, 0) as TypeContext;
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRE, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public COLONCOLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLONCOLON, 0);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public TYPED(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPED, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintTyped) {
	 		listener.enterConstraintTyped(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintTyped) {
	 		listener.exitConstraintTyped(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintTyped) {
			return visitor.visitConstraintTyped(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstraintExistsContext extends ConstraintTypeContext {
	constructor(parser: CypherCmdParser, ctx: ConstraintTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintExists) {
	 		listener.enterConstraintExists(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintExists) {
	 		listener.exitConstraintExists(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintExists) {
			return visitor.visitConstraintExists(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstraintKeyContext extends ConstraintTypeContext {
	constructor(parser: CypherCmdParser, ctx: ConstraintTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(CypherCmdParser.KEY, 0);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRE, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintKey) {
	 		listener.enterConstraintKey(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintKey) {
	 		listener.exitConstraintKey(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintKey) {
			return visitor.visitConstraintKey(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstraintIsNotNullContext extends ConstraintTypeContext {
	constructor(parser: CypherCmdParser, ctx: ConstraintTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRE, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintIsNotNull) {
	 		listener.enterConstraintIsNotNull(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintIsNotNull) {
	 		listener.exitConstraintIsNotNull(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintIsNotNull) {
			return visitor.visitConstraintIsNotNull(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class ConstraintIsUniqueContext extends ConstraintTypeContext {
	constructor(parser: CypherCmdParser, ctx: ConstraintTypeContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUE, 0);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRE, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintIsUnique) {
	 		listener.enterConstraintIsUnique(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintIsUnique) {
	 		listener.exitConstraintIsUnique(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintIsUnique) {
			return visitor.visitConstraintIsUnique(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropConstraintContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINT, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public commandNodePattern(): CommandNodePatternContext {
		return this.getTypedRuleContext(CommandNodePatternContext, 0) as CommandNodePatternContext;
	}
	public commandRelPattern(): CommandRelPatternContext {
		return this.getTypedRuleContext(CommandRelPatternContext, 0) as CommandRelPatternContext;
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUE, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(CypherCmdParser.KEY, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropConstraint;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropConstraint) {
	 		listener.enterDropConstraint(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropConstraint) {
	 		listener.exitDropConstraint(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropConstraint) {
			return visitor.visitDropConstraint(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateIndexContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public BTREE(): TerminalNode {
		return this.getToken(CypherCmdParser.BTREE, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEX, 0);
	}
	public createIndex_(): CreateIndex_Context {
		return this.getTypedRuleContext(CreateIndex_Context, 0) as CreateIndex_Context;
	}
	public RANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.RANGE, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.TEXT, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(CypherCmdParser.POINT, 0);
	}
	public VECTOR(): TerminalNode {
		return this.getToken(CypherCmdParser.VECTOR, 0);
	}
	public LOOKUP(): TerminalNode {
		return this.getToken(CypherCmdParser.LOOKUP, 0);
	}
	public createLookupIndex(): CreateLookupIndexContext {
		return this.getTypedRuleContext(CreateLookupIndexContext, 0) as CreateLookupIndexContext;
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.FULLTEXT, 0);
	}
	public createFulltextIndex(): CreateFulltextIndexContext {
		return this.getTypedRuleContext(CreateFulltextIndexContext, 0) as CreateFulltextIndexContext;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public oldCreateIndex(): OldCreateIndexContext {
		return this.getTypedRuleContext(OldCreateIndexContext, 0) as OldCreateIndexContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createIndex;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateIndex) {
	 		listener.enterCreateIndex(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateIndex) {
	 		listener.exitCreateIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateIndex) {
			return visitor.visitCreateIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class OldCreateIndexContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public labelType(): LabelTypeContext {
		return this.getTypedRuleContext(LabelTypeContext, 0) as LabelTypeContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public nonEmptyNameList(): NonEmptyNameListContext {
		return this.getTypedRuleContext(NonEmptyNameListContext, 0) as NonEmptyNameListContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_oldCreateIndex;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterOldCreateIndex) {
	 		listener.enterOldCreateIndex(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitOldCreateIndex) {
	 		listener.exitOldCreateIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitOldCreateIndex) {
			return visitor.visitOldCreateIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateIndex_Context extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public propertyList(): PropertyListContext {
		return this.getTypedRuleContext(PropertyListContext, 0) as PropertyListContext;
	}
	public commandNodePattern(): CommandNodePatternContext {
		return this.getTypedRuleContext(CommandNodePatternContext, 0) as CommandNodePatternContext;
	}
	public commandRelPattern(): CommandRelPatternContext {
		return this.getTypedRuleContext(CommandRelPatternContext, 0) as CommandRelPatternContext;
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createIndex_;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateIndex_) {
	 		listener.enterCreateIndex_(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateIndex_) {
	 		listener.exitCreateIndex_(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateIndex_) {
			return visitor.visitCreateIndex_(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateFulltextIndexContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public EACH(): TerminalNode {
		return this.getToken(CypherCmdParser.EACH, 0);
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public variable_list(): VariableContext[] {
		return this.getTypedRuleContexts(VariableContext) as VariableContext[];
	}
	public variable(i: number): VariableContext {
		return this.getTypedRuleContext(VariableContext, i) as VariableContext;
	}
	public property_list(): PropertyContext[] {
		return this.getTypedRuleContexts(PropertyContext) as PropertyContext[];
	}
	public property(i: number): PropertyContext {
		return this.getTypedRuleContext(PropertyContext, i) as PropertyContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public fulltextNodePattern(): FulltextNodePatternContext {
		return this.getTypedRuleContext(FulltextNodePatternContext, 0) as FulltextNodePatternContext;
	}
	public fulltextRelPattern(): FulltextRelPatternContext {
		return this.getTypedRuleContext(FulltextRelPatternContext, 0) as FulltextRelPatternContext;
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createFulltextIndex;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateFulltextIndex) {
	 		listener.enterCreateFulltextIndex(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateFulltextIndex) {
	 		listener.exitCreateFulltextIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateFulltextIndex) {
			return visitor.visitCreateFulltextIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FulltextNodePatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_fulltextNodePattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFulltextNodePattern) {
	 		listener.enterFulltextNodePattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFulltextNodePattern) {
	 		listener.exitFulltextNodePattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFulltextNodePattern) {
			return visitor.visitFulltextNodePattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class FulltextRelPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.LPAREN);
	}
	public LPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, i);
	}
	public RPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.RPAREN);
	}
	public RPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, i);
	}
	public arrowLine_list(): ArrowLineContext[] {
		return this.getTypedRuleContexts(ArrowLineContext) as ArrowLineContext[];
	}
	public arrowLine(i: number): ArrowLineContext {
		return this.getTypedRuleContext(ArrowLineContext, i) as ArrowLineContext;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public leftArrow(): LeftArrowContext {
		return this.getTypedRuleContext(LeftArrowContext, 0) as LeftArrowContext;
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
	public rightArrow(): RightArrowContext {
		return this.getTypedRuleContext(RightArrowContext, 0) as RightArrowContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_fulltextRelPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterFulltextRelPattern) {
	 		listener.enterFulltextRelPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitFulltextRelPattern) {
	 		listener.exitFulltextRelPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitFulltextRelPattern) {
			return visitor.visitFulltextRelPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateLookupIndexContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public lookupIndexNodePattern(): LookupIndexNodePatternContext {
		return this.getTypedRuleContext(LookupIndexNodePatternContext, 0) as LookupIndexNodePatternContext;
	}
	public lookupIndexRelPattern(): LookupIndexRelPatternContext {
		return this.getTypedRuleContext(LookupIndexRelPatternContext, 0) as LookupIndexRelPatternContext;
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createLookupIndex;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateLookupIndex) {
	 		listener.enterCreateLookupIndex(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateLookupIndex) {
	 		listener.exitCreateLookupIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateLookupIndex) {
			return visitor.visitCreateLookupIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LookupIndexNodePatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public EACH(): TerminalNode {
		return this.getToken(CypherCmdParser.EACH, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_lookupIndexNodePattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLookupIndexNodePattern) {
	 		listener.enterLookupIndexNodePattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLookupIndexNodePattern) {
	 		listener.exitLookupIndexNodePattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLookupIndexNodePattern) {
			return visitor.visitLookupIndexNodePattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LookupIndexRelPatternContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.LPAREN);
	}
	public LPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, i);
	}
	public RPAREN_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.RPAREN);
	}
	public RPAREN(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, i);
	}
	public arrowLine_list(): ArrowLineContext[] {
		return this.getTypedRuleContexts(ArrowLineContext) as ArrowLineContext[];
	}
	public arrowLine(i: number): ArrowLineContext {
		return this.getTypedRuleContext(ArrowLineContext, i) as ArrowLineContext;
	}
	public LBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.LBRACKET, 0);
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public RBRACKET(): TerminalNode {
		return this.getToken(CypherCmdParser.RBRACKET, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public leftArrow(): LeftArrowContext {
		return this.getTypedRuleContext(LeftArrowContext, 0) as LeftArrowContext;
	}
	public rightArrow(): RightArrowContext {
		return this.getTypedRuleContext(RightArrowContext, 0) as RightArrowContext;
	}
	public EACH(): TerminalNode {
		return this.getToken(CypherCmdParser.EACH, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_lookupIndexRelPattern;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLookupIndexRelPattern) {
	 		listener.enterLookupIndexRelPattern(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLookupIndexRelPattern) {
	 		listener.exitLookupIndexRelPattern(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLookupIndexRelPattern) {
			return visitor.visitLookupIndexRelPattern(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropIndexContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public INDEX(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEX, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public labelType(): LabelTypeContext {
		return this.getTypedRuleContext(LabelTypeContext, 0) as LabelTypeContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public nonEmptyNameList(): NonEmptyNameListContext {
		return this.getTypedRuleContext(NonEmptyNameListContext, 0) as NonEmptyNameListContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public symbolicNameOrStringParameter(): SymbolicNameOrStringParameterContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterContext, 0) as SymbolicNameOrStringParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropIndex;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropIndex) {
	 		listener.enterDropIndex(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropIndex) {
	 		listener.exitDropIndex(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropIndex) {
			return visitor.visitDropIndex(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertyListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public variable_list(): VariableContext[] {
		return this.getTypedRuleContexts(VariableContext) as VariableContext[];
	}
	public variable(i: number): VariableContext {
		return this.getTypedRuleContext(VariableContext, i) as VariableContext;
	}
	public property_list(): PropertyContext[] {
		return this.getTypedRuleContexts(PropertyContext) as PropertyContext[];
	}
	public property(i: number): PropertyContext {
		return this.getTypedRuleContext(PropertyContext, i) as PropertyContext;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_propertyList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPropertyList) {
	 		listener.enterPropertyList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPropertyList) {
	 		listener.exitPropertyList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPropertyList) {
			return visitor.visitPropertyList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EnableServerCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ENABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ENABLE, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_enableServerCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterEnableServerCommand) {
	 		listener.enterEnableServerCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitEnableServerCommand) {
	 		listener.exitEnableServerCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitEnableServerCommand) {
			return visitor.visitEnableServerCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterServerContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterServer;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterServer) {
	 		listener.enterAlterServer(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterServer) {
	 		listener.exitAlterServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterServer) {
			return visitor.visitAlterServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameServerContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public stringOrParameter_list(): StringOrParameterContext[] {
		return this.getTypedRuleContexts(StringOrParameterContext) as StringOrParameterContext[];
	}
	public stringOrParameter(i: number): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, i) as StringOrParameterContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_renameServer;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRenameServer) {
	 		listener.enterRenameServer(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRenameServer) {
	 		listener.exitRenameServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRenameServer) {
			return visitor.visitRenameServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropServerContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropServer;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropServer) {
	 		listener.enterDropServer(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropServer) {
	 		listener.exitDropServer(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropServer) {
			return visitor.visitDropServer(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowServersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public SERVERS(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVERS, 0);
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showServers;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowServers) {
	 		listener.enterShowServers(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowServers) {
	 		listener.exitShowServers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowServers) {
			return visitor.visitShowServers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AllocationCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public deallocateDatabaseFromServers(): DeallocateDatabaseFromServersContext {
		return this.getTypedRuleContext(DeallocateDatabaseFromServersContext, 0) as DeallocateDatabaseFromServersContext;
	}
	public reallocateDatabases(): ReallocateDatabasesContext {
		return this.getTypedRuleContext(ReallocateDatabasesContext, 0) as ReallocateDatabasesContext;
	}
	public DRYRUN(): TerminalNode {
		return this.getToken(CypherCmdParser.DRYRUN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_allocationCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAllocationCommand) {
	 		listener.enterAllocationCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAllocationCommand) {
	 		listener.exitAllocationCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAllocationCommand) {
			return visitor.visitAllocationCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DeallocateDatabaseFromServersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DEALLOCATE(): TerminalNode {
		return this.getToken(CypherCmdParser.DEALLOCATE, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public stringOrParameter_list(): StringOrParameterContext[] {
		return this.getTypedRuleContexts(StringOrParameterContext) as StringOrParameterContext[];
	}
	public stringOrParameter(i: number): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, i) as StringOrParameterContext;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public SERVERS(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVERS, 0);
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_deallocateDatabaseFromServers;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDeallocateDatabaseFromServers) {
	 		listener.enterDeallocateDatabaseFromServers(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDeallocateDatabaseFromServers) {
	 		listener.exitDeallocateDatabaseFromServers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDeallocateDatabaseFromServers) {
			return visitor.visitDeallocateDatabaseFromServers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ReallocateDatabasesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REALLOCATE(): TerminalNode {
		return this.getToken(CypherCmdParser.REALLOCATE, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_reallocateDatabases;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterReallocateDatabases) {
	 		listener.enterReallocateDatabases(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitReallocateDatabases) {
	 		listener.exitReallocateDatabases(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitReallocateDatabases) {
			return visitor.visitReallocateDatabases(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateRoleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public commandNameExpression_list(): CommandNameExpressionContext[] {
		return this.getTypedRuleContexts(CommandNameExpressionContext) as CommandNameExpressionContext[];
	}
	public commandNameExpression(i: number): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, i) as CommandNameExpressionContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public COPY(): TerminalNode {
		return this.getToken(CypherCmdParser.COPY, 0);
	}
	public OF(): TerminalNode {
		return this.getToken(CypherCmdParser.OF, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createRole;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateRole) {
	 		listener.enterCreateRole(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateRole) {
	 		listener.exitCreateRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateRole) {
			return visitor.visitCreateRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropRoleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropRole;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropRole) {
	 		listener.enterDropRole(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropRole) {
	 		listener.exitDropRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropRole) {
			return visitor.visitDropRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameRoleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public commandNameExpression_list(): CommandNameExpressionContext[] {
		return this.getTypedRuleContexts(CommandNameExpressionContext) as CommandNameExpressionContext[];
	}
	public commandNameExpression(i: number): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, i) as CommandNameExpressionContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_renameRole;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRenameRole) {
	 		listener.enterRenameRole(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRenameRole) {
	 		listener.exitRenameRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRenameRole) {
			return visitor.visitRenameRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowRolesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public roleToken(): RoleTokenContext {
		return this.getTypedRuleContext(RoleTokenContext, 0) as RoleTokenContext;
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public POPULATED(): TerminalNode {
		return this.getToken(CypherCmdParser.POPULATED, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public USERS(): TerminalNode {
		return this.getToken(CypherCmdParser.USERS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showRoles;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowRoles) {
	 		listener.enterShowRoles(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowRoles) {
	 		listener.exitShowRoles(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowRoles) {
			return visitor.visitShowRoles(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoleTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ROLES(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLES, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_roleToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRoleToken) {
	 		listener.enterRoleToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRoleToken) {
	 		listener.exitRoleToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRoleToken) {
			return visitor.visitRoleToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.SET, i);
	}
	public password(): PasswordContext {
		return this.getTypedRuleContext(PasswordContext, 0) as PasswordContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public PASSWORD_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.PASSWORD);
	}
	public PASSWORD(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, i);
	}
	public passwordChangeRequired_list(): PasswordChangeRequiredContext[] {
		return this.getTypedRuleContexts(PasswordChangeRequiredContext) as PasswordChangeRequiredContext[];
	}
	public passwordChangeRequired(i: number): PasswordChangeRequiredContext {
		return this.getTypedRuleContext(PasswordChangeRequiredContext, i) as PasswordChangeRequiredContext;
	}
	public userStatus_list(): UserStatusContext[] {
		return this.getTypedRuleContexts(UserStatusContext) as UserStatusContext[];
	}
	public userStatus(i: number): UserStatusContext {
		return this.getTypedRuleContext(UserStatusContext, i) as UserStatusContext;
	}
	public homeDatabase_list(): HomeDatabaseContext[] {
		return this.getTypedRuleContexts(HomeDatabaseContext) as HomeDatabaseContext[];
	}
	public homeDatabase(i: number): HomeDatabaseContext {
		return this.getTypedRuleContext(HomeDatabaseContext, i) as HomeDatabaseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateUser) {
	 		listener.enterCreateUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateUser) {
	 		listener.exitCreateUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateUser) {
			return visitor.visitCreateUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropUser) {
	 		listener.enterDropUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropUser) {
	 		listener.exitDropUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropUser) {
			return visitor.visitDropUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RenameUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression_list(): CommandNameExpressionContext[] {
		return this.getTypedRuleContexts(CommandNameExpressionContext) as CommandNameExpressionContext[];
	}
	public commandNameExpression(i: number): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, i) as CommandNameExpressionContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_renameUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRenameUser) {
	 		listener.enterRenameUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRenameUser) {
	 		listener.exitRenameUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRenameUser) {
			return visitor.visitRenameUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterCurrentUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CURRENT, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public passwordExpression_list(): PasswordExpressionContext[] {
		return this.getTypedRuleContexts(PasswordExpressionContext) as PasswordExpressionContext[];
	}
	public passwordExpression(i: number): PasswordExpressionContext {
		return this.getTypedRuleContext(PasswordExpressionContext, i) as PasswordExpressionContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterCurrentUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterCurrentUser) {
	 		listener.enterAlterCurrentUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterCurrentUser) {
	 		listener.exitAlterCurrentUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterCurrentUser) {
			return visitor.visitAlterCurrentUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
	public REMOVE(): TerminalNode {
		return this.getToken(CypherCmdParser.REMOVE, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.SET, i);
	}
	public password_list(): PasswordContext[] {
		return this.getTypedRuleContexts(PasswordContext) as PasswordContext[];
	}
	public password(i: number): PasswordContext {
		return this.getTypedRuleContext(PasswordContext, i) as PasswordContext;
	}
	public PASSWORD_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.PASSWORD);
	}
	public PASSWORD(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, i);
	}
	public passwordChangeRequired_list(): PasswordChangeRequiredContext[] {
		return this.getTypedRuleContexts(PasswordChangeRequiredContext) as PasswordChangeRequiredContext[];
	}
	public passwordChangeRequired(i: number): PasswordChangeRequiredContext {
		return this.getTypedRuleContext(PasswordChangeRequiredContext, i) as PasswordChangeRequiredContext;
	}
	public userStatus_list(): UserStatusContext[] {
		return this.getTypedRuleContexts(UserStatusContext) as UserStatusContext[];
	}
	public userStatus(i: number): UserStatusContext {
		return this.getTypedRuleContext(UserStatusContext, i) as UserStatusContext;
	}
	public homeDatabase_list(): HomeDatabaseContext[] {
		return this.getTypedRuleContexts(HomeDatabaseContext) as HomeDatabaseContext[];
	}
	public homeDatabase(i: number): HomeDatabaseContext {
		return this.getTypedRuleContext(HomeDatabaseContext, i) as HomeDatabaseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterUser) {
	 		listener.enterAlterUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterUser) {
	 		listener.exitAlterUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterUser) {
			return visitor.visitAlterUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public passwordExpression(): PasswordExpressionContext {
		return this.getTypedRuleContext(PasswordExpressionContext, 0) as PasswordExpressionContext;
	}
	public passwordChangeRequired(): PasswordChangeRequiredContext {
		return this.getTypedRuleContext(PasswordChangeRequiredContext, 0) as PasswordChangeRequiredContext;
	}
	public PLAINTEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.PLAINTEXT, 0);
	}
	public ENCRYPTED(): TerminalNode {
		return this.getToken(CypherCmdParser.ENCRYPTED, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_password;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPassword) {
	 		listener.enterPassword(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPassword) {
	 		listener.exitPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPassword) {
			return visitor.visitPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_passwordExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPasswordExpression) {
	 		listener.enterPasswordExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPasswordExpression) {
	 		listener.exitPasswordExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPasswordExpression) {
			return visitor.visitPasswordExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordChangeRequiredContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CHANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.CHANGE, 0);
	}
	public REQUIRED(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRED, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_passwordChangeRequired;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPasswordChangeRequired) {
	 		listener.enterPasswordChangeRequired(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPasswordChangeRequired) {
	 		listener.exitPasswordChangeRequired(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPasswordChangeRequired) {
			return visitor.visitPasswordChangeRequired(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserStatusContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STATUS(): TerminalNode {
		return this.getToken(CypherCmdParser.STATUS, 0);
	}
	public SUSPENDED(): TerminalNode {
		return this.getToken(CypherCmdParser.SUSPENDED, 0);
	}
	public ACTIVE(): TerminalNode {
		return this.getToken(CypherCmdParser.ACTIVE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_userStatus;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUserStatus) {
	 		listener.enterUserStatus(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUserStatus) {
	 		listener.exitUserStatus(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUserStatus) {
			return visitor.visitUserStatus(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class HomeDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_homeDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterHomeDatabase) {
	 		listener.enterHomeDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitHomeDatabase) {
	 		listener.exitHomeDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitHomeDatabase) {
			return visitor.visitHomeDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowUsersContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public USERS(): TerminalNode {
		return this.getToken(CypherCmdParser.USERS, 0);
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showUsers;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowUsers) {
	 		listener.enterShowUsers(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowUsers) {
	 		listener.exitShowUsers(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowUsers) {
			return visitor.visitShowUsers(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowCurrentUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CURRENT, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showCurrentUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowCurrentUser) {
	 		listener.enterShowCurrentUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowCurrentUser) {
	 		listener.exitShowCurrentUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowCurrentUser) {
			return visitor.visitShowCurrentUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowPrivilegesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public privilegeToken(): PrivilegeTokenContext {
		return this.getTypedRuleContext(PrivilegeTokenContext, 0) as PrivilegeTokenContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public privilegeAsCommand(): PrivilegeAsCommandContext {
		return this.getTypedRuleContext(PrivilegeAsCommandContext, 0) as PrivilegeAsCommandContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showPrivileges;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowPrivileges) {
	 		listener.enterShowPrivileges(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowPrivileges) {
	 		listener.exitShowPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowPrivileges) {
			return visitor.visitShowPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowSupportedPrivilegesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SUPPORTED(): TerminalNode {
		return this.getToken(CypherCmdParser.SUPPORTED, 0);
	}
	public privilegeToken(): PrivilegeTokenContext {
		return this.getTypedRuleContext(PrivilegeTokenContext, 0) as PrivilegeTokenContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showSupportedPrivileges;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowSupportedPrivileges) {
	 		listener.enterShowSupportedPrivileges(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowSupportedPrivileges) {
	 		listener.exitShowSupportedPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowSupportedPrivileges) {
			return visitor.visitShowSupportedPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowRolePrivilegesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public privilegeToken(): PrivilegeTokenContext {
		return this.getTypedRuleContext(PrivilegeTokenContext, 0) as PrivilegeTokenContext;
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public ROLES(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLES, 0);
	}
	public privilegeAsCommand(): PrivilegeAsCommandContext {
		return this.getTypedRuleContext(PrivilegeAsCommandContext, 0) as PrivilegeAsCommandContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showRolePrivileges;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowRolePrivileges) {
	 		listener.enterShowRolePrivileges(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowRolePrivileges) {
	 		listener.exitShowRolePrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowRolePrivileges) {
			return visitor.visitShowRolePrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowUserPrivilegesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public privilegeToken(): PrivilegeTokenContext {
		return this.getTypedRuleContext(PrivilegeTokenContext, 0) as PrivilegeTokenContext;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public USERS(): TerminalNode {
		return this.getToken(CypherCmdParser.USERS, 0);
	}
	public userNames(): UserNamesContext {
		return this.getTypedRuleContext(UserNamesContext, 0) as UserNamesContext;
	}
	public privilegeAsCommand(): PrivilegeAsCommandContext {
		return this.getTypedRuleContext(PrivilegeAsCommandContext, 0) as PrivilegeAsCommandContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showUserPrivileges;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowUserPrivileges) {
	 		listener.enterShowUserPrivileges(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowUserPrivileges) {
	 		listener.exitShowUserPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowUserPrivileges) {
			return visitor.visitShowUserPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeAsCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public COMMAND(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMAND, 0);
	}
	public COMMANDS(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMANDS, 0);
	}
	public REVOKE(): TerminalNode {
		return this.getToken(CypherCmdParser.REVOKE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_privilegeAsCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPrivilegeAsCommand) {
	 		listener.enterPrivilegeAsCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPrivilegeAsCommand) {
	 		listener.exitPrivilegeAsCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeAsCommand) {
			return visitor.visitPrivilegeAsCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PRIVILEGE(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGE, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_privilegeToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPrivilegeToken) {
	 		listener.enterPrivilegeToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPrivilegeToken) {
	 		listener.exitPrivilegeToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPrivilegeToken) {
			return visitor.visitPrivilegeToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GRANT(): TerminalNode {
		return this.getToken(CypherCmdParser.GRANT, 0);
	}
	public privilege(): PrivilegeContext {
		return this.getTypedRuleContext(PrivilegeContext, 0) as PrivilegeContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public roleToken(): RoleTokenContext {
		return this.getTypedRuleContext(RoleTokenContext, 0) as RoleTokenContext;
	}
	public grantRole(): GrantRoleContext {
		return this.getTypedRuleContext(GrantRoleContext, 0) as GrantRoleContext;
	}
	public IMMUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMMUTABLE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_grantCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGrantCommand) {
	 		listener.enterGrantCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGrantCommand) {
	 		listener.exitGrantCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGrantCommand) {
			return visitor.visitGrantCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GrantRoleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public userNames(): UserNamesContext {
		return this.getTypedRuleContext(UserNamesContext, 0) as UserNamesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_grantRole;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGrantRole) {
	 		listener.enterGrantRole(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGrantRole) {
	 		listener.exitGrantRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGrantRole) {
			return visitor.visitGrantRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserNamesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameOrStringParameterList(): SymbolicNameOrStringParameterListContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterListContext, 0) as SymbolicNameOrStringParameterListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_userNames;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUserNames) {
	 		listener.enterUserNames(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUserNames) {
	 		listener.exitUserNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUserNames) {
			return visitor.visitUserNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RoleNamesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameOrStringParameterList(): SymbolicNameOrStringParameterListContext {
		return this.getTypedRuleContext(SymbolicNameOrStringParameterListContext, 0) as SymbolicNameOrStringParameterListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_roleNames;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRoleNames) {
	 		listener.enterRoleNames(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRoleNames) {
	 		listener.exitRoleNames(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRoleNames) {
			return visitor.visitRoleNames(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DenyCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DENY(): TerminalNode {
		return this.getToken(CypherCmdParser.DENY, 0);
	}
	public privilege(): PrivilegeContext {
		return this.getTypedRuleContext(PrivilegeContext, 0) as PrivilegeContext;
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public IMMUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMMUTABLE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_denyCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDenyCommand) {
	 		listener.enterDenyCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDenyCommand) {
	 		listener.exitDenyCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDenyCommand) {
			return visitor.visitDenyCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeCommandContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REVOKE(): TerminalNode {
		return this.getToken(CypherCmdParser.REVOKE, 0);
	}
	public privilege(): PrivilegeContext {
		return this.getTypedRuleContext(PrivilegeContext, 0) as PrivilegeContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public roleToken(): RoleTokenContext {
		return this.getTypedRuleContext(RoleTokenContext, 0) as RoleTokenContext;
	}
	public revokeRole(): RevokeRoleContext {
		return this.getTypedRuleContext(RevokeRoleContext, 0) as RevokeRoleContext;
	}
	public IMMUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMMUTABLE, 0);
	}
	public DENY(): TerminalNode {
		return this.getToken(CypherCmdParser.DENY, 0);
	}
	public GRANT(): TerminalNode {
		return this.getToken(CypherCmdParser.GRANT, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_revokeCommand;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRevokeCommand) {
	 		listener.enterRevokeCommand(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRevokeCommand) {
	 		listener.exitRevokeCommand(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRevokeCommand) {
			return visitor.visitRevokeCommand(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RevokeRoleContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public roleNames(): RoleNamesContext {
		return this.getTypedRuleContext(RoleNamesContext, 0) as RoleNamesContext;
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public userNames(): UserNamesContext {
		return this.getTypedRuleContext(UserNamesContext, 0) as UserNamesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_revokeRole;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRevokeRole) {
	 		listener.enterRevokeRole(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRevokeRole) {
	 		listener.exitRevokeRole(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRevokeRole) {
			return visitor.visitRevokeRole(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public allPrivilege(): AllPrivilegeContext {
		return this.getTypedRuleContext(AllPrivilegeContext, 0) as AllPrivilegeContext;
	}
	public createPrivilege(): CreatePrivilegeContext {
		return this.getTypedRuleContext(CreatePrivilegeContext, 0) as CreatePrivilegeContext;
	}
	public databasePrivilege(): DatabasePrivilegeContext {
		return this.getTypedRuleContext(DatabasePrivilegeContext, 0) as DatabasePrivilegeContext;
	}
	public dbmsPrivilege(): DbmsPrivilegeContext {
		return this.getTypedRuleContext(DbmsPrivilegeContext, 0) as DbmsPrivilegeContext;
	}
	public dropPrivilege(): DropPrivilegeContext {
		return this.getTypedRuleContext(DropPrivilegeContext, 0) as DropPrivilegeContext;
	}
	public loadPrivilege(): LoadPrivilegeContext {
		return this.getTypedRuleContext(LoadPrivilegeContext, 0) as LoadPrivilegeContext;
	}
	public qualifiedGraphPrivileges(): QualifiedGraphPrivilegesContext {
		return this.getTypedRuleContext(QualifiedGraphPrivilegesContext, 0) as QualifiedGraphPrivilegesContext;
	}
	public qualifiedGraphPrivilegesWithProperty(): QualifiedGraphPrivilegesWithPropertyContext {
		return this.getTypedRuleContext(QualifiedGraphPrivilegesWithPropertyContext, 0) as QualifiedGraphPrivilegesWithPropertyContext;
	}
	public removePrivilege(): RemovePrivilegeContext {
		return this.getTypedRuleContext(RemovePrivilegeContext, 0) as RemovePrivilegeContext;
	}
	public setPrivilege(): SetPrivilegeContext {
		return this.getTypedRuleContext(SetPrivilegeContext, 0) as SetPrivilegeContext;
	}
	public showPrivilege(): ShowPrivilegeContext {
		return this.getTypedRuleContext(ShowPrivilegeContext, 0) as ShowPrivilegeContext;
	}
	public writePrivilege(): WritePrivilegeContext {
		return this.getTypedRuleContext(WritePrivilegeContext, 0) as WritePrivilegeContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_privilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPrivilege) {
	 		listener.enterPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPrivilege) {
	 		listener.exitPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPrivilege) {
			return visitor.visitPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AllPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public allPrivilegeTarget(): AllPrivilegeTargetContext {
		return this.getTypedRuleContext(AllPrivilegeTargetContext, 0) as AllPrivilegeTargetContext;
	}
	public allPrivilegeType(): AllPrivilegeTypeContext {
		return this.getTypedRuleContext(AllPrivilegeTypeContext, 0) as AllPrivilegeTypeContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_allPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAllPrivilege) {
	 		listener.enterAllPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAllPrivilege) {
	 		listener.exitAllPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAllPrivilege) {
			return visitor.visitAllPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AllPrivilegeTypeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGES, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_allPrivilegeType;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAllPrivilegeType) {
	 		listener.enterAllPrivilegeType(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAllPrivilegeType) {
	 		listener.exitAllPrivilegeType(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAllPrivilegeType) {
			return visitor.visitAllPrivilegeType(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AllPrivilegeTargetContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_allPrivilegeTarget;
	}
	public copyFrom(ctx: AllPrivilegeTargetContext): void {
		super.copyFrom(ctx);
	}
}
export class DefaultTargetContext extends AllPrivilegeTargetContext {
	constructor(parser: CypherCmdParser, ctx: AllPrivilegeTargetContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFAULT, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDefaultTarget) {
	 		listener.enterDefaultTarget(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDefaultTarget) {
	 		listener.exitDefaultTarget(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDefaultTarget) {
			return visitor.visitDefaultTarget(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DatabaseVariableTargetContext extends AllPrivilegeTargetContext {
	constructor(parser: CypherCmdParser, ctx: AllPrivilegeTargetContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public symbolicAliasNameList(): SymbolicAliasNameListContext {
		return this.getTypedRuleContext(SymbolicAliasNameListContext, 0) as SymbolicAliasNameListContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDatabaseVariableTarget) {
	 		listener.enterDatabaseVariableTarget(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDatabaseVariableTarget) {
	 		listener.exitDatabaseVariableTarget(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDatabaseVariableTarget) {
			return visitor.visitDatabaseVariableTarget(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class GraphVariableTargetContext extends AllPrivilegeTargetContext {
	constructor(parser: CypherCmdParser, ctx: AllPrivilegeTargetContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
	public GRAPHS(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPHS, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public symbolicAliasNameList(): SymbolicAliasNameListContext {
		return this.getTypedRuleContext(SymbolicAliasNameListContext, 0) as SymbolicAliasNameListContext;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGraphVariableTarget) {
	 		listener.enterGraphVariableTarget(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGraphVariableTarget) {
	 		listener.exitGraphVariableTarget(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGraphVariableTarget) {
			return visitor.visitGraphVariableTarget(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
export class DBMSTargetContext extends AllPrivilegeTargetContext {
	constructor(parser: CypherCmdParser, ctx: AllPrivilegeTargetContext) {
		super(parser, ctx.parentCtx, ctx.invokingState);
		super.copyFrom(ctx);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDBMSTarget) {
	 		listener.enterDBMSTarget(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDBMSTarget) {
	 		listener.exitDBMSTarget(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDBMSTarget) {
			return visitor.visitDBMSTarget(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatePrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CREATE(): TerminalNode {
		return this.getToken(CypherCmdParser.CREATE, 0);
	}
	public createPrivilegeForDatabase(): CreatePrivilegeForDatabaseContext {
		return this.getTypedRuleContext(CreatePrivilegeForDatabaseContext, 0) as CreatePrivilegeForDatabaseContext;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public databaseScope(): DatabaseScopeContext {
		return this.getTypedRuleContext(DatabaseScopeContext, 0) as DatabaseScopeContext;
	}
	public actionForDBMS(): ActionForDBMSContext {
		return this.getTypedRuleContext(ActionForDBMSContext, 0) as ActionForDBMSContext;
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
	public graphQualifier(): GraphQualifierContext {
		return this.getTypedRuleContext(GraphQualifierContext, 0) as GraphQualifierContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreatePrivilege) {
	 		listener.enterCreatePrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreatePrivilege) {
	 		listener.exitCreatePrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreatePrivilege) {
			return visitor.visitCreatePrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatePrivilegeForDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public createNodePrivilegeToken(): CreateNodePrivilegeTokenContext {
		return this.getTypedRuleContext(CreateNodePrivilegeTokenContext, 0) as CreateNodePrivilegeTokenContext;
	}
	public createRelPrivilegeToken(): CreateRelPrivilegeTokenContext {
		return this.getTypedRuleContext(CreateRelPrivilegeTokenContext, 0) as CreateRelPrivilegeTokenContext;
	}
	public createPropertyPrivilegeToken(): CreatePropertyPrivilegeTokenContext {
		return this.getTypedRuleContext(CreatePropertyPrivilegeTokenContext, 0) as CreatePropertyPrivilegeTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createPrivilegeForDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreatePrivilegeForDatabase) {
	 		listener.enterCreatePrivilegeForDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreatePrivilegeForDatabase) {
	 		listener.exitCreatePrivilegeForDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreatePrivilegeForDatabase) {
			return visitor.visitCreatePrivilegeForDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateNodePrivilegeTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NEW(): TerminalNode {
		return this.getToken(CypherCmdParser.NEW, 0);
	}
	public LABEL(): TerminalNode {
		return this.getToken(CypherCmdParser.LABEL, 0);
	}
	public LABELS(): TerminalNode {
		return this.getToken(CypherCmdParser.LABELS, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createNodePrivilegeToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateNodePrivilegeToken) {
	 		listener.enterCreateNodePrivilegeToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateNodePrivilegeToken) {
	 		listener.exitCreateNodePrivilegeToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateNodePrivilegeToken) {
			return visitor.visitCreateNodePrivilegeToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateRelPrivilegeTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NEW(): TerminalNode {
		return this.getToken(CypherCmdParser.NEW, 0);
	}
	public TYPE(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPE, 0);
	}
	public TYPES(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPES, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createRelPrivilegeToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateRelPrivilegeToken) {
	 		listener.enterCreateRelPrivilegeToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateRelPrivilegeToken) {
	 		listener.exitCreateRelPrivilegeToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateRelPrivilegeToken) {
			return visitor.visitCreateRelPrivilegeToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreatePropertyPrivilegeTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NEW(): TerminalNode {
		return this.getToken(CypherCmdParser.NEW, 0);
	}
	public NAME(): TerminalNode {
		return this.getToken(CypherCmdParser.NAME, 0);
	}
	public NAMES(): TerminalNode {
		return this.getToken(CypherCmdParser.NAMES, 0);
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createPropertyPrivilegeToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreatePropertyPrivilegeToken) {
	 		listener.enterCreatePropertyPrivilegeToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreatePropertyPrivilegeToken) {
	 		listener.exitCreatePropertyPrivilegeToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreatePropertyPrivilegeToken) {
			return visitor.visitCreatePropertyPrivilegeToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ActionForDBMSContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public COMPOSITE(): TerminalNode {
		return this.getToken(CypherCmdParser.COMPOSITE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_actionForDBMS;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterActionForDBMS) {
	 		listener.enterActionForDBMS(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitActionForDBMS) {
	 		listener.exitActionForDBMS(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitActionForDBMS) {
			return visitor.visitActionForDBMS(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DROP(): TerminalNode {
		return this.getToken(CypherCmdParser.DROP, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public databaseScope(): DatabaseScopeContext {
		return this.getTypedRuleContext(DatabaseScopeContext, 0) as DatabaseScopeContext;
	}
	public actionForDBMS(): ActionForDBMSContext {
		return this.getTypedRuleContext(ActionForDBMSContext, 0) as ActionForDBMSContext;
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropPrivilege) {
	 		listener.enterDropPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropPrivilege) {
	 		listener.exitDropPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropPrivilege) {
			return visitor.visitDropPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LoadPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LOAD(): TerminalNode {
		return this.getToken(CypherCmdParser.LOAD, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(CypherCmdParser.DATA, 0);
	}
	public URL(): TerminalNode {
		return this.getToken(CypherCmdParser.URL, 0);
	}
	public CIDR(): TerminalNode {
		return this.getToken(CypherCmdParser.CIDR, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_loadPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLoadPrivilege) {
	 		listener.enterLoadPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLoadPrivilege) {
	 		listener.exitLoadPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLoadPrivilege) {
			return visitor.visitLoadPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SHOW(): TerminalNode {
		return this.getToken(CypherCmdParser.SHOW, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public databaseScope(): DatabaseScopeContext {
		return this.getTypedRuleContext(DatabaseScopeContext, 0) as DatabaseScopeContext;
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public transactionToken(): TransactionTokenContext {
		return this.getTypedRuleContext(TransactionTokenContext, 0) as TransactionTokenContext;
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public PRIVILEGE(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public SERVERS(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVERS, 0);
	}
	public settingToken(): SettingTokenContext {
		return this.getTypedRuleContext(SettingTokenContext, 0) as SettingTokenContext;
	}
	public settingQualifier(): SettingQualifierContext {
		return this.getTypedRuleContext(SettingQualifierContext, 0) as SettingQualifierContext;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public userQualifier(): UserQualifierContext {
		return this.getTypedRuleContext(UserQualifierContext, 0) as UserQualifierContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowPrivilege) {
	 		listener.enterShowPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowPrivilege) {
	 		listener.exitShowPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowPrivilege) {
			return visitor.visitShowPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SetPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public LABEL(): TerminalNode {
		return this.getToken(CypherCmdParser.LABEL, 0);
	}
	public labelsResource(): LabelsResourceContext {
		return this.getTypedRuleContext(LabelsResourceContext, 0) as LabelsResourceContext;
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
	public propertiesResource(): PropertiesResourceContext {
		return this.getTypedRuleContext(PropertiesResourceContext, 0) as PropertiesResourceContext;
	}
	public graphQualifier(): GraphQualifierContext {
		return this.getTypedRuleContext(GraphQualifierContext, 0) as GraphQualifierContext;
	}
	public passwordToken(): PasswordTokenContext {
		return this.getTypedRuleContext(PasswordTokenContext, 0) as PasswordTokenContext;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public ACCESS(): TerminalNode {
		return this.getToken(CypherCmdParser.ACCESS, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(CypherCmdParser.STATUS, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_setPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSetPrivilege) {
	 		listener.enterSetPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSetPrivilege) {
	 		listener.exitSetPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSetPrivilege) {
			return visitor.visitSetPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PasswordTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public PASSWORDS(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORDS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_passwordToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPasswordToken) {
	 		listener.enterPasswordToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPasswordToken) {
	 		listener.exitPasswordToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPasswordToken) {
			return visitor.visitPasswordToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RemovePrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public REMOVE(): TerminalNode {
		return this.getToken(CypherCmdParser.REMOVE, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public LABEL(): TerminalNode {
		return this.getToken(CypherCmdParser.LABEL, 0);
	}
	public labelsResource(): LabelsResourceContext {
		return this.getTypedRuleContext(LabelsResourceContext, 0) as LabelsResourceContext;
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
	public PRIVILEGE(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_removePrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRemovePrivilege) {
	 		listener.enterRemovePrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRemovePrivilege) {
	 		listener.exitRemovePrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRemovePrivilege) {
			return visitor.visitRemovePrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WritePrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WRITE(): TerminalNode {
		return this.getToken(CypherCmdParser.WRITE, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_writePrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWritePrivilege) {
	 		listener.enterWritePrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWritePrivilege) {
	 		listener.exitWritePrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWritePrivilege) {
			return visitor.visitWritePrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DatabasePrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public databaseScope(): DatabaseScopeContext {
		return this.getTypedRuleContext(DatabaseScopeContext, 0) as DatabaseScopeContext;
	}
	public ACCESS(): TerminalNode {
		return this.getToken(CypherCmdParser.ACCESS, 0);
	}
	public START(): TerminalNode {
		return this.getToken(CypherCmdParser.START, 0);
	}
	public STOP(): TerminalNode {
		return this.getToken(CypherCmdParser.STOP, 0);
	}
	public indexToken(): IndexTokenContext {
		return this.getTypedRuleContext(IndexTokenContext, 0) as IndexTokenContext;
	}
	public constraintToken(): ConstraintTokenContext {
		return this.getTypedRuleContext(ConstraintTokenContext, 0) as ConstraintTokenContext;
	}
	public NAME(): TerminalNode {
		return this.getToken(CypherCmdParser.NAME, 0);
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTION, 0);
	}
	public TERMINATE(): TerminalNode {
		return this.getToken(CypherCmdParser.TERMINATE, 0);
	}
	public transactionToken(): TransactionTokenContext {
		return this.getTypedRuleContext(TransactionTokenContext, 0) as TransactionTokenContext;
	}
	public MANAGEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.MANAGEMENT, 0);
	}
	public userQualifier(): UserQualifierContext {
		return this.getTypedRuleContext(UserQualifierContext, 0) as UserQualifierContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_databasePrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDatabasePrivilege) {
	 		listener.enterDatabasePrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDatabasePrivilege) {
	 		listener.exitDatabasePrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDatabasePrivilege) {
			return visitor.visitDatabasePrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbmsPrivilegeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public ALTER(): TerminalNode {
		return this.getToken(CypherCmdParser.ALTER, 0);
	}
	public ASSIGN(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSIGN, 0);
	}
	public MANAGEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.MANAGEMENT, 0);
	}
	public dbmsPrivilegeExecute(): DbmsPrivilegeExecuteContext {
		return this.getTypedRuleContext(DbmsPrivilegeExecuteContext, 0) as DbmsPrivilegeExecuteContext;
	}
	public RENAME(): TerminalNode {
		return this.getToken(CypherCmdParser.RENAME, 0);
	}
	public IMPERSONATE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMPERSONATE, 0);
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public PRIVILEGE(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public userQualifier(): UserQualifierContext {
		return this.getTypedRuleContext(UserQualifierContext, 0) as UserQualifierContext;
	}
	public COMPOSITE(): TerminalNode {
		return this.getToken(CypherCmdParser.COMPOSITE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dbmsPrivilege;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDbmsPrivilege) {
	 		listener.enterDbmsPrivilege(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDbmsPrivilege) {
	 		listener.exitDbmsPrivilege(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDbmsPrivilege) {
			return visitor.visitDbmsPrivilege(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DbmsPrivilegeExecuteContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EXECUTE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXECUTE, 0);
	}
	public adminToken(): AdminTokenContext {
		return this.getTypedRuleContext(AdminTokenContext, 0) as AdminTokenContext;
	}
	public PROCEDURES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURES, 0);
	}
	public procedureToken(): ProcedureTokenContext {
		return this.getTypedRuleContext(ProcedureTokenContext, 0) as ProcedureTokenContext;
	}
	public executeProcedureQualifier(): ExecuteProcedureQualifierContext {
		return this.getTypedRuleContext(ExecuteProcedureQualifierContext, 0) as ExecuteProcedureQualifierContext;
	}
	public functionToken(): FunctionTokenContext {
		return this.getTypedRuleContext(FunctionTokenContext, 0) as FunctionTokenContext;
	}
	public executeFunctionQualifier(): ExecuteFunctionQualifierContext {
		return this.getTypedRuleContext(ExecuteFunctionQualifierContext, 0) as ExecuteFunctionQualifierContext;
	}
	public BOOSTED(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOSTED, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public DEFINED(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFINED, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dbmsPrivilegeExecute;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDbmsPrivilegeExecute) {
	 		listener.enterDbmsPrivilegeExecute(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDbmsPrivilegeExecute) {
	 		listener.exitDbmsPrivilegeExecute(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDbmsPrivilegeExecute) {
			return visitor.visitDbmsPrivilegeExecute(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AdminTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ADMIN(): TerminalNode {
		return this.getToken(CypherCmdParser.ADMIN, 0);
	}
	public ADMINISTRATOR(): TerminalNode {
		return this.getToken(CypherCmdParser.ADMINISTRATOR, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_adminToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAdminToken) {
	 		listener.enterAdminToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAdminToken) {
	 		listener.exitAdminToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAdminToken) {
			return visitor.visitAdminToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ProcedureTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURE, 0);
	}
	public PROCEDURES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_procedureToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterProcedureToken) {
	 		listener.enterProcedureToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitProcedureToken) {
	 		listener.exitProcedureToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitProcedureToken) {
			return visitor.visitProcedureToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class IndexTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public INDEX(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEX, 0);
	}
	public INDEXES(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEXES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_indexToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterIndexToken) {
	 		listener.enterIndexToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitIndexToken) {
	 		listener.exitIndexToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitIndexToken) {
			return visitor.visitIndexToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ConstraintTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINT, 0);
	}
	public CONSTRAINTS(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_constraintToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterConstraintToken) {
	 		listener.enterConstraintToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitConstraintToken) {
	 		listener.exitConstraintToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitConstraintToken) {
			return visitor.visitConstraintToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class TransactionTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTION, 0);
	}
	public TRANSACTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTIONS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_transactionToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterTransactionToken) {
	 		listener.enterTransactionToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitTransactionToken) {
	 		listener.exitTransactionToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitTransactionToken) {
			return visitor.visitTransactionToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UserQualifierContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public userNames(): UserNamesContext {
		return this.getTypedRuleContext(UserNamesContext, 0) as UserNamesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_userQualifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUserQualifier) {
	 		listener.enterUserQualifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUserQualifier) {
	 		listener.exitUserQualifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUserQualifier) {
			return visitor.visitUserQualifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteFunctionQualifierContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public globs(): GlobsContext {
		return this.getTypedRuleContext(GlobsContext, 0) as GlobsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_executeFunctionQualifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExecuteFunctionQualifier) {
	 		listener.enterExecuteFunctionQualifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExecuteFunctionQualifier) {
	 		listener.exitExecuteFunctionQualifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExecuteFunctionQualifier) {
			return visitor.visitExecuteFunctionQualifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ExecuteProcedureQualifierContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public globs(): GlobsContext {
		return this.getTypedRuleContext(GlobsContext, 0) as GlobsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_executeProcedureQualifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterExecuteProcedureQualifier) {
	 		listener.enterExecuteProcedureQualifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitExecuteProcedureQualifier) {
	 		listener.exitExecuteProcedureQualifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitExecuteProcedureQualifier) {
			return visitor.visitExecuteProcedureQualifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SettingQualifierContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public globs(): GlobsContext {
		return this.getTypedRuleContext(GlobsContext, 0) as GlobsContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_settingQualifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSettingQualifier) {
	 		listener.enterSettingQualifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSettingQualifier) {
	 		listener.exitSettingQualifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSettingQualifier) {
			return visitor.visitSettingQualifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GlobsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public glob_list(): GlobContext[] {
		return this.getTypedRuleContexts(GlobContext) as GlobContext[];
	}
	public glob(i: number): GlobContext {
		return this.getTypedRuleContext(GlobContext, i) as GlobContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_globs;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGlobs) {
	 		listener.enterGlobs(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGlobs) {
	 		listener.exitGlobs(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGlobs) {
			return visitor.visitGlobs(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QualifiedGraphPrivilegesWithPropertyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
	public graphQualifier(): GraphQualifierContext {
		return this.getTypedRuleContext(GraphQualifierContext, 0) as GraphQualifierContext;
	}
	public TRAVERSE(): TerminalNode {
		return this.getToken(CypherCmdParser.TRAVERSE, 0);
	}
	public propertiesResource(): PropertiesResourceContext {
		return this.getTypedRuleContext(PropertiesResourceContext, 0) as PropertiesResourceContext;
	}
	public READ(): TerminalNode {
		return this.getToken(CypherCmdParser.READ, 0);
	}
	public MATCH(): TerminalNode {
		return this.getToken(CypherCmdParser.MATCH, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_qualifiedGraphPrivilegesWithProperty;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterQualifiedGraphPrivilegesWithProperty) {
	 		listener.enterQualifiedGraphPrivilegesWithProperty(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitQualifiedGraphPrivilegesWithProperty) {
	 		listener.exitQualifiedGraphPrivilegesWithProperty(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitQualifiedGraphPrivilegesWithProperty) {
			return visitor.visitQualifiedGraphPrivilegesWithProperty(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class QualifiedGraphPrivilegesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public graphScope(): GraphScopeContext {
		return this.getTypedRuleContext(GraphScopeContext, 0) as GraphScopeContext;
	}
	public graphQualifier(): GraphQualifierContext {
		return this.getTypedRuleContext(GraphQualifierContext, 0) as GraphQualifierContext;
	}
	public DELETE(): TerminalNode {
		return this.getToken(CypherCmdParser.DELETE, 0);
	}
	public MERGE(): TerminalNode {
		return this.getToken(CypherCmdParser.MERGE, 0);
	}
	public propertiesResource(): PropertiesResourceContext {
		return this.getTypedRuleContext(PropertiesResourceContext, 0) as PropertiesResourceContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_qualifiedGraphPrivileges;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterQualifiedGraphPrivileges) {
	 		listener.enterQualifiedGraphPrivileges(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitQualifiedGraphPrivileges) {
	 		listener.exitQualifiedGraphPrivileges(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitQualifiedGraphPrivileges) {
			return visitor.visitQualifiedGraphPrivileges(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class LabelsResourceContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public nonEmptyStringList(): NonEmptyStringListContext {
		return this.getTypedRuleContext(NonEmptyStringListContext, 0) as NonEmptyStringListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_labelsResource;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterLabelsResource) {
	 		listener.enterLabelsResource(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitLabelsResource) {
	 		listener.exitLabelsResource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitLabelsResource) {
			return visitor.visitLabelsResource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PropertiesResourceContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public nonEmptyStringList(): NonEmptyStringListContext {
		return this.getTypedRuleContext(NonEmptyStringListContext, 0) as NonEmptyStringListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_propertiesResource;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPropertiesResource) {
	 		listener.enterPropertiesResource(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPropertiesResource) {
	 		listener.exitPropertiesResource(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPropertiesResource) {
			return visitor.visitPropertiesResource(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NonEmptyStringListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nonEmptyStringList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNonEmptyStringList) {
	 		listener.enterNonEmptyStringList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNonEmptyStringList) {
	 		listener.exitNonEmptyStringList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNonEmptyStringList) {
			return visitor.visitNonEmptyStringList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GraphQualifierContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public graphQualifierToken(): GraphQualifierTokenContext {
		return this.getTypedRuleContext(GraphQualifierTokenContext, 0) as GraphQualifierTokenContext;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public LPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.LPAREN, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public nonEmptyStringList(): NonEmptyStringListContext {
		return this.getTypedRuleContext(NonEmptyStringListContext, 0) as NonEmptyStringListContext;
	}
	public RPAREN(): TerminalNode {
		return this.getToken(CypherCmdParser.RPAREN, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
	public variable(): VariableContext {
		return this.getTypedRuleContext(VariableContext, 0) as VariableContext;
	}
	public COLON(): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, 0);
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public map(): MapContext {
		return this.getTypedRuleContext(MapContext, 0) as MapContext;
	}
	public BAR_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.BAR);
	}
	public BAR(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.BAR, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_graphQualifier;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGraphQualifier) {
	 		listener.enterGraphQualifier(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGraphQualifier) {
	 		listener.exitGraphQualifier(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGraphQualifier) {
			return visitor.visitGraphQualifier(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GraphQualifierTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public relToken(): RelTokenContext {
		return this.getTypedRuleContext(RelTokenContext, 0) as RelTokenContext;
	}
	public nodeToken(): NodeTokenContext {
		return this.getTypedRuleContext(NodeTokenContext, 0) as NodeTokenContext;
	}
	public elementToken(): ElementTokenContext {
		return this.getTypedRuleContext(ElementTokenContext, 0) as ElementTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_graphQualifierToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGraphQualifierToken) {
	 		listener.enterGraphQualifierToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGraphQualifierToken) {
	 		listener.exitGraphQualifierToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGraphQualifierToken) {
			return visitor.visitGraphQualifierToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class RelTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public RELATIONSHIPS(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIPS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_relToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterRelToken) {
	 		listener.enterRelToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitRelToken) {
	 		listener.exitRelToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitRelToken) {
			return visitor.visitRelToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ElementTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ELEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENT, 0);
	}
	public ELEMENTS(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_elementToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterElementToken) {
	 		listener.enterElementToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitElementToken) {
	 		listener.exitElementToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitElementToken) {
			return visitor.visitElementToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class NodeTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public NODES(): TerminalNode {
		return this.getToken(CypherCmdParser.NODES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_nodeToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterNodeToken) {
	 		listener.enterNodeToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitNodeToken) {
	 		listener.exitNodeToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitNodeToken) {
			return visitor.visitNodeToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateCompositeDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public COMPOSITE(): TerminalNode {
		return this.getToken(CypherCmdParser.COMPOSITE, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createCompositeDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateCompositeDatabase) {
	 		listener.enterCreateCompositeDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateCompositeDatabase) {
	 		listener.exitCreateCompositeDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateCompositeDatabase) {
			return visitor.visitCreateCompositeDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public TOPOLOGY(): TerminalNode {
		return this.getToken(CypherCmdParser.TOPOLOGY, 0);
	}
	public commandOptions(): CommandOptionsContext {
		return this.getTypedRuleContext(CommandOptionsContext, 0) as CommandOptionsContext;
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
	public primaryTopology_list(): PrimaryTopologyContext[] {
		return this.getTypedRuleContexts(PrimaryTopologyContext) as PrimaryTopologyContext[];
	}
	public primaryTopology(i: number): PrimaryTopologyContext {
		return this.getTypedRuleContext(PrimaryTopologyContext, i) as PrimaryTopologyContext;
	}
	public secondaryTopology_list(): SecondaryTopologyContext[] {
		return this.getTypedRuleContexts(SecondaryTopologyContext) as SecondaryTopologyContext[];
	}
	public secondaryTopology(i: number): SecondaryTopologyContext {
		return this.getTypedRuleContext(SecondaryTopologyContext, i) as SecondaryTopologyContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateDatabase) {
	 		listener.enterCreateDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateDatabase) {
	 		listener.exitCreateDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateDatabase) {
			return visitor.visitCreateDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrimaryTopologyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public primaryToken(): PrimaryTokenContext {
		return this.getTypedRuleContext(PrimaryTokenContext, 0) as PrimaryTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_primaryTopology;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPrimaryTopology) {
	 		listener.enterPrimaryTopology(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPrimaryTopology) {
	 		listener.exitPrimaryTopology(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPrimaryTopology) {
			return visitor.visitPrimaryTopology(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class PrimaryTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIMARY, 0);
	}
	public PRIMARIES(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIMARIES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_primaryToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterPrimaryToken) {
	 		listener.enterPrimaryToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitPrimaryToken) {
	 		listener.exitPrimaryToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitPrimaryToken) {
			return visitor.visitPrimaryToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SecondaryTopologyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public secondaryToken(): SecondaryTokenContext {
		return this.getTypedRuleContext(SecondaryTokenContext, 0) as SecondaryTokenContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_secondaryTopology;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSecondaryTopology) {
	 		listener.enterSecondaryTopology(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSecondaryTopology) {
	 		listener.exitSecondaryTopology(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSecondaryTopology) {
			return visitor.visitSecondaryTopology(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SecondaryTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SECONDARY(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDARY, 0);
	}
	public SECONDARIES(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDARIES, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_secondaryToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSecondaryToken) {
	 		listener.enterSecondaryToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSecondaryToken) {
	 		listener.exitSecondaryToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSecondaryToken) {
			return visitor.visitSecondaryToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public COMPOSITE(): TerminalNode {
		return this.getToken(CypherCmdParser.COMPOSITE, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(CypherCmdParser.DATA, 0);
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
	public DUMP(): TerminalNode {
		return this.getToken(CypherCmdParser.DUMP, 0);
	}
	public DESTROY(): TerminalNode {
		return this.getToken(CypherCmdParser.DESTROY, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropDatabase) {
	 		listener.enterDropDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropDatabase) {
	 		listener.exitDropDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropDatabase) {
			return visitor.visitDropDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
	public SET_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.SET);
	}
	public SET(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.SET, i);
	}
	public REMOVE_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.REMOVE);
	}
	public REMOVE(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.REMOVE, i);
	}
	public OPTION_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.OPTION);
	}
	public OPTION(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.OPTION, i);
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public alterDatabaseAccess_list(): AlterDatabaseAccessContext[] {
		return this.getTypedRuleContexts(AlterDatabaseAccessContext) as AlterDatabaseAccessContext[];
	}
	public alterDatabaseAccess(i: number): AlterDatabaseAccessContext {
		return this.getTypedRuleContext(AlterDatabaseAccessContext, i) as AlterDatabaseAccessContext;
	}
	public alterDatabaseTopology_list(): AlterDatabaseTopologyContext[] {
		return this.getTypedRuleContexts(AlterDatabaseTopologyContext) as AlterDatabaseTopologyContext[];
	}
	public alterDatabaseTopology(i: number): AlterDatabaseTopologyContext {
		return this.getTypedRuleContext(AlterDatabaseTopologyContext, i) as AlterDatabaseTopologyContext;
	}
	public alterDatabaseOption_list(): AlterDatabaseOptionContext[] {
		return this.getTypedRuleContexts(AlterDatabaseOptionContext) as AlterDatabaseOptionContext[];
	}
	public alterDatabaseOption(i: number): AlterDatabaseOptionContext {
		return this.getTypedRuleContext(AlterDatabaseOptionContext, i) as AlterDatabaseOptionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterDatabase) {
	 		listener.enterAlterDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterDatabase) {
	 		listener.exitAlterDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabase) {
			return visitor.visitAlterDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseAccessContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ACCESS(): TerminalNode {
		return this.getToken(CypherCmdParser.ACCESS, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(CypherCmdParser.READ, 0);
	}
	public ONLY(): TerminalNode {
		return this.getToken(CypherCmdParser.ONLY, 0);
	}
	public WRITE(): TerminalNode {
		return this.getToken(CypherCmdParser.WRITE, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterDatabaseAccess;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterDatabaseAccess) {
	 		listener.enterAlterDatabaseAccess(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterDatabaseAccess) {
	 		listener.exitAlterDatabaseAccess(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseAccess) {
			return visitor.visitAlterDatabaseAccess(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseTopologyContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TOPOLOGY(): TerminalNode {
		return this.getToken(CypherCmdParser.TOPOLOGY, 0);
	}
	public primaryTopology_list(): PrimaryTopologyContext[] {
		return this.getTypedRuleContexts(PrimaryTopologyContext) as PrimaryTopologyContext[];
	}
	public primaryTopology(i: number): PrimaryTopologyContext {
		return this.getTypedRuleContext(PrimaryTopologyContext, i) as PrimaryTopologyContext;
	}
	public secondaryTopology_list(): SecondaryTopologyContext[] {
		return this.getTypedRuleContexts(SecondaryTopologyContext) as SecondaryTopologyContext[];
	}
	public secondaryTopology(i: number): SecondaryTopologyContext {
		return this.getTypedRuleContext(SecondaryTopologyContext, i) as SecondaryTopologyContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterDatabaseTopology;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterDatabaseTopology) {
	 		listener.enterAlterDatabaseTopology(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterDatabaseTopology) {
	 		listener.exitAlterDatabaseTopology(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseTopology) {
			return visitor.visitAlterDatabaseTopology(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterDatabaseOptionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public OPTION(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTION, 0);
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public expression(): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterDatabaseOption;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterDatabaseOption) {
	 		listener.enterAlterDatabaseOption(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterDatabaseOption) {
	 		listener.exitAlterDatabaseOption(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterDatabaseOption) {
			return visitor.visitAlterDatabaseOption(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StartDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public START(): TerminalNode {
		return this.getToken(CypherCmdParser.START, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_startDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStartDatabase) {
	 		listener.enterStartDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStartDatabase) {
	 		listener.exitStartDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStartDatabase) {
			return visitor.visitStartDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StopDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STOP(): TerminalNode {
		return this.getToken(CypherCmdParser.STOP, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public waitClause(): WaitClauseContext {
		return this.getTypedRuleContext(WaitClauseContext, 0) as WaitClauseContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_stopDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStopDatabase) {
	 		listener.enterStopDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStopDatabase) {
	 		listener.exitStopDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStopDatabase) {
			return visitor.visitStopDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class WaitClauseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public WAIT(): TerminalNode {
		return this.getToken(CypherCmdParser.WAIT, 0);
	}
	public UNSIGNED_DECIMAL_INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.UNSIGNED_DECIMAL_INTEGER, 0);
	}
	public secondsToken(): SecondsTokenContext {
		return this.getTypedRuleContext(SecondsTokenContext, 0) as SecondsTokenContext;
	}
	public NOWAIT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOWAIT, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_waitClause;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterWaitClause) {
	 		listener.enterWaitClause(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitWaitClause) {
	 		listener.exitWaitClause(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitWaitClause) {
			return visitor.visitWaitClause(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SecondsTokenContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public SEC(): TerminalNode {
		return this.getToken(CypherCmdParser.SEC, 0);
	}
	public SECOND(): TerminalNode {
		return this.getToken(CypherCmdParser.SECOND, 0);
	}
	public SECONDS(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_secondsToken;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSecondsToken) {
	 		listener.enterSecondsToken(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSecondsToken) {
	 		listener.exitSecondsToken(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSecondsToken) {
			return visitor.visitSecondsToken(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowDatabaseContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFAULT, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showDatabase;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowDatabase) {
	 		listener.enterShowDatabase(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowDatabase) {
	 		listener.exitShowDatabase(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowDatabase) {
			return visitor.visitShowDatabase(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DatabaseScopeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFAULT, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public symbolicAliasNameList(): SymbolicAliasNameListContext {
		return this.getTypedRuleContext(SymbolicAliasNameListContext, 0) as SymbolicAliasNameListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_databaseScope;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDatabaseScope) {
	 		listener.enterDatabaseScope(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDatabaseScope) {
	 		listener.exitDatabaseScope(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDatabaseScope) {
			return visitor.visitDatabaseScope(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GraphScopeContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFAULT, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public GRAPHS(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPHS, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public symbolicAliasNameList(): SymbolicAliasNameListContext {
		return this.getTypedRuleContext(SymbolicAliasNameListContext, 0) as SymbolicAliasNameListContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_graphScope;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGraphScope) {
	 		listener.enterGraphScope(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGraphScope) {
	 		listener.exitGraphScope(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGraphScope) {
			return visitor.visitGraphScope(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommandOptionsContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public OPTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTIONS, 0);
	}
	public mapOrParameter(): MapOrParameterContext {
		return this.getTypedRuleContext(MapOrParameterContext, 0) as MapOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_commandOptions;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCommandOptions) {
	 		listener.enterCommandOptions(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCommandOptions) {
	 		listener.exitCommandOptions(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCommandOptions) {
			return visitor.visitCommandOptions(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CommandNameExpressionContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_commandNameExpression;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCommandNameExpression) {
	 		listener.enterCommandNameExpression(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCommandNameExpression) {
	 		listener.exitCommandNameExpression(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCommandNameExpression) {
			return visitor.visitCommandNameExpression(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicNameOrStringParameterContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString(): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, 0) as SymbolicNameStringContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicNameOrStringParameter;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicNameOrStringParameter) {
	 		listener.enterSymbolicNameOrStringParameter(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicNameOrStringParameter) {
	 		listener.exitSymbolicNameOrStringParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicNameOrStringParameter) {
			return visitor.visitSymbolicNameOrStringParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class CreateAliasContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public symbolicAliasNameOrParameter_list(): SymbolicAliasNameOrParameterContext[] {
		return this.getTypedRuleContexts(SymbolicAliasNameOrParameterContext) as SymbolicAliasNameOrParameterContext[];
	}
	public symbolicAliasNameOrParameter(i: number): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, i) as SymbolicAliasNameOrParameterContext;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public AT(): TerminalNode {
		return this.getToken(CypherCmdParser.AT, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public passwordExpression(): PasswordExpressionContext {
		return this.getTypedRuleContext(PasswordExpressionContext, 0) as PasswordExpressionContext;
	}
	public PROPERTIES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTIES, 0);
	}
	public mapOrParameter_list(): MapOrParameterContext[] {
		return this.getTypedRuleContexts(MapOrParameterContext) as MapOrParameterContext[];
	}
	public mapOrParameter(i: number): MapOrParameterContext {
		return this.getTypedRuleContext(MapOrParameterContext, i) as MapOrParameterContext;
	}
	public DRIVER(): TerminalNode {
		return this.getToken(CypherCmdParser.DRIVER, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_createAlias;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterCreateAlias) {
	 		listener.enterCreateAlias(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitCreateAlias) {
	 		listener.exitCreateAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitCreateAlias) {
			return visitor.visitCreateAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class DropAliasContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_dropAlias;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterDropAlias) {
	 		listener.enterDropAlias(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitDropAlias) {
	 		listener.exitDropAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitDropAlias) {
			return visitor.visitDropAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public alterAliasTarget_list(): AlterAliasTargetContext[] {
		return this.getTypedRuleContexts(AlterAliasTargetContext) as AlterAliasTargetContext[];
	}
	public alterAliasTarget(i: number): AlterAliasTargetContext {
		return this.getTypedRuleContext(AlterAliasTargetContext, i) as AlterAliasTargetContext;
	}
	public alterAliasUser_list(): AlterAliasUserContext[] {
		return this.getTypedRuleContexts(AlterAliasUserContext) as AlterAliasUserContext[];
	}
	public alterAliasUser(i: number): AlterAliasUserContext {
		return this.getTypedRuleContext(AlterAliasUserContext, i) as AlterAliasUserContext;
	}
	public alterAliasPassword_list(): AlterAliasPasswordContext[] {
		return this.getTypedRuleContexts(AlterAliasPasswordContext) as AlterAliasPasswordContext[];
	}
	public alterAliasPassword(i: number): AlterAliasPasswordContext {
		return this.getTypedRuleContext(AlterAliasPasswordContext, i) as AlterAliasPasswordContext;
	}
	public alterAliasDriver_list(): AlterAliasDriverContext[] {
		return this.getTypedRuleContexts(AlterAliasDriverContext) as AlterAliasDriverContext[];
	}
	public alterAliasDriver(i: number): AlterAliasDriverContext {
		return this.getTypedRuleContext(AlterAliasDriverContext, i) as AlterAliasDriverContext;
	}
	public alterAliasProperties_list(): AlterAliasPropertiesContext[] {
		return this.getTypedRuleContexts(AlterAliasPropertiesContext) as AlterAliasPropertiesContext[];
	}
	public alterAliasProperties(i: number): AlterAliasPropertiesContext {
		return this.getTypedRuleContext(AlterAliasPropertiesContext, i) as AlterAliasPropertiesContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAlias;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAlias) {
	 		listener.enterAlterAlias(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAlias) {
	 		listener.exitAlterAlias(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAlias) {
			return visitor.visitAlterAlias(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasTargetContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public TARGET(): TerminalNode {
		return this.getToken(CypherCmdParser.TARGET, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public AT(): TerminalNode {
		return this.getToken(CypherCmdParser.AT, 0);
	}
	public stringOrParameter(): StringOrParameterContext {
		return this.getTypedRuleContext(StringOrParameterContext, 0) as StringOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAliasTarget;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAliasTarget) {
	 		listener.enterAlterAliasTarget(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAliasTarget) {
	 		listener.exitAlterAliasTarget(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAliasTarget) {
			return visitor.visitAlterAliasTarget(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasUserContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public commandNameExpression(): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, 0) as CommandNameExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAliasUser;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAliasUser) {
	 		listener.enterAlterAliasUser(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAliasUser) {
	 		listener.exitAlterAliasUser(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAliasUser) {
			return visitor.visitAlterAliasUser(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasPasswordContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public passwordExpression(): PasswordExpressionContext {
		return this.getTypedRuleContext(PasswordExpressionContext, 0) as PasswordExpressionContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAliasPassword;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAliasPassword) {
	 		listener.enterAlterAliasPassword(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAliasPassword) {
	 		listener.exitAlterAliasPassword(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAliasPassword) {
			return visitor.visitAlterAliasPassword(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasDriverContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DRIVER(): TerminalNode {
		return this.getToken(CypherCmdParser.DRIVER, 0);
	}
	public mapOrParameter(): MapOrParameterContext {
		return this.getTypedRuleContext(MapOrParameterContext, 0) as MapOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAliasDriver;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAliasDriver) {
	 		listener.enterAlterAliasDriver(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAliasDriver) {
	 		listener.exitAlterAliasDriver(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAliasDriver) {
			return visitor.visitAlterAliasDriver(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class AlterAliasPropertiesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public PROPERTIES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTIES, 0);
	}
	public mapOrParameter(): MapOrParameterContext {
		return this.getTypedRuleContext(MapOrParameterContext, 0) as MapOrParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_alterAliasProperties;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterAlterAliasProperties) {
	 		listener.enterAlterAliasProperties(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitAlterAliasProperties) {
	 		listener.exitAlterAliasProperties(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitAlterAliasProperties) {
			return visitor.visitAlterAliasProperties(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class ShowAliasesContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public ALIASES(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIASES, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public symbolicAliasNameOrParameter(): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, 0) as SymbolicAliasNameOrParameterContext;
	}
	public showCommandYield(): ShowCommandYieldContext {
		return this.getTypedRuleContext(ShowCommandYieldContext, 0) as ShowCommandYieldContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_showAliases;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterShowAliases) {
	 		listener.enterShowAliases(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitShowAliases) {
	 		listener.exitShowAliases(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitShowAliases) {
			return visitor.visitShowAliases(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicAliasNameListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicAliasNameOrParameter_list(): SymbolicAliasNameOrParameterContext[] {
		return this.getTypedRuleContexts(SymbolicAliasNameOrParameterContext) as SymbolicAliasNameOrParameterContext[];
	}
	public symbolicAliasNameOrParameter(i: number): SymbolicAliasNameOrParameterContext {
		return this.getTypedRuleContext(SymbolicAliasNameOrParameterContext, i) as SymbolicAliasNameOrParameterContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicAliasNameList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicAliasNameList) {
	 		listener.enterSymbolicAliasNameList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicAliasNameList) {
	 		listener.exitSymbolicAliasNameList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicAliasNameList) {
			return visitor.visitSymbolicAliasNameList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicAliasNameOrParameterContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicAliasName(): SymbolicAliasNameContext {
		return this.getTypedRuleContext(SymbolicAliasNameContext, 0) as SymbolicAliasNameContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicAliasNameOrParameter;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicAliasNameOrParameter) {
	 		listener.enterSymbolicAliasNameOrParameter(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicAliasNameOrParameter) {
	 		listener.exitSymbolicAliasNameOrParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicAliasNameOrParameter) {
			return visitor.visitSymbolicAliasNameOrParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicAliasNameContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public symbolicNameString_list(): SymbolicNameStringContext[] {
		return this.getTypedRuleContexts(SymbolicNameStringContext) as SymbolicNameStringContext[];
	}
	public symbolicNameString(i: number): SymbolicNameStringContext {
		return this.getTypedRuleContext(SymbolicNameStringContext, i) as SymbolicNameStringContext;
	}
	public DOT_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.DOT);
	}
	public DOT(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.DOT, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicAliasName;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicAliasName) {
	 		listener.enterSymbolicAliasName(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicAliasName) {
	 		listener.exitSymbolicAliasName(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicAliasName) {
			return visitor.visitSymbolicAliasName(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicNameOrStringParameterListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public commandNameExpression_list(): CommandNameExpressionContext[] {
		return this.getTypedRuleContexts(CommandNameExpressionContext) as CommandNameExpressionContext[];
	}
	public commandNameExpression(i: number): CommandNameExpressionContext {
		return this.getTypedRuleContext(CommandNameExpressionContext, i) as CommandNameExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicNameOrStringParameterList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicNameOrStringParameterList) {
	 		listener.enterSymbolicNameOrStringParameterList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicNameOrStringParameterList) {
	 		listener.exitSymbolicNameOrStringParameterList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicNameOrStringParameterList) {
			return visitor.visitSymbolicNameOrStringParameterList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GlobContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public escapedSymbolicNameString(): EscapedSymbolicNameStringContext {
		return this.getTypedRuleContext(EscapedSymbolicNameStringContext, 0) as EscapedSymbolicNameStringContext;
	}
	public globRecursive(): GlobRecursiveContext {
		return this.getTypedRuleContext(GlobRecursiveContext, 0) as GlobRecursiveContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_glob;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGlob) {
	 		listener.enterGlob(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGlob) {
	 		listener.exitGlob(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGlob) {
			return visitor.visitGlob(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GlobRecursiveContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public globPart(): GlobPartContext {
		return this.getTypedRuleContext(GlobPartContext, 0) as GlobPartContext;
	}
	public globRecursive(): GlobRecursiveContext {
		return this.getTypedRuleContext(GlobRecursiveContext, 0) as GlobRecursiveContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_globRecursive;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGlobRecursive) {
	 		listener.enterGlobRecursive(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGlobRecursive) {
	 		listener.exitGlobRecursive(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGlobRecursive) {
			return visitor.visitGlobRecursive(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class GlobPartContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public DOT(): TerminalNode {
		return this.getToken(CypherCmdParser.DOT, 0);
	}
	public escapedSymbolicNameString(): EscapedSymbolicNameStringContext {
		return this.getTypedRuleContext(EscapedSymbolicNameStringContext, 0) as EscapedSymbolicNameStringContext;
	}
	public QUESTION(): TerminalNode {
		return this.getToken(CypherCmdParser.QUESTION, 0);
	}
	public TIMES(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMES, 0);
	}
	public unescapedSymbolicNameString(): UnescapedSymbolicNameStringContext {
		return this.getTypedRuleContext(UnescapedSymbolicNameStringContext, 0) as UnescapedSymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_globPart;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterGlobPart) {
	 		listener.enterGlobPart(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitGlobPart) {
	 		listener.exitGlobPart(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitGlobPart) {
			return visitor.visitGlobPart(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringListContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringLiteral_list(): StringLiteralContext[] {
		return this.getTypedRuleContexts(StringLiteralContext) as StringLiteralContext[];
	}
	public stringLiteral(i: number): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, i) as StringLiteralContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_stringList;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringList) {
	 		listener.enterStringList(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringList) {
	 		listener.exitStringList(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringList) {
			return visitor.visitStringList(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringLiteralContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public STRING_LITERAL1(): TerminalNode {
		return this.getToken(CypherCmdParser.STRING_LITERAL1, 0);
	}
	public STRING_LITERAL2(): TerminalNode {
		return this.getToken(CypherCmdParser.STRING_LITERAL2, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_stringLiteral;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringLiteral) {
	 		listener.enterStringLiteral(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringLiteral) {
	 		listener.exitStringLiteral(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringLiteral) {
			return visitor.visitStringLiteral(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class StringOrParameterContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public stringLiteral(): StringLiteralContext {
		return this.getTypedRuleContext(StringLiteralContext, 0) as StringLiteralContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_stringOrParameter;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterStringOrParameter) {
	 		listener.enterStringOrParameter(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitStringOrParameter) {
	 		listener.exitStringOrParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitStringOrParameter) {
			return visitor.visitStringOrParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MapOrParameterContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public map(): MapContext {
		return this.getTypedRuleContext(MapContext, 0) as MapContext;
	}
	public parameter(): ParameterContext {
		return this.getTypedRuleContext(ParameterContext, 0) as ParameterContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_mapOrParameter;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMapOrParameter) {
	 		listener.enterMapOrParameter(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMapOrParameter) {
	 		listener.exitMapOrParameter(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMapOrParameter) {
			return visitor.visitMapOrParameter(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class MapContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public LCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.LCURLY, 0);
	}
	public RCURLY(): TerminalNode {
		return this.getToken(CypherCmdParser.RCURLY, 0);
	}
	public propertyKeyName_list(): PropertyKeyNameContext[] {
		return this.getTypedRuleContexts(PropertyKeyNameContext) as PropertyKeyNameContext[];
	}
	public propertyKeyName(i: number): PropertyKeyNameContext {
		return this.getTypedRuleContext(PropertyKeyNameContext, i) as PropertyKeyNameContext;
	}
	public COLON_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COLON);
	}
	public COLON(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COLON, i);
	}
	public expression_list(): ExpressionContext[] {
		return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[];
	}
	public expression(i: number): ExpressionContext {
		return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext;
	}
	public COMMA_list(): TerminalNode[] {
	    	return this.getTokens(CypherCmdParser.COMMA);
	}
	public COMMA(i: number): TerminalNode {
		return this.getToken(CypherCmdParser.COMMA, i);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_map;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterMap) {
	 		listener.enterMap(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitMap) {
	 		listener.exitMap(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitMap) {
			return visitor.visitMap(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicNameStringContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public escapedSymbolicNameString(): EscapedSymbolicNameStringContext {
		return this.getTypedRuleContext(EscapedSymbolicNameStringContext, 0) as EscapedSymbolicNameStringContext;
	}
	public unescapedSymbolicNameString(): UnescapedSymbolicNameStringContext {
		return this.getTypedRuleContext(UnescapedSymbolicNameStringContext, 0) as UnescapedSymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicNameString;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicNameString) {
	 		listener.enterSymbolicNameString(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicNameString) {
	 		listener.exitSymbolicNameString(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicNameString) {
			return visitor.visitSymbolicNameString(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EscapedSymbolicNameStringContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public ESCAPED_SYMBOLIC_NAME(): TerminalNode {
		return this.getToken(CypherCmdParser.ESCAPED_SYMBOLIC_NAME, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_escapedSymbolicNameString;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterEscapedSymbolicNameString) {
	 		listener.enterEscapedSymbolicNameString(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitEscapedSymbolicNameString) {
	 		listener.exitEscapedSymbolicNameString(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitEscapedSymbolicNameString) {
			return visitor.visitEscapedSymbolicNameString(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnescapedSymbolicNameStringContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public unescapedLabelSymbolicNameString(): UnescapedLabelSymbolicNameStringContext {
		return this.getTypedRuleContext(UnescapedLabelSymbolicNameStringContext, 0) as UnescapedLabelSymbolicNameStringContext;
	}
	public NOT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOT, 0);
	}
	public NULL(): TerminalNode {
		return this.getToken(CypherCmdParser.NULL, 0);
	}
	public TYPED(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPED, 0);
	}
	public NORMALIZED(): TerminalNode {
		return this.getToken(CypherCmdParser.NORMALIZED, 0);
	}
	public NFC(): TerminalNode {
		return this.getToken(CypherCmdParser.NFC, 0);
	}
	public NFD(): TerminalNode {
		return this.getToken(CypherCmdParser.NFD, 0);
	}
	public NFKC(): TerminalNode {
		return this.getToken(CypherCmdParser.NFKC, 0);
	}
	public NFKD(): TerminalNode {
		return this.getToken(CypherCmdParser.NFKD, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_unescapedSymbolicNameString;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUnescapedSymbolicNameString) {
	 		listener.enterUnescapedSymbolicNameString(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUnescapedSymbolicNameString) {
	 		listener.exitUnescapedSymbolicNameString(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUnescapedSymbolicNameString) {
			return visitor.visitUnescapedSymbolicNameString(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class SymbolicLabelNameStringContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public escapedSymbolicNameString(): EscapedSymbolicNameStringContext {
		return this.getTypedRuleContext(EscapedSymbolicNameStringContext, 0) as EscapedSymbolicNameStringContext;
	}
	public unescapedLabelSymbolicNameString(): UnescapedLabelSymbolicNameStringContext {
		return this.getTypedRuleContext(UnescapedLabelSymbolicNameStringContext, 0) as UnescapedLabelSymbolicNameStringContext;
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_symbolicLabelNameString;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterSymbolicLabelNameString) {
	 		listener.enterSymbolicLabelNameString(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitSymbolicLabelNameString) {
	 		listener.exitSymbolicLabelNameString(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitSymbolicLabelNameString) {
			return visitor.visitSymbolicLabelNameString(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class UnescapedLabelSymbolicNameStringContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public IDENTIFIER(): TerminalNode {
		return this.getToken(CypherCmdParser.IDENTIFIER, 0);
	}
	public ACCESS(): TerminalNode {
		return this.getToken(CypherCmdParser.ACCESS, 0);
	}
	public ACTIVE(): TerminalNode {
		return this.getToken(CypherCmdParser.ACTIVE, 0);
	}
	public ADMIN(): TerminalNode {
		return this.getToken(CypherCmdParser.ADMIN, 0);
	}
	public ADMINISTRATOR(): TerminalNode {
		return this.getToken(CypherCmdParser.ADMINISTRATOR, 0);
	}
	public ALIAS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIAS, 0);
	}
	public ALIASES(): TerminalNode {
		return this.getToken(CypherCmdParser.ALIASES, 0);
	}
	public ALL_SHORTEST_PATHS(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL_SHORTEST_PATHS, 0);
	}
	public ALL(): TerminalNode {
		return this.getToken(CypherCmdParser.ALL, 0);
	}
	public ALTER(): TerminalNode {
		return this.getToken(CypherCmdParser.ALTER, 0);
	}
	public AND(): TerminalNode {
		return this.getToken(CypherCmdParser.AND, 0);
	}
	public ANY(): TerminalNode {
		return this.getToken(CypherCmdParser.ANY, 0);
	}
	public ARRAY(): TerminalNode {
		return this.getToken(CypherCmdParser.ARRAY, 0);
	}
	public AS(): TerminalNode {
		return this.getToken(CypherCmdParser.AS, 0);
	}
	public ASC(): TerminalNode {
		return this.getToken(CypherCmdParser.ASC, 0);
	}
	public ASCENDING(): TerminalNode {
		return this.getToken(CypherCmdParser.ASCENDING, 0);
	}
	public ASSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSERT, 0);
	}
	public ASSIGN(): TerminalNode {
		return this.getToken(CypherCmdParser.ASSIGN, 0);
	}
	public AT(): TerminalNode {
		return this.getToken(CypherCmdParser.AT, 0);
	}
	public BINDINGS(): TerminalNode {
		return this.getToken(CypherCmdParser.BINDINGS, 0);
	}
	public BOOL(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOL, 0);
	}
	public BOOLEAN(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOLEAN, 0);
	}
	public BOOSTED(): TerminalNode {
		return this.getToken(CypherCmdParser.BOOSTED, 0);
	}
	public BOTH(): TerminalNode {
		return this.getToken(CypherCmdParser.BOTH, 0);
	}
	public BREAK(): TerminalNode {
		return this.getToken(CypherCmdParser.BREAK, 0);
	}
	public BRIEF(): TerminalNode {
		return this.getToken(CypherCmdParser.BRIEF, 0);
	}
	public BTREE(): TerminalNode {
		return this.getToken(CypherCmdParser.BTREE, 0);
	}
	public BUILT(): TerminalNode {
		return this.getToken(CypherCmdParser.BUILT, 0);
	}
	public BY(): TerminalNode {
		return this.getToken(CypherCmdParser.BY, 0);
	}
	public CALL(): TerminalNode {
		return this.getToken(CypherCmdParser.CALL, 0);
	}
	public CASE(): TerminalNode {
		return this.getToken(CypherCmdParser.CASE, 0);
	}
	public CHANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.CHANGE, 0);
	}
	public CIDR(): TerminalNode {
		return this.getToken(CypherCmdParser.CIDR, 0);
	}
	public COLLECT(): TerminalNode {
		return this.getToken(CypherCmdParser.COLLECT, 0);
	}
	public COMMAND(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMAND, 0);
	}
	public COMMANDS(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMANDS, 0);
	}
	public COMMIT(): TerminalNode {
		return this.getToken(CypherCmdParser.COMMIT, 0);
	}
	public COMPOSITE(): TerminalNode {
		return this.getToken(CypherCmdParser.COMPOSITE, 0);
	}
	public CONCURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONCURRENT, 0);
	}
	public CONSTRAINT(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINT, 0);
	}
	public CONSTRAINTS(): TerminalNode {
		return this.getToken(CypherCmdParser.CONSTRAINTS, 0);
	}
	public CONTAINS(): TerminalNode {
		return this.getToken(CypherCmdParser.CONTAINS, 0);
	}
	public CONTINUE(): TerminalNode {
		return this.getToken(CypherCmdParser.CONTINUE, 0);
	}
	public COPY(): TerminalNode {
		return this.getToken(CypherCmdParser.COPY, 0);
	}
	public COUNT(): TerminalNode {
		return this.getToken(CypherCmdParser.COUNT, 0);
	}
	public CREATE(): TerminalNode {
		return this.getToken(CypherCmdParser.CREATE, 0);
	}
	public CSV(): TerminalNode {
		return this.getToken(CypherCmdParser.CSV, 0);
	}
	public CURRENT(): TerminalNode {
		return this.getToken(CypherCmdParser.CURRENT, 0);
	}
	public DATA(): TerminalNode {
		return this.getToken(CypherCmdParser.DATA, 0);
	}
	public DATABASE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASE, 0);
	}
	public DATABASES(): TerminalNode {
		return this.getToken(CypherCmdParser.DATABASES, 0);
	}
	public DATE(): TerminalNode {
		return this.getToken(CypherCmdParser.DATE, 0);
	}
	public DATETIME(): TerminalNode {
		return this.getToken(CypherCmdParser.DATETIME, 0);
	}
	public DBMS(): TerminalNode {
		return this.getToken(CypherCmdParser.DBMS, 0);
	}
	public DEALLOCATE(): TerminalNode {
		return this.getToken(CypherCmdParser.DEALLOCATE, 0);
	}
	public DEFAULT(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFAULT, 0);
	}
	public DEFINED(): TerminalNode {
		return this.getToken(CypherCmdParser.DEFINED, 0);
	}
	public DELETE(): TerminalNode {
		return this.getToken(CypherCmdParser.DELETE, 0);
	}
	public DENY(): TerminalNode {
		return this.getToken(CypherCmdParser.DENY, 0);
	}
	public DESC(): TerminalNode {
		return this.getToken(CypherCmdParser.DESC, 0);
	}
	public DESCENDING(): TerminalNode {
		return this.getToken(CypherCmdParser.DESCENDING, 0);
	}
	public DESTROY(): TerminalNode {
		return this.getToken(CypherCmdParser.DESTROY, 0);
	}
	public DETACH(): TerminalNode {
		return this.getToken(CypherCmdParser.DETACH, 0);
	}
	public DIFFERENT(): TerminalNode {
		return this.getToken(CypherCmdParser.DIFFERENT, 0);
	}
	public DISTINCT(): TerminalNode {
		return this.getToken(CypherCmdParser.DISTINCT, 0);
	}
	public DRIVER(): TerminalNode {
		return this.getToken(CypherCmdParser.DRIVER, 0);
	}
	public DROP(): TerminalNode {
		return this.getToken(CypherCmdParser.DROP, 0);
	}
	public DRYRUN(): TerminalNode {
		return this.getToken(CypherCmdParser.DRYRUN, 0);
	}
	public DUMP(): TerminalNode {
		return this.getToken(CypherCmdParser.DUMP, 0);
	}
	public DURATION(): TerminalNode {
		return this.getToken(CypherCmdParser.DURATION, 0);
	}
	public EACH(): TerminalNode {
		return this.getToken(CypherCmdParser.EACH, 0);
	}
	public EDGE(): TerminalNode {
		return this.getToken(CypherCmdParser.EDGE, 0);
	}
	public ELEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENT, 0);
	}
	public ELEMENTS(): TerminalNode {
		return this.getToken(CypherCmdParser.ELEMENTS, 0);
	}
	public ELSE(): TerminalNode {
		return this.getToken(CypherCmdParser.ELSE, 0);
	}
	public ENABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ENABLE, 0);
	}
	public ENCRYPTED(): TerminalNode {
		return this.getToken(CypherCmdParser.ENCRYPTED, 0);
	}
	public END(): TerminalNode {
		return this.getToken(CypherCmdParser.END, 0);
	}
	public ENDS(): TerminalNode {
		return this.getToken(CypherCmdParser.ENDS, 0);
	}
	public ERROR(): TerminalNode {
		return this.getToken(CypherCmdParser.ERROR, 0);
	}
	public EXECUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXECUTABLE, 0);
	}
	public EXECUTE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXECUTE, 0);
	}
	public EXIST(): TerminalNode {
		return this.getToken(CypherCmdParser.EXIST, 0);
	}
	public EXISTENCE(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTENCE, 0);
	}
	public EXISTS(): TerminalNode {
		return this.getToken(CypherCmdParser.EXISTS, 0);
	}
	public FAIL(): TerminalNode {
		return this.getToken(CypherCmdParser.FAIL, 0);
	}
	public FALSE(): TerminalNode {
		return this.getToken(CypherCmdParser.FALSE, 0);
	}
	public FIELDTERMINATOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FIELDTERMINATOR, 0);
	}
	public FINISH(): TerminalNode {
		return this.getToken(CypherCmdParser.FINISH, 0);
	}
	public FLOAT(): TerminalNode {
		return this.getToken(CypherCmdParser.FLOAT, 0);
	}
	public FOREACH(): TerminalNode {
		return this.getToken(CypherCmdParser.FOREACH, 0);
	}
	public FOR(): TerminalNode {
		return this.getToken(CypherCmdParser.FOR, 0);
	}
	public FROM(): TerminalNode {
		return this.getToken(CypherCmdParser.FROM, 0);
	}
	public FULLTEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.FULLTEXT, 0);
	}
	public FUNCTION(): TerminalNode {
		return this.getToken(CypherCmdParser.FUNCTION, 0);
	}
	public FUNCTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.FUNCTIONS, 0);
	}
	public GRANT(): TerminalNode {
		return this.getToken(CypherCmdParser.GRANT, 0);
	}
	public GRAPH(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPH, 0);
	}
	public GRAPHS(): TerminalNode {
		return this.getToken(CypherCmdParser.GRAPHS, 0);
	}
	public GROUP(): TerminalNode {
		return this.getToken(CypherCmdParser.GROUP, 0);
	}
	public GROUPS(): TerminalNode {
		return this.getToken(CypherCmdParser.GROUPS, 0);
	}
	public HEADERS(): TerminalNode {
		return this.getToken(CypherCmdParser.HEADERS, 0);
	}
	public HOME(): TerminalNode {
		return this.getToken(CypherCmdParser.HOME, 0);
	}
	public IF(): TerminalNode {
		return this.getToken(CypherCmdParser.IF, 0);
	}
	public IMMUTABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMMUTABLE, 0);
	}
	public IMPERSONATE(): TerminalNode {
		return this.getToken(CypherCmdParser.IMPERSONATE, 0);
	}
	public IN(): TerminalNode {
		return this.getToken(CypherCmdParser.IN, 0);
	}
	public INDEX(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEX, 0);
	}
	public INDEXES(): TerminalNode {
		return this.getToken(CypherCmdParser.INDEXES, 0);
	}
	public INF(): TerminalNode {
		return this.getToken(CypherCmdParser.INF, 0);
	}
	public INFINITY(): TerminalNode {
		return this.getToken(CypherCmdParser.INFINITY, 0);
	}
	public INSERT(): TerminalNode {
		return this.getToken(CypherCmdParser.INSERT, 0);
	}
	public INT(): TerminalNode {
		return this.getToken(CypherCmdParser.INT, 0);
	}
	public INTEGER(): TerminalNode {
		return this.getToken(CypherCmdParser.INTEGER, 0);
	}
	public IS(): TerminalNode {
		return this.getToken(CypherCmdParser.IS, 0);
	}
	public JOIN(): TerminalNode {
		return this.getToken(CypherCmdParser.JOIN, 0);
	}
	public KEY(): TerminalNode {
		return this.getToken(CypherCmdParser.KEY, 0);
	}
	public LABEL(): TerminalNode {
		return this.getToken(CypherCmdParser.LABEL, 0);
	}
	public LABELS(): TerminalNode {
		return this.getToken(CypherCmdParser.LABELS, 0);
	}
	public LEADING(): TerminalNode {
		return this.getToken(CypherCmdParser.LEADING, 0);
	}
	public LIMITROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.LIMITROWS, 0);
	}
	public LIST(): TerminalNode {
		return this.getToken(CypherCmdParser.LIST, 0);
	}
	public LOAD(): TerminalNode {
		return this.getToken(CypherCmdParser.LOAD, 0);
	}
	public LOCAL(): TerminalNode {
		return this.getToken(CypherCmdParser.LOCAL, 0);
	}
	public LOOKUP(): TerminalNode {
		return this.getToken(CypherCmdParser.LOOKUP, 0);
	}
	public MATCH(): TerminalNode {
		return this.getToken(CypherCmdParser.MATCH, 0);
	}
	public MANAGEMENT(): TerminalNode {
		return this.getToken(CypherCmdParser.MANAGEMENT, 0);
	}
	public MAP(): TerminalNode {
		return this.getToken(CypherCmdParser.MAP, 0);
	}
	public MERGE(): TerminalNode {
		return this.getToken(CypherCmdParser.MERGE, 0);
	}
	public NAME(): TerminalNode {
		return this.getToken(CypherCmdParser.NAME, 0);
	}
	public NAMES(): TerminalNode {
		return this.getToken(CypherCmdParser.NAMES, 0);
	}
	public NAN(): TerminalNode {
		return this.getToken(CypherCmdParser.NAN, 0);
	}
	public NEW(): TerminalNode {
		return this.getToken(CypherCmdParser.NEW, 0);
	}
	public NODE(): TerminalNode {
		return this.getToken(CypherCmdParser.NODE, 0);
	}
	public NODETACH(): TerminalNode {
		return this.getToken(CypherCmdParser.NODETACH, 0);
	}
	public NODES(): TerminalNode {
		return this.getToken(CypherCmdParser.NODES, 0);
	}
	public NONE(): TerminalNode {
		return this.getToken(CypherCmdParser.NONE, 0);
	}
	public NORMALIZE(): TerminalNode {
		return this.getToken(CypherCmdParser.NORMALIZE, 0);
	}
	public NOTHING(): TerminalNode {
		return this.getToken(CypherCmdParser.NOTHING, 0);
	}
	public NOWAIT(): TerminalNode {
		return this.getToken(CypherCmdParser.NOWAIT, 0);
	}
	public OF(): TerminalNode {
		return this.getToken(CypherCmdParser.OF, 0);
	}
	public ON(): TerminalNode {
		return this.getToken(CypherCmdParser.ON, 0);
	}
	public ONLY(): TerminalNode {
		return this.getToken(CypherCmdParser.ONLY, 0);
	}
	public OPTIONAL(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTIONAL, 0);
	}
	public OPTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTIONS, 0);
	}
	public OPTION(): TerminalNode {
		return this.getToken(CypherCmdParser.OPTION, 0);
	}
	public OR(): TerminalNode {
		return this.getToken(CypherCmdParser.OR, 0);
	}
	public ORDER(): TerminalNode {
		return this.getToken(CypherCmdParser.ORDER, 0);
	}
	public OUTPUT(): TerminalNode {
		return this.getToken(CypherCmdParser.OUTPUT, 0);
	}
	public PASSWORD(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORD, 0);
	}
	public PASSWORDS(): TerminalNode {
		return this.getToken(CypherCmdParser.PASSWORDS, 0);
	}
	public PATH(): TerminalNode {
		return this.getToken(CypherCmdParser.PATH, 0);
	}
	public PATHS(): TerminalNode {
		return this.getToken(CypherCmdParser.PATHS, 0);
	}
	public PERIODIC(): TerminalNode {
		return this.getToken(CypherCmdParser.PERIODIC, 0);
	}
	public PLAINTEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.PLAINTEXT, 0);
	}
	public POINT(): TerminalNode {
		return this.getToken(CypherCmdParser.POINT, 0);
	}
	public POPULATED(): TerminalNode {
		return this.getToken(CypherCmdParser.POPULATED, 0);
	}
	public PRIMARY(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIMARY, 0);
	}
	public PRIMARIES(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIMARIES, 0);
	}
	public PRIVILEGE(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGE, 0);
	}
	public PRIVILEGES(): TerminalNode {
		return this.getToken(CypherCmdParser.PRIVILEGES, 0);
	}
	public PROCEDURE(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURE, 0);
	}
	public PROCEDURES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROCEDURES, 0);
	}
	public PROPERTIES(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTIES, 0);
	}
	public PROPERTY(): TerminalNode {
		return this.getToken(CypherCmdParser.PROPERTY, 0);
	}
	public RANGE(): TerminalNode {
		return this.getToken(CypherCmdParser.RANGE, 0);
	}
	public READ(): TerminalNode {
		return this.getToken(CypherCmdParser.READ, 0);
	}
	public REALLOCATE(): TerminalNode {
		return this.getToken(CypherCmdParser.REALLOCATE, 0);
	}
	public REDUCE(): TerminalNode {
		return this.getToken(CypherCmdParser.REDUCE, 0);
	}
	public REL(): TerminalNode {
		return this.getToken(CypherCmdParser.REL, 0);
	}
	public RELATIONSHIP(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIP, 0);
	}
	public RELATIONSHIPS(): TerminalNode {
		return this.getToken(CypherCmdParser.RELATIONSHIPS, 0);
	}
	public REMOVE(): TerminalNode {
		return this.getToken(CypherCmdParser.REMOVE, 0);
	}
	public RENAME(): TerminalNode {
		return this.getToken(CypherCmdParser.RENAME, 0);
	}
	public REPEATABLE(): TerminalNode {
		return this.getToken(CypherCmdParser.REPEATABLE, 0);
	}
	public REPLACE(): TerminalNode {
		return this.getToken(CypherCmdParser.REPLACE, 0);
	}
	public REPORT(): TerminalNode {
		return this.getToken(CypherCmdParser.REPORT, 0);
	}
	public REQUIRE(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRE, 0);
	}
	public REQUIRED(): TerminalNode {
		return this.getToken(CypherCmdParser.REQUIRED, 0);
	}
	public RETURN(): TerminalNode {
		return this.getToken(CypherCmdParser.RETURN, 0);
	}
	public REVOKE(): TerminalNode {
		return this.getToken(CypherCmdParser.REVOKE, 0);
	}
	public ROLE(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLE, 0);
	}
	public ROLES(): TerminalNode {
		return this.getToken(CypherCmdParser.ROLES, 0);
	}
	public ROW(): TerminalNode {
		return this.getToken(CypherCmdParser.ROW, 0);
	}
	public ROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.ROWS, 0);
	}
	public SCAN(): TerminalNode {
		return this.getToken(CypherCmdParser.SCAN, 0);
	}
	public SECONDARY(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDARY, 0);
	}
	public SECONDARIES(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDARIES, 0);
	}
	public SEC(): TerminalNode {
		return this.getToken(CypherCmdParser.SEC, 0);
	}
	public SECOND(): TerminalNode {
		return this.getToken(CypherCmdParser.SECOND, 0);
	}
	public SECONDS(): TerminalNode {
		return this.getToken(CypherCmdParser.SECONDS, 0);
	}
	public SEEK(): TerminalNode {
		return this.getToken(CypherCmdParser.SEEK, 0);
	}
	public SERVER(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVER, 0);
	}
	public SERVERS(): TerminalNode {
		return this.getToken(CypherCmdParser.SERVERS, 0);
	}
	public SET(): TerminalNode {
		return this.getToken(CypherCmdParser.SET, 0);
	}
	public SETTING(): TerminalNode {
		return this.getToken(CypherCmdParser.SETTING, 0);
	}
	public SETTINGS(): TerminalNode {
		return this.getToken(CypherCmdParser.SETTINGS, 0);
	}
	public SHORTEST(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST, 0);
	}
	public SHORTEST_PATH(): TerminalNode {
		return this.getToken(CypherCmdParser.SHORTEST_PATH, 0);
	}
	public SHOW(): TerminalNode {
		return this.getToken(CypherCmdParser.SHOW, 0);
	}
	public SIGNED(): TerminalNode {
		return this.getToken(CypherCmdParser.SIGNED, 0);
	}
	public SINGLE(): TerminalNode {
		return this.getToken(CypherCmdParser.SINGLE, 0);
	}
	public SKIPROWS(): TerminalNode {
		return this.getToken(CypherCmdParser.SKIPROWS, 0);
	}
	public START(): TerminalNode {
		return this.getToken(CypherCmdParser.START, 0);
	}
	public STARTS(): TerminalNode {
		return this.getToken(CypherCmdParser.STARTS, 0);
	}
	public STATUS(): TerminalNode {
		return this.getToken(CypherCmdParser.STATUS, 0);
	}
	public STOP(): TerminalNode {
		return this.getToken(CypherCmdParser.STOP, 0);
	}
	public VARCHAR(): TerminalNode {
		return this.getToken(CypherCmdParser.VARCHAR, 0);
	}
	public STRING(): TerminalNode {
		return this.getToken(CypherCmdParser.STRING, 0);
	}
	public SUPPORTED(): TerminalNode {
		return this.getToken(CypherCmdParser.SUPPORTED, 0);
	}
	public SUSPENDED(): TerminalNode {
		return this.getToken(CypherCmdParser.SUSPENDED, 0);
	}
	public TARGET(): TerminalNode {
		return this.getToken(CypherCmdParser.TARGET, 0);
	}
	public TERMINATE(): TerminalNode {
		return this.getToken(CypherCmdParser.TERMINATE, 0);
	}
	public TEXT(): TerminalNode {
		return this.getToken(CypherCmdParser.TEXT, 0);
	}
	public THEN(): TerminalNode {
		return this.getToken(CypherCmdParser.THEN, 0);
	}
	public TIME(): TerminalNode {
		return this.getToken(CypherCmdParser.TIME, 0);
	}
	public TIMESTAMP(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMESTAMP, 0);
	}
	public TIMEZONE(): TerminalNode {
		return this.getToken(CypherCmdParser.TIMEZONE, 0);
	}
	public TO(): TerminalNode {
		return this.getToken(CypherCmdParser.TO, 0);
	}
	public TOPOLOGY(): TerminalNode {
		return this.getToken(CypherCmdParser.TOPOLOGY, 0);
	}
	public TRAILING(): TerminalNode {
		return this.getToken(CypherCmdParser.TRAILING, 0);
	}
	public TRANSACTION(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTION, 0);
	}
	public TRANSACTIONS(): TerminalNode {
		return this.getToken(CypherCmdParser.TRANSACTIONS, 0);
	}
	public TRAVERSE(): TerminalNode {
		return this.getToken(CypherCmdParser.TRAVERSE, 0);
	}
	public TRIM(): TerminalNode {
		return this.getToken(CypherCmdParser.TRIM, 0);
	}
	public TRUE(): TerminalNode {
		return this.getToken(CypherCmdParser.TRUE, 0);
	}
	public TYPE(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPE, 0);
	}
	public TYPES(): TerminalNode {
		return this.getToken(CypherCmdParser.TYPES, 0);
	}
	public UNION(): TerminalNode {
		return this.getToken(CypherCmdParser.UNION, 0);
	}
	public UNIQUE(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUE, 0);
	}
	public UNIQUENESS(): TerminalNode {
		return this.getToken(CypherCmdParser.UNIQUENESS, 0);
	}
	public UNWIND(): TerminalNode {
		return this.getToken(CypherCmdParser.UNWIND, 0);
	}
	public URL(): TerminalNode {
		return this.getToken(CypherCmdParser.URL, 0);
	}
	public USE(): TerminalNode {
		return this.getToken(CypherCmdParser.USE, 0);
	}
	public USER(): TerminalNode {
		return this.getToken(CypherCmdParser.USER, 0);
	}
	public USERS(): TerminalNode {
		return this.getToken(CypherCmdParser.USERS, 0);
	}
	public USING(): TerminalNode {
		return this.getToken(CypherCmdParser.USING, 0);
	}
	public VALUE(): TerminalNode {
		return this.getToken(CypherCmdParser.VALUE, 0);
	}
	public VECTOR(): TerminalNode {
		return this.getToken(CypherCmdParser.VECTOR, 0);
	}
	public VERBOSE(): TerminalNode {
		return this.getToken(CypherCmdParser.VERBOSE, 0);
	}
	public VERTEX(): TerminalNode {
		return this.getToken(CypherCmdParser.VERTEX, 0);
	}
	public WAIT(): TerminalNode {
		return this.getToken(CypherCmdParser.WAIT, 0);
	}
	public WHEN(): TerminalNode {
		return this.getToken(CypherCmdParser.WHEN, 0);
	}
	public WHERE(): TerminalNode {
		return this.getToken(CypherCmdParser.WHERE, 0);
	}
	public WITH(): TerminalNode {
		return this.getToken(CypherCmdParser.WITH, 0);
	}
	public WITHOUT(): TerminalNode {
		return this.getToken(CypherCmdParser.WITHOUT, 0);
	}
	public WRITE(): TerminalNode {
		return this.getToken(CypherCmdParser.WRITE, 0);
	}
	public XOR(): TerminalNode {
		return this.getToken(CypherCmdParser.XOR, 0);
	}
	public YIELD(): TerminalNode {
		return this.getToken(CypherCmdParser.YIELD, 0);
	}
	public ZONED(): TerminalNode {
		return this.getToken(CypherCmdParser.ZONED, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_unescapedLabelSymbolicNameString;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterUnescapedLabelSymbolicNameString) {
	 		listener.enterUnescapedLabelSymbolicNameString(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitUnescapedLabelSymbolicNameString) {
	 		listener.exitUnescapedLabelSymbolicNameString(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitUnescapedLabelSymbolicNameString) {
			return visitor.visitUnescapedLabelSymbolicNameString(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}


export class EndOfFileContext extends ParserRuleContext {
	constructor(parser?: CypherCmdParser, parent?: ParserRuleContext, invokingState?: number) {
		super(parent, invokingState);
    	this.parser = parser;
	}
	public EOF(): TerminalNode {
		return this.getToken(CypherCmdParser.EOF, 0);
	}
    public get ruleIndex(): number {
    	return CypherCmdParser.RULE_endOfFile;
	}
	public enterRule(listener: CypherCmdParserListener): void {
	    if(listener.enterEndOfFile) {
	 		listener.enterEndOfFile(this);
		}
	}
	public exitRule(listener: CypherCmdParserListener): void {
	    if(listener.exitEndOfFile) {
	 		listener.exitEndOfFile(this);
		}
	}
	// @Override
	public accept<Result>(visitor: CypherCmdParserVisitor<Result>): Result {
		if (visitor.visitEndOfFile) {
			return visitor.visitEndOfFile(this);
		} else {
			return visitor.visitChildren(this);
		}
	}
}
