RootNode { statement: [ GrammarStatement( GrammarStatementNode { grammar_block: GrammarBlockNode { span: 18..22, }, identifier: IdentifierNode { text: "Bootstrap", span: 8..17, }, span: 0..22, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Statement", span: 47..56, }, ), prefix: [], suffix: [ Many, ], span: 47..57, }, span: 47..57, }, ], span: 47..58, }, ], span: 47..58, }, ], span: 47..58, }, span: 41..59, }, decorator_call: [], modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "entry", span: 24..29, }, span: 24..29, }, ], op_remark: None, cast: None, name: IdentifierNode { text: "Root", span: 36..40, }, span: 24..59, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GrammarStatement", span: 85..101, }, ), prefix: [], suffix: [], span: 85..106, }, span: 85..106, }, ], span: 85..106, }, ], span: 85..106, }, span: 83..106, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ClassStatement", span: 108..122, }, ), prefix: [], suffix: [], span: 108..127, }, span: 108..127, }, ], span: 108..127, }, ], span: 108..127, }, span: 106..127, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "UnionStatement", span: 129..143, }, ), prefix: [], suffix: [], span: 129..148, }, span: 129..148, }, ], span: 129..148, }, ], span: 129..148, }, span: 127..148, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GroupStatement", span: 150..164, }, ), prefix: [], suffix: [], span: 150..165, }, span: 150..165, }, ], span: 150..165, }, ], span: 150..165, }, span: 148..165, }, ], span: 77..166, }, name: IdentifierNode { text: "Statement", span: 67..76, }, span: 61..166, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "KW_GRAMMAR", span: 318..328, }, ), prefix: [ Remark, ], suffix: [], span: 317..329, }, span: 317..329, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 329..339, }, ), prefix: [], suffix: [], span: 329..340, }, span: 329..340, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GrammarBlock", span: 340..352, }, ), prefix: [], suffix: [], span: 340..353, }, span: 340..353, }, ], span: 317..353, }, ], span: 317..353, }, ], span: 317..353, }, span: 311..354, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GrammarStatement", span: 294..310, }, span: 288..354, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 382..383, }, ), ), prefix: [], suffix: [], span: 380..384, }, span: 380..384, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 386..387, }, ), ), prefix: [], suffix: [], span: 384..388, }, span: 384..388, }, ], span: 380..388, }, ], span: 380..388, }, ], span: 380..388, }, span: 374..389, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GrammarBlock", span: 361..373, }, span: 355..389, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "DecoratorCall", span: 536..549, }, ), prefix: [], suffix: [ Many, ], span: 536..550, }, span: 536..550, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ModifierCall", span: 551..563, }, ), prefix: [], suffix: [ Many, ], span: 551..564, }, span: 551..564, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "KW_CLASS", span: 566..574, }, ), prefix: [ Remark, ], suffix: [], span: 565..575, }, span: 565..575, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: Some( IdentifierNode { text: "name", span: 576..580, }, ), term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 581..591, }, ), prefix: [], suffix: [], span: 581..591, }, span: 576..591, }, ], span: 576..591, }, ], span: 576..591, }, ], span: 576..591, }, span: 575..592, }, ), prefix: [], suffix: [], span: 575..593, }, span: 575..593, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 597..598, }, ), ), prefix: [], suffix: [], span: 594..599, }, span: 594..599, }, ExpressionTagNode { identifier: Some( IdentifierNode { text: "cast", span: 599..603, }, ), term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 604..614, }, ), prefix: [], suffix: [], span: 604..614, }, span: 599..614, }, ], span: 594..614, }, ], span: 594..614, }, ], span: 594..614, }, span: 593..615, }, ), prefix: [], suffix: [ Optional, ], span: 593..616, }, span: 593..616, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "OP_REMARK", span: 617..626, }, ), prefix: [], suffix: [ Optional, ], span: 617..627, }, span: 617..627, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ClassBlock", span: 628..638, }, ), prefix: [], suffix: [], span: 628..639, }, span: 628..639, }, ], span: 536..639, }, ], span: 536..639, }, ], span: 536..639, }, span: 530..640, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "ClassStatement", span: 515..529, }, span: 509..640, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 666..667, }, ), ), prefix: [], suffix: [], span: 664..668, }, span: 664..668, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 670..671, }, ), ), prefix: [], suffix: [ Optional, ], span: 668..672, }, span: 668..672, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Expression", span: 673..683, }, ), prefix: [], suffix: [], span: 673..684, }, span: 673..684, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 686..687, }, ), ), prefix: [], suffix: [], span: 684..688, }, span: 684..688, }, ], span: 664..688, }, ], span: 664..688, }, ], span: 664..688, }, span: 658..689, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "ClassBlock", span: 647..657, }, span: 641..689, }, ), GroupStatement( GroupStatementNode { decorator_call: [], group_block: GroupBlockNode { group_pair: [ GroupPairNode { atomic: String( Raw( StringRawNode { text: "'", span: 715..716, }, ), ), identifier: IdentifierNode { text: "OP_REMARK", span: 702..711, }, span: 702..716, }, ], span: 696..718, }, identifier: None, modifier_call: [], span: 690..718, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "DecoratorCall", span: 865..878, }, ), prefix: [], suffix: [ Many, ], span: 865..879, }, span: 865..879, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ModifierCall", span: 880..892, }, ), prefix: [], suffix: [ Many, ], span: 880..893, }, span: 880..893, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "KW_UNION", span: 895..903, }, ), prefix: [ Remark, ], suffix: [], span: 894..904, }, span: 894..904, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: Some( IdentifierNode { text: "name", span: 905..909, }, ), term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 910..920, }, ), prefix: [], suffix: [], span: 910..920, }, span: 905..920, }, ], span: 905..920, }, ], span: 905..920, }, ], span: 905..920, }, span: 904..921, }, ), prefix: [], suffix: [], span: 904..922, }, span: 904..922, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "OP_REMARK", span: 922..931, }, ), prefix: [], suffix: [ Optional, ], span: 922..932, }, span: 922..932, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "UnionBlock", span: 933..943, }, ), prefix: [], suffix: [], span: 933..944, }, span: 933..944, }, ], span: 865..944, }, ], span: 865..944, }, ], span: 865..944, }, span: 859..945, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "UnionStatement", span: 844..858, }, span: 838..945, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 971..972, }, ), ), prefix: [], suffix: [], span: 969..973, }, span: 969..973, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "UnionBranch", span: 973..984, }, ), prefix: [], suffix: [ Many, ], span: 973..985, }, span: 973..985, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 988..989, }, ), ), prefix: [], suffix: [], span: 986..990, }, span: 986..990, }, ], span: 969..990, }, ], span: 969..990, }, ], span: 969..990, }, span: 963..991, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "UnionBlock", span: 952..962, }, span: 946..991, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1018..1019, }, ), ), prefix: [], suffix: [], span: 1016..1020, }, span: 1016..1020, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionHard", span: 1020..1034, }, ), prefix: [], suffix: [], span: 1020..1035, }, span: 1020..1035, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "BranchTag", span: 1035..1044, }, ), prefix: [], suffix: [ Optional, ], span: 1035..1045, }, span: 1035..1045, }, ], span: 1016..1045, }, ], span: 1016..1046, }, ], span: 1016..1046, }, span: 1010..1047, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "UnionBranch", span: 998..1009, }, span: 992..1047, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1093..1094, }, ), ), prefix: [], suffix: [], span: 1091..1095, }, span: 1091..1095, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 1095..1105, }, ), prefix: [], suffix: [], span: 1095..1106, }, span: 1095..1106, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "RightAssociativity", span: 1106..1124, }, ), prefix: [], suffix: [ Optional, ], span: 1106..1125, }, span: 1106..1125, }, ], span: 1091..1125, }, ], span: 1091..1126, }, ], span: 1091..1126, }, span: 1085..1127, }, decorator_call: [ DecoratorCallNode { call_body: CallBodyNode { expression: [ ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "field", span: 1055..1060, }, ), prefix: [], suffix: [], span: 1055..1060, }, span: 1055..1060, }, ], span: 1055..1060, }, ], span: 1055..1060, }, ], span: 1055..1060, }, ], span: 1054..1061, }, decorator_name: DecoratorNameNode { identifier: IdentifierNode { text: "style", span: 1049..1054, }, span: 1048..1054, }, span: 1048..1061, }, ], modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "atomic", span: 1062..1068, }, span: 1062..1068, }, ], op_remark: None, cast: None, name: IdentifierNode { text: "BranchTag", span: 1075..1084, }, span: 1048..1127, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1161..1162, }, ), ), prefix: [], suffix: [], span: 1159..1163, }, span: 1159..1163, }, ], span: 1159..1163, }, ], span: 1159..1163, }, ], span: 1159..1163, }, span: 1153..1164, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "RightAssociativity", span: 1134..1152, }, span: 1128..1164, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "DecoratorCall", span: 1313..1326, }, ), prefix: [], suffix: [ Many, ], span: 1313..1327, }, span: 1313..1327, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ModifierCall", span: 1328..1340, }, ), prefix: [], suffix: [ Many, ], span: 1328..1341, }, span: 1328..1341, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "KW_GROUP", span: 1343..1351, }, ), prefix: [ Remark, ], suffix: [], span: 1342..1352, }, span: 1342..1352, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 1352..1362, }, ), prefix: [], suffix: [ Optional, ], span: 1352..1363, }, span: 1352..1363, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GroupBlock", span: 1364..1374, }, ), prefix: [], suffix: [], span: 1364..1375, }, span: 1364..1375, }, ], span: 1313..1375, }, ], span: 1313..1375, }, ], span: 1313..1375, }, span: 1307..1376, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GroupStatement", span: 1292..1306, }, span: 1286..1376, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1402..1403, }, ), ), prefix: [], suffix: [], span: 1400..1404, }, span: 1400..1404, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GroupPair", span: 1404..1413, }, ), prefix: [], suffix: [ Many, ], span: 1404..1414, }, span: 1404..1414, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1417..1418, }, ), ), prefix: [], suffix: [], span: 1415..1419, }, span: 1415..1419, }, ], span: 1400..1419, }, ], span: 1400..1419, }, ], span: 1400..1419, }, span: 1394..1420, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GroupBlock", span: 1383..1393, }, span: 1377..1420, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 1443..1453, }, ), prefix: [], suffix: [], span: 1443..1454, }, span: 1443..1454, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1456..1457, }, ), ), prefix: [], suffix: [], span: 1454..1458, }, span: 1454..1458, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Atomic", span: 1458..1464, }, ), prefix: [], suffix: [], span: 1458..1465, }, span: 1458..1465, }, ], span: 1443..1465, }, ], span: 1443..1465, }, ], span: 1443..1465, }, span: 1437..1466, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GroupPair", span: 1427..1436, }, span: 1421..1466, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "DecoratorName", span: 1613..1626, }, ), prefix: [], suffix: [], span: 1613..1627, }, span: 1613..1627, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "CallBody", span: 1627..1635, }, ), prefix: [], suffix: [], span: 1627..1636, }, span: 1627..1636, }, ], span: 1613..1636, }, ], span: 1613..1636, }, ], span: 1613..1636, }, span: 1607..1637, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "DecoratorCall", span: 1593..1606, }, span: 1587..1637, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: RegexRange( RegexRangeNode { regex_negative: None, text: "[@#]", span: 1683..1687, }, ), prefix: [], suffix: [], span: 1683..1688, }, span: 1683..1688, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 1688..1698, }, ), prefix: [], suffix: [], span: 1688..1699, }, span: 1688..1699, }, ], span: 1683..1699, }, ], span: 1683..1699, }, ], span: 1683..1699, }, span: 1677..1700, }, decorator_call: [ DecoratorCallNode { call_body: CallBodyNode { expression: [ ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "annotation", span: 1645..1655, }, ), prefix: [], suffix: [], span: 1645..1655, }, span: 1645..1655, }, ], span: 1645..1655, }, ], span: 1645..1655, }, ], span: 1645..1655, }, ], span: 1644..1656, }, decorator_name: DecoratorNameNode { identifier: IdentifierNode { text: "style", span: 1639..1644, }, span: 1638..1644, }, span: 1638..1656, }, ], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "DecoratorName", span: 1663..1676, }, span: 1638..1700, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "FunctionName", span: 1726..1738, }, ), prefix: [], suffix: [], span: 1726..1739, }, span: 1726..1739, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "CallBody", span: 1739..1747, }, ), prefix: [], suffix: [], span: 1739..1748, }, span: 1739..1748, }, ], span: 1726..1748, }, ], span: 1726..1748, }, ], span: 1726..1748, }, span: 1720..1749, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "FunctionCall", span: 1707..1719, }, span: 1701..1749, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1794..1795, }, ), ), prefix: [], suffix: [], span: 1792..1796, }, span: 1792..1796, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 1796..1806, }, ), prefix: [], suffix: [], span: 1796..1807, }, span: 1796..1807, }, ], span: 1792..1807, }, ], span: 1792..1807, }, ], span: 1792..1807, }, span: 1786..1808, }, decorator_call: [ DecoratorCallNode { call_body: CallBodyNode { expression: [ ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "function", span: 1757..1765, }, ), prefix: [], suffix: [], span: 1757..1765, }, span: 1757..1765, }, ], span: 1757..1765, }, ], span: 1757..1765, }, ], span: 1757..1765, }, ], span: 1756..1766, }, decorator_name: DecoratorNameNode { identifier: IdentifierNode { text: "style", span: 1751..1756, }, span: 1750..1756, }, span: 1750..1766, }, ], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "FunctionName", span: 1773..1785, }, span: 1750..1808, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1832..1833, }, ), ), prefix: [], suffix: [], span: 1830..1834, }, span: 1830..1834, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Expression", span: 1835..1845, }, ), prefix: [], suffix: [], span: 1835..1846, }, span: 1835..1846, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1849..1850, }, ), ), prefix: [], suffix: [], span: 1847..1851, }, span: 1847..1851, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Expression", span: 1851..1861, }, ), prefix: [], suffix: [], span: 1851..1861, }, span: 1851..1861, }, ], span: 1847..1861, }, ], span: 1847..1861, }, ], span: 1847..1861, }, span: 1846..1862, }, ), prefix: [], suffix: [ Many, ], span: 1846..1863, }, span: 1846..1863, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1866..1867, }, ), ), prefix: [], suffix: [ Optional, ], span: 1864..1868, }, span: 1864..1868, }, ], span: 1835..1868, }, ], span: 1835..1868, }, ], span: 1835..1868, }, span: 1834..1869, }, ), prefix: [], suffix: [ Optional, ], span: 1834..1870, }, span: 1834..1870, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 1873..1874, }, ), ), prefix: [], suffix: [], span: 1871..1875, }, span: 1871..1875, }, ], span: 1830..1875, }, ], span: 1830..1875, }, ], span: 1830..1875, }, span: 1824..1876, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "CallBody", span: 1815..1823, }, span: 1809..1876, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionHard", span: 2021..2035, }, ), prefix: [], suffix: [], span: 2021..2036, }, span: 2021..2036, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2039..2040, }, ), ), prefix: [], suffix: [], span: 2037..2041, }, span: 2037..2041, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionHard", span: 2041..2055, }, ), prefix: [], suffix: [], span: 2041..2055, }, span: 2041..2055, }, ], span: 2037..2055, }, ], span: 2037..2055, }, ], span: 2037..2055, }, span: 2036..2056, }, ), prefix: [], suffix: [ Many, ], span: 2036..2057, }, span: 2036..2057, }, ], span: 2021..2057, }, ], span: 2021..2058, }, ], span: 2021..2058, }, span: 2019..2059, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "Expression", span: 2004..2014, }, span: 1998..2059, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionSoft", span: 2083..2097, }, ), prefix: [], suffix: [], span: 2083..2098, }, span: 2083..2098, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2101..2102, }, ), ), prefix: [], suffix: [], span: 2099..2103, }, span: 2099..2103, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionSoft", span: 2103..2117, }, ), prefix: [], suffix: [], span: 2103..2117, }, span: 2103..2117, }, ], span: 2099..2117, }, ], span: 2099..2117, }, ], span: 2099..2117, }, span: 2098..2118, }, ), prefix: [], suffix: [ Many, ], span: 2098..2119, }, span: 2098..2119, }, ], span: 2083..2119, }, ], span: 2083..2120, }, ], span: 2083..2120, }, span: 2081..2121, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "ExpressionHard", span: 2066..2080, }, span: 2060..2121, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionTag", span: 2145..2158, }, ), prefix: [], suffix: [], span: 2145..2159, }, span: 2145..2159, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "ExpressionTag", span: 2159..2172, }, ), prefix: [], suffix: [ Many, ], span: 2159..2173, }, span: 2159..2173, }, ], span: 2145..2173, }, ], span: 2145..2174, }, ], span: 2145..2174, }, span: 2143..2175, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "ExpressionSoft", span: 2128..2142, }, span: 2122..2175, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: GroupExpression( GroupExpressionNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 2200..2210, }, ), prefix: [], suffix: [], span: 2200..2211, }, span: 2200..2211, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2213..2214, }, ), ), prefix: [], suffix: [], span: 2211..2214, }, span: 2211..2214, }, ], span: 2200..2214, }, ], span: 2200..2214, }, ], span: 2200..2214, }, span: 2199..2215, }, ), prefix: [], suffix: [ Optional, ], span: 2199..2216, }, span: 2199..2216, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Term", span: 2217..2221, }, ), prefix: [], suffix: [], span: 2217..2222, }, span: 2217..2222, }, ], span: 2199..2222, }, ], span: 2199..2222, }, ], span: 2199..2222, }, span: 2197..2223, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "ExpressionTag", span: 2182..2195, }, span: 2176..2223, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Prefix", span: 2241..2247, }, ), prefix: [], suffix: [ Many, ], span: 2241..2248, }, span: 2241..2248, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Atomic", span: 2249..2255, }, ), prefix: [], suffix: [], span: 2249..2256, }, span: 2249..2256, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Suffix", span: 2256..2262, }, ), prefix: [], suffix: [ Many, ], span: 2256..2263, }, span: 2256..2263, }, ], span: 2241..2263, }, ], span: 2241..2264, }, ], span: 2241..2264, }, span: 2235..2265, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "Term", span: 2230..2234, }, span: 2224..2265, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Negative", span: 2292..2300, }, right_associativity: None, span: 2291..2300, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2289..2290, }, ), ), prefix: [], suffix: [], span: 2287..2291, }, span: 2287..2291, }, ], span: 2287..2291, }, ], span: 2287..2291, }, span: 2285..2300, }, UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Positive", span: 2312..2320, }, right_associativity: None, span: 2311..2320, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2309..2310, }, ), ), prefix: [], suffix: [], span: 2307..2311, }, span: 2307..2311, }, ], span: 2307..2311, }, ], span: 2307..2311, }, span: 2305..2320, }, UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Remark", span: 2332..2338, }, right_associativity: None, span: 2331..2338, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2329..2330, }, ), ), prefix: [], suffix: [], span: 2327..2331, }, span: 2327..2331, }, ], span: 2327..2331, }, ], span: 2327..2331, }, span: 2325..2338, }, ], span: 2279..2340, }, name: IdentifierNode { text: "Prefix", span: 2272..2278, }, span: 2266..2340, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Optional", span: 2367..2375, }, right_associativity: None, span: 2366..2375, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2364..2365, }, ), ), prefix: [], suffix: [], span: 2362..2366, }, span: 2362..2366, }, ], span: 2362..2366, }, ], span: 2362..2366, }, span: 2360..2375, }, UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Many", span: 2387..2391, }, right_associativity: None, span: 2386..2391, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2384..2385, }, ), ), prefix: [], suffix: [], span: 2382..2386, }, span: 2382..2386, }, ], span: 2382..2386, }, ], span: 2382..2386, }, span: 2380..2391, }, UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Many1", span: 2403..2408, }, right_associativity: None, span: 2402..2408, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2400..2401, }, ), ), prefix: [], suffix: [], span: 2398..2402, }, span: 2398..2402, }, ], span: 2398..2402, }, ], span: 2398..2402, }, span: 2396..2408, }, ], span: 2354..2410, }, name: IdentifierNode { text: "Suffix", span: 2347..2353, }, span: 2341..2410, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "GroupExpression", span: 2553..2568, }, ), prefix: [], suffix: [], span: 2553..2573, }, span: 2553..2573, }, ], span: 2553..2573, }, ], span: 2553..2573, }, span: 2551..2573, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "FunctionCall", span: 2575..2587, }, ), prefix: [], suffix: [], span: 2575..2592, }, span: 2575..2592, }, ], span: 2575..2592, }, ], span: 2575..2592, }, span: 2573..2592, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Boolean", span: 2594..2601, }, ), prefix: [], suffix: [], span: 2594..2606, }, span: 2594..2606, }, ], span: 2594..2606, }, ], span: 2594..2606, }, span: 2592..2606, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "String", span: 2608..2614, }, ), prefix: [], suffix: [], span: 2608..2619, }, span: 2608..2619, }, ], span: 2608..2619, }, ], span: 2608..2619, }, span: 2606..2619, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "RegexEmbed", span: 2621..2631, }, ), prefix: [], suffix: [], span: 2621..2636, }, span: 2621..2636, }, ], span: 2621..2636, }, ], span: 2621..2636, }, span: 2619..2636, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "RegexRange", span: 2638..2648, }, ), prefix: [], suffix: [], span: 2638..2653, }, span: 2638..2653, }, ], span: 2638..2653, }, ], span: 2638..2653, }, span: 2636..2653, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Identifier", span: 2655..2665, }, ), prefix: [], suffix: [], span: 2655..2666, }, span: 2655..2666, }, ], span: 2655..2666, }, ], span: 2655..2666, }, span: 2653..2666, }, ], span: 2545..2667, }, name: IdentifierNode { text: "Atomic", span: 2538..2544, }, span: 2532..2667, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2698..2699, }, ), ), prefix: [], suffix: [], span: 2696..2700, }, span: 2696..2700, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2702..2703, }, ), ), prefix: [], suffix: [ Optional, ], span: 2700..2704, }, span: 2700..2704, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "Expression", span: 2705..2715, }, ), prefix: [], suffix: [], span: 2705..2716, }, span: 2705..2716, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2718..2719, }, ), ), prefix: [], suffix: [], span: 2716..2720, }, span: 2716..2720, }, ], span: 2696..2720, }, ], span: 2696..2720, }, ], span: 2696..2720, }, span: 2690..2721, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "GroupExpression", span: 2674..2689, }, span: 2668..2721, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "atomic", span: 2844..2850, }, span: 2844..2850, }, ], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Raw", span: 2894..2897, }, right_associativity: None, span: 2893..2897, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Normal( StringNormalNode { string_item: [], span: 2874..2875, }, ), ), prefix: [], suffix: [], span: 2872..2876, }, span: 2872..2876, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "StringRaw", span: 2876..2885, }, ), prefix: [], suffix: [], span: 2876..2886, }, span: 2876..2886, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Normal( StringNormalNode { string_item: [], span: 2888..2889, }, ), ), prefix: [], suffix: [], span: 2886..2893, }, span: 2886..2893, }, ], span: 2872..2893, }, ], span: 2872..2893, }, span: 2870..2897, }, UnionBranchNode { branch_tag: Some( BranchTagNode { identifier: IdentifierNode { text: "Normal", span: 2926..2932, }, right_associativity: None, span: 2925..2932, }, ), expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2906..2907, }, ), ), prefix: [], suffix: [], span: 2904..2908, }, span: 2904..2908, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "StringNormal", span: 2908..2920, }, ), prefix: [], suffix: [], span: 2908..2921, }, span: 2908..2921, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 2923..2924, }, ), ), prefix: [], suffix: [], span: 2921..2925, }, span: 2921..2925, }, ], span: 2904..2925, }, ], span: 2904..2925, }, span: 2902..2932, }, ], span: 2864..2934, }, name: IdentifierNode { text: "String", span: 2857..2863, }, span: 2844..2934, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: RegexEmbed( RegexEmbedNode { regex_inner: RegexInnerNode { text: "[^']*", span: 2963..2968, }, span: 2962..2969, }, ), prefix: [], suffix: [], span: 2962..2970, }, span: 2962..2970, }, ], span: 2962..2970, }, ], span: 2962..2970, }, ], span: 2962..2970, }, span: 2956..2971, }, decorator_call: [], modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "text", span: 2935..2939, }, span: 2935..2939, }, ], op_remark: None, cast: None, name: IdentifierNode { text: "StringRaw", span: 2946..2955, }, span: 2935..2971, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "StringItem", span: 2997..3007, }, ), prefix: [], suffix: [ Many, ], span: 2997..3008, }, span: 2997..3008, }, ], span: 2997..3009, }, ], span: 2997..3009, }, ], span: 2997..3009, }, span: 2991..3010, }, decorator_call: [], modifier_call: [], op_remark: None, cast: None, name: IdentifierNode { text: "StringNormal", span: 2978..2990, }, span: 2972..3010, }, ), UnionStatement( UnionStatementNode { decorator_call: [], modifier_call: [], op_remark: None, union_block: UnionBlockNode { union_branch: [ UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "EscapedUnicode", span: 3036..3050, }, ), prefix: [], suffix: [], span: 3036..3055, }, span: 3036..3055, }, ], span: 3036..3055, }, ], span: 3036..3055, }, span: 3034..3055, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "EscapedCharacter", span: 3057..3073, }, ), prefix: [], suffix: [], span: 3057..3078, }, span: 3057..3078, }, ], span: 3057..3078, }, ], span: 3057..3078, }, span: 3055..3078, }, UnionBranchNode { branch_tag: None, expression_hard: ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "TextAny", span: 3080..3087, }, ), prefix: [], suffix: [], span: 3080..3088, }, span: 3080..3088, }, ], span: 3080..3088, }, ], span: 3080..3088, }, span: 3078..3088, }, ], span: 3028..3089, }, name: IdentifierNode { text: "StringItem", span: 3017..3027, }, span: 3011..3089, }, ), GroupStatement( GroupStatementNode { decorator_call: [ DecoratorCallNode { call_body: CallBodyNode { expression: [ ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "escape", span: 3097..3103, }, ), prefix: [], suffix: [], span: 3097..3103, }, span: 3097..3103, }, ], span: 3097..3103, }, ], span: 3097..3103, }, ], span: 3097..3103, }, ], span: 3096..3104, }, decorator_name: DecoratorNameNode { identifier: IdentifierNode { text: "style", span: 3091..3096, }, span: 3090..3096, }, span: 3090..3104, }, ], group_block: GroupBlockNode { group_pair: [ GroupPairNode { atomic: RegexEmbed( RegexEmbedNode { regex_inner: RegexInnerNode { text: "\\\\\\\\u[0-9a-zA-Z]{4}", span: 3139..3158, }, span: 3138..3159, }, ), identifier: IdentifierNode { text: "EscapedUnicode", span: 3122..3136, }, span: 3122..3159, }, GroupPairNode { atomic: RegexEmbed( RegexEmbedNode { regex_inner: RegexInnerNode { text: "\\\\.", span: 3183..3186, }, span: 3182..3187, }, ), identifier: IdentifierNode { text: "EscapedCharacter", span: 3164..3180, }, span: 3164..3187, }, GroupPairNode { atomic: RegexEmbed( RegexEmbedNode { regex_inner: RegexInnerNode { text: "[^\\\"\\\\]+", span: 3202..3210, }, span: 3201..3211, }, ), identifier: IdentifierNode { text: "TextAny", span: 3192..3199, }, span: 3192..3211, }, ], span: 3116..3213, }, identifier: None, modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "text", span: 3105..3109, }, span: 3105..3109, }, ], span: 3090..3213, }, ), ClassStatement( ClassStatementNode { class_block: ClassBlockNode { expression: ExpressionNode { expression_hard: [ ExpressionHardNode { expression_soft: [ ExpressionSoftNode { expression_tag: [ ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 3367..3368, }, ), ), prefix: [], suffix: [], span: 3365..3369, }, span: 3365..3369, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: Identifier( IdentifierNode { text: "RegexInner", span: 3369..3379, }, ), prefix: [], suffix: [], span: 3369..3380, }, span: 3369..3380, }, ExpressionTagNode { identifier: None, term: TermNode { atomic: String( Raw( StringRawNode { text: "'", span: 3382..3383, }, ), ), prefix: [], suffix: [], span: 3380..3384, }, span: 3380..3384, }, ], span: 3365..3384, }, ], span: 3365..3384, }, ], span: 3365..3384, }, span: 3359..3385, }, decorator_call: [], modifier_call: [ ModifierCallNode { identifier: IdentifierNode { text: "atomic", span: 3335..3341, }, span: 3335..3341, }, ], op_remark: None, cast: None, name: IdentifierNode { text: "RegexEmbed", span: 3348..3358, }, span: 3335..3385, }, ), ], span: 0..3385, }