1 /++
2 This module was automatically generated from the following grammar:
3 
4 
5     ES6:
6         Module                  < ModuleBody eoi
7         ModuleBody              < ModuleItemList
8         ModuleItemList          < (ImportDeclaration / ExportDeclaration / StatementListItem)+
9         ImportDeclaration       < "import" ((ImportClause FromClause) / ModuleSpecifier) ";"
10         ImportClause            < NameSpaceImport / NamedImports / (ImportedDefaultBinding "," NameSpaceImport) / (ImportedDefaultBinding "," NamedImports) / ImportedDefaultBinding
11         ImportedDefaultBinding  < ImportedBinding
12         NameSpaceImport         < "*" "as" ImportedBinding
13         NamedImports            < CurlyBrackets((ImportsList (",")?)?)
14         FromClause              < "from" ModuleSpecifier
15         ImportsList             < ImportSpecifier ("," ImportSpecifier)*
16         ImportSpecifier         < (IdentifierName "as" ImportedBinding) / ImportedBinding
17         ModuleSpecifier         < StringLiteral
18         ImportedBinding         < BindingIdentifier
19         ExportDeclaration       <   / ("export" "*" FromClause ";")
20                                     / ("export" ExportClause FromClause ";")
21                                     / ("export" ExportClause ";")
22                                     / ("export" "default" HoistableDeclarationDefault)
23                                     / ("export" "default" ClassDeclarationDefault)
24                                     / ("export" "default" !("function" / "class") AssignmentExpressionIn ";")
25                                     / ("export" VariableStatement)
26                                     / ("export" Declaration)
27 
28         ExportClause                        < CurlyBrackets((ExportsList (",")?)?)
29         ExportsList                         < ExportSpecifier ("," ExportSpecifier)*
30         ExportSpecifier                     < IdentifierName ("as" IdentifierName)?
31         SourceCharacter                     <- [\u0000-\uFFFC]
32         InputElementDiv                     <- WhiteSpace / LineTerminator / Comment / CommonToken / DivPunctuator / RightBracePunctuator
33         InputElementRegExp                  <- WhiteSpace / LineTerminator / Comment / CommonToken / RightBracePunctuator / RegularExpressionLiteral
34         InputElementRegExpOrTemplateTail    <- WhiteSpace / LineTerminator / Comment / CommonToken / RegularExpressionLiteral / TemplateSubstitutionTail
35         InputElementTemplateTail            <- WhiteSpace / LineTerminator / Comment / CommonToken / DivPunctuator / TemplateSubstitutionTail
36 
37         WhiteSpace                      <- "\u0009" / "\u000B" / "\u000C" / "\u0020" / "\u00A0" / "\uFEFF" / [\u02B0-\u02FF]
38         LineTerminator                  <- "\u000A" / "\u000D" / "\u2028" / "\u2029"
39         LineTerminatorSequence          <- "\u000A" / ("\u000D" !"\u000A") / "\u2028" / "\u2029" / ("\u000D\u000A")
40         Spacing                         <~ (:WhiteSpace / :LineTerminatorSequence / Comment)*
41         Spaces                          <~ (:WhiteSpace / Comment)*
42 
43         Comment                         <~ MultiLineComment / SingleLineComment
44         MultiLineComment                <~ :"/*" (!"*/" SourceCharacter)* :"*/"
45         SingleLineComment               <- :"//" SingleLineCommentChars? eol
46         SingleLineCommentChars          <- SingleLineCommentChar+
47         SingleLineCommentChar           <- !LineTerminator SourceCharacter
48 
49         CommonToken                     <- IdentifierName / Punctuator / NumericLiteral / StringLiteral / Template
50         IdentifierName                  <~ IdentifierStart IdentifierPart*
51         IdentifierStart                 <~ UnicodeIDStart / "$" / "_" / ("\\" UnicodeEscapeSequence)
52         IdentifierPart                  <~ UnicodeIDContinue / "$" / "_" / ("\\" UnicodeEscapeSequence) / "\u200C" / "\u200D"
53         UnicodeIDStart                  <~ ID_Start / Other_ID_Start
54 
55         ID_Start                        <- [\u0041-\u005a] / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6]
56         Other_ID_Start                  <- "\u2118" / "\u212e" / [\u309b-\u309c]
57         UnicodeIDContinue               <- ID_Continue / Other_ID_Continue / Other_ID_Start
58         ID_Continue                     <- [\u0030-\u0039] / [\u0041-\u005a] / "\u005f" / [\u0061-\u007a] / "\u00aa" / "\u00b5" / "\u00b7" / "\u00ba" / [\u00c0-\u00d6] / [\u00d8-\u00f6]
59         Other_ID_Continue               <- "\u00b7" / "\u0387" / [\u1369-\u1371] / "\u19da"
60 
61         ReservedWord                    <- Keyword / FutureReservedWord / NullLiteral / BooleanLiteral
62         Keyword                         <- "break" / "do" / "in" / "typeof" / "case" / "else" / "instanceof" / "var" / "catch" / "export" / "new" / "void" / "class" / "extends" / "return" / "while" / "const" / "finally" / "super" / "with" / "continue" / "for" / "switch" / "yield" / "debugger" / "function" / "this" / "default" / "if" / "throw" / "delete" / "import" / "try"
63         FutureReservedWord              <- "enum" / "await"
64         Punctuator                      <- "{" / "}" / "(" / ")" / "[" / "]" / "." / ";" / "," / "<=" / ">=" / "<" / ">" / "===" / "!==" / "==" / "!=" / "++" / "--" / "*=" / "*" / "%=" / "%" / "+=" / "+" / "-=" / "-" / "<<=" / "<<" / ">>>=" / ">>>" / ">>=" / ">>" / "&&" / "||" / "^=" / "^" / "!" / "~" / "&=" / "&" / "|=" / "|" / "?" / ":" / "=>" / "="
65         DivPunctuator                   <- "/=" / "/"
66         RightBracePunctuator            <- "}"
67         NullLiteral                     <- "null"
68         BooleanLiteral                  <- "true" / "false"
69         NumericLiteral                  <- HexIntegerLiteral / DecimalLiteral / BinaryIntegerLiteral / OctalIntegerLiteral
70         DecimalLiteral                  <~ (DecimalIntegerLiteral ("." DecimalDigits?)? ExponentPart?) / ("." DecimalDigits ExponentPart?)
71         DecimalIntegerLiteral           <- "0" / (NonZeroDigit DecimalDigits?)
72         DecimalDigits                   <~ DecimalDigit+
73         DecimalDigit                    <- [0-9]
74         NonZeroDigit                    <- [1-9]
75         ExponentPart                    <- ExponentIndicator SignedInteger
76         ExponentIndicator               <- "e" / "E"
77         SignedInteger                   <- ("+" / "-")? DecimalDigits
78         BinaryIntegerLiteral            <~ ("0b" / "0B") BinaryDigits
79         BinaryDigits                    <~ BinaryDigit+
80         BinaryDigit                     <- "0" / "1"
81         OctalIntegerLiteral             <~ ("0o" / "0O") OctalDigits
82         OctalDigits                     <- OctalDigit+
83         OctalDigit                      <- [0-7]
84         HexIntegerLiteral               <~ ("0x" / "0X") HexDigits
85         HexDigits                       <- HexDigit+
86         HexDigit                        <- [0-9a-fA-F]
87 
88         StringLiteral                   <~ ("\"" DoubleStringCharacters? "\"") / ("'" SingleStringCharacters? "'")
89         DoubleStringCharacters          <- DoubleStringCharacter+
90         SingleStringCharacters          <- SingleStringCharacter+
91         DoubleStringCharacter           <- (!("\"" / "\\" / LineTerminator) SourceCharacter) / ("\\" EscapeSequence) / LineContinuation
92         SingleStringCharacter           <- (!("\'" / "\\" / LineTerminator) SourceCharacter) / ("\\" EscapeSequence) / LineContinuation
93         LineContinuation                <- "\\" LineTerminatorSequence
94         EscapeSequence                  <- (CharacterEscapeSequence / ("0" !DecimalDigit)) / HexEscapeSequence / UnicodeEscapeSequence
95         CharacterEscapeSequence         <- SingleEscapeCharacter / NonEscapeCharacter
96         SingleEscapeCharacter           <- "'" / "\"" / "\\" / "b" / "f" / "n" / "r" / "t" / "v"
97         NonEscapeCharacter              <- !(EscapeCharacter / LineTerminator) SourceCharacter
98         EscapeCharacter                 <- SingleEscapeCharacter / DecimalDigit / "x" / "u"
99         HexEscapeSequence               <- "x" HexDigit HexDigit
100         UnicodeEscapeSequence           <- ("u" Hex4Digits) / "u{" HexDigits "}"
101         Hex4Digits                      <- HexDigit HexDigit HexDigit HexDigit
102 
103         RegularExpressionLiteral        <- "/" RegularExpressionBody "/" RegularExpressionFlags
104         RegularExpressionBody           <- RegularExpressionFirstChar RegularExpressionChars
105         RegularExpressionChars          <- RegularExpressionChar*
106 
107         RegularExpressionFirstChar          <- (!("*" / "\\" / "/" / "[") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence / RegularExpressionClass
108         RegularExpressionChar               <- (!("\\" / "/" / "[") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence / RegularExpressionClass
109         RegularExpressionBackslashSequence  <- "\\" RegularExpressionNonTerminator
110         RegularExpressionNonTerminator      <- !LineTerminator SourceCharacter
111         RegularExpressionClass              <- :"[" RegularExpressionClassChars :"]"
112         RegularExpressionClassChars         <- RegularExpressionClassChar*
113         RegularExpressionClassChar          <- (!("]" / "\\") RegularExpressionNonTerminator) / RegularExpressionBackslashSequence
114         RegularExpressionFlags              <- IdentifierPart*
115 
116         Template                            <- NoSubstitutionTemplate / TemplateHead
117         NoSubstitutionTemplate              <- :"\u0060" TemplateCharacters? :"\u0060"
118         TemplateHead                        <- :"\u0060" TemplateCharacters? :"${"
119         TemplateSubstitutionTail            <- TemplateMiddle / TemplateTail
120         TemplateMiddle                      <- :"}" TemplateCharacters? :"${"
121         TemplateTail                        <- :"}" TemplateCharacters? :"\u0060"
122         TemplateCharacters                  <- TemplateCharacter+
123         TemplateCharacter                   <- ("$" !"{") / ("\\" EscapeSequence) / LineContinuation / LineTerminatorSequence / (!("\u0060" / "\\" / "$" / LineTerminator) SourceCharacter)
124 
125         IdentifierReference                 < Identifier / "yield"
126         IdentifierReferenceYield            < Identifier
127         BindingIdentifier                   < Identifier / "yield"
128         BindingIdentifierYield              < Identifier
129         LabelIdentifier                     < Identifier / "yield"
130         LabelIdentifierYield                < Identifier
131         Identifier                          <- !(ReservedWord (WhiteSpace / LineTerminatorSequence / Comment / ";" / ":")) IdentifierName
132         ThisKeyword                         <- ("this" !IdentifierPart)
133 
134         PrimaryExpression                                       < ThisKeyword / Literal / ArrayLiteral / ObjectLiteral / GeneratorExpression / ClassExpression / FunctionExpression / RegularExpressionLiteral / TemplateLiteral / CoverParenthesizedExpressionAndArrowParameterList / IdentifierReference
135         PrimaryExpressionYield                                  < ThisKeyword / Literal / ArrayLiteralYield / ObjectLiteralYield / GeneratorExpression / ClassExpressionYield / FunctionExpression / RegularExpressionLiteral / TemplateLiteralYield / CoverParenthesizedExpressionAndArrowParameterListYield / IdentifierReferenceYield
136         CoverParenthesizedExpressionAndArrowParameterList       < Parentheses(ExpressionIn "," "..." BindingIdentifier) / Parentheses("..." BindingIdentifier) / Parentheses(ExpressionIn?)
137         CoverParenthesizedExpressionAndArrowParameterListYield  < Parentheses(ExpressionInYield "," "..." BindingIdentifierYield) / Parentheses("..." BindingIdentifierYield) / Parentheses(ExpressionInYield?)
138 
139         ParenthesizedExpression         < Parentheses(ExpressionIn)
140         ParenthesizedExpressionYield    < Parentheses(ExpressionInYield)
141         Literal                         <- ((NullLiteral / BooleanLiteral / NumericLiteral) !(IdentifierStart / IdentifierPart)) / StringLiteral
142         ArrayLiteral                    < SquareBrackets(ElementList? Elision?)
143         ArrayLiteralYield               < SquareBrackets(ElementListYield? Elision?)
144         ElementList                     < Elision? (AssignmentExpressionIn / SpreadElement) (:"," Elision? (AssignmentExpressionIn / SpreadElement))*
145         ElementListYield                < Elision? (AssignmentExpressionInYield / SpreadElementYield) (:"," Elision? (AssignmentExpressionInYield / SpreadElementYield))*
146         Elision                         < ","+
147         SpreadElement                   < :"..." AssignmentExpressionIn
148         SpreadElementYield              < :"..." AssignmentExpressionInYield
149         ObjectLiteral                   < CurlyBrackets((PropertyDefinitionList :","?)?)
150         ObjectLiteralYield              < CurlyBrackets((PropertyDefinitionListYield :","?)?)
151         PropertyDefinitionList          < PropertyDefinition ("," PropertyDefinition)*
152         PropertyDefinitionListYield     < PropertyDefinitionYield ("," PropertyDefinitionYield)*
153         PropertyDefinition              < MethodDefinition / CoverInitializedName / (PropertyName ":" AssignmentExpressionIn) / IdentifierReference
154         PropertyDefinitionYield         < MethodDefinitionYield / CoverInitializedNameYield / (PropertyNameYield ":" AssignmentExpressionInYield) / IdentifierReferenceYield
155         PropertyName                    < ComputedPropertyName / LiteralPropertyName
156         PropertyNameYield               < ComputedPropertyNameYield / LiteralPropertyName
157         LiteralPropertyName             < NumericLiteral / StringLiteral / IdentifierName
158         ComputedPropertyName            < SquareBrackets(AssignmentExpressionIn)
159         ComputedPropertyNameYield       < SquareBrackets(AssignmentExpressionInYield)
160         CoverInitializedName            < IdentifierReference InitializerIn
161         CoverInitializedNameYield       < IdentifierReferenceYield InitializerInYield
162         Initializer                     < :"=" AssignmentExpression
163         InitializerIn                   < :"=" AssignmentExpressionIn
164         InitializerYield                < :"=" AssignmentExpressionYield
165         InitializerInYield              < :"=" AssignmentExpressionInYield
166         TemplateLiteral                 < NoSubstitutionTemplate / (TemplateHead ExpressionIn TemplateSpans)
167         TemplateLiteralYield            < NoSubstitutionTemplate / (TemplateHead ExpressionInYield TemplateSpansYield)
168         TemplateSpans                   < TemplateMiddleList? TemplateTail
169         TemplateSpansYield              < TemplateMiddleListYield? TemplateTail
170         TemplateMiddleList              < TemplateMiddleList? TemplateMiddle ExpressionIn
171         TemplateMiddleListYield         < TemplateMiddleListYield? TemplateMiddle ExpressionInYield
172         FieldAccessor                   < "." IdentifierName
173         MemberExpression                < ((SuperProperty / MetaProperty / PrimaryExpression) / (NewKeyword ((SuperProperty / MetaProperty / PrimaryExpression) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral)*) Arguments)) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral)*
174         MemberExpressionYield           < ((SuperPropertyYield / MetaProperty / PrimaryExpressionYield) / (NewKeyword ((SuperPropertyYield / MetaProperty / PrimaryExpressionYield) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield)*) ArgumentsYield)) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield)*
175         SuperProperty                   < (:"super" SquareBrackets(ExpressionIn)) / (:"super" FieldAccessor)
176         SuperPropertyYield              < (:"super" SquareBrackets(ExpressionInYield)) / (:"super" FieldAccessor)
177         MetaProperty                    < NewTarget
178         NewKeyword						<- "new" !(IdentifierStart / IdentifierPart)
179         NewTarget                       < :"new" "." :"target"
180         NewExpression                   < MemberExpression / ((NewKeyword WhiteSpace?)* MemberExpression)
181         NewExpressionYield              < MemberExpressionYield / ((NewKeyword WhiteSpace?)* MemberExpressionYield)
182         CallExpression                  < (SuperCall / (MemberExpression Arguments)) (SquareBrackets(ExpressionIn) / (FieldAccessor) / TemplateLiteral / Arguments)*
183         CallExpressionYield             < (SuperCallYield / (MemberExpressionYield ArgumentsYield)) (SquareBrackets(ExpressionInYield) / (FieldAccessor) / TemplateLiteralYield / ArgumentsYield)*
184         SuperCall                       < :"super" Arguments
185         SuperCallYield                  < :"super" ArgumentsYield
186         Arguments                       < Parentheses(ArgumentList?)
187         ArgumentsYield                  < Parentheses(ArgumentListYield?)
188         ArgumentList                    < "..."? AssignmentExpressionIn ("," ArgumentList)*
189         ArgumentListYield               < "..."? AssignmentExpressionInYield ("," ArgumentListYield)*
190         LeftHandSideExpression          < CallExpression / NewExpression
191         LeftHandSideExpressionYield     < CallExpressionYield / NewExpressionYield
192         PostfixExpression               < LeftHandSideExpression (Spaces (PostfixOperator))?
193         PostfixExpressionYield          < LeftHandSideExpressionYield (Spaces (PostfixOperator))?
194         PostfixOperator                 < "++" / "--"
195         PrefixExpression                <- ((("delete" / "void" / "typeof") !(IdentifierStart / IdentifierPart)) / "++" / "--" / "+" / "-" / "~" / "!")
196         UnaryExpression                 < PrefixExpression* PostfixExpression
197         UnaryExpressionYield            < PrefixExpression* PostfixExpressionYield
198         RightHandSideExpression         < BinaryExpression / UnaryExpression
199         RightHandSideExpressionIn       < BinaryExpressionIn / UnaryExpression
200         RightHandSideExpressionYield    < BinaryExpressionYield / UnaryExpressionYield
201         RightHandSideExpressionInYield  < BinaryExpressionInYield / UnaryExpressionYield
202         BinaryExpression                < UnaryExpression (ExpressionOperator UnaryExpression)+
203         BinaryExpressionIn              < UnaryExpression (ExpressionOperatorIn UnaryExpression)+
204         BinaryExpressionYield           < UnaryExpressionYield (ExpressionOperator UnaryExpressionYield)+
205         BinaryExpressionInYield         < UnaryExpressionYield (ExpressionOperatorIn UnaryExpressionYield)+
206         ExpressionOperator              < LogicalOperator / BitwiseOperator / EqualityOperator / ShiftOperator / RelationalOperator / AdditiveOperator / MultiplicativeOperator
207         ExpressionOperatorIn            < LogicalOperator / BitwiseOperator / EqualityOperator / ShiftOperator / RelationalOperatorIn / AdditiveOperator / MultiplicativeOperator
208         LogicalOperator                 < "||" / "&&"
209         BitwiseOperator                 < "|" / "^" / "&"
210         EqualityOperator                < "===" / "!==" / "==" / "!="
211         RelationalOperator              < "<=" / ">=" / "<" / ">" / "instanceof"
212         RelationalOperatorIn            < "<=" / ">=" / "<" / ">" / "instanceof" / "in"
213         ShiftOperator                   < "<<" / ">>>" / ">>"
214         AdditiveOperator                <- "+" / "-"
215         MultiplicativeOperator          < "*" / "/" / "%"
216         ConditionalExpression           < RightHandSideExpression ("?" AssignmentExpressionIn ":" AssignmentExpression)?
217         ConditionalExpressionIn         < RightHandSideExpressionIn ("?" AssignmentExpressionIn ":" AssignmentExpressionIn)?
218         ConditionalExpressionYield      < RightHandSideExpressionYield ("?" AssignmentExpressionInYield ":" AssignmentExpressionYield)?
219         ConditionalExpressionInYield    < RightHandSideExpressionInYield ("?" AssignmentExpressionInYield ":" AssignmentExpressionInYield)?
220         AssignmentExpression            < ((JSXElement / ArrowFunction / ConditionalExpression) !AssignmentOperator) / ((LeftHandSideExpression AssignmentOperator)* (JSXElement / ArrowFunction / ConditionalExpression))
221         AssignmentExpressionIn          < ((JSXElement / ArrowFunctionIn / ConditionalExpressionIn) !AssignmentOperator) / ((LeftHandSideExpression AssignmentOperator)* (JSXElement / ArrowFunctionIn / ConditionalExpressionIn))
222         AssignmentExpressionYield       < (YieldExpression / ArrowFunctionYield / ConditionalExpressionYield) / ((LeftHandSideExpressionYield AssignmentOperator)* (YieldExpression / ArrowFunctionYield / ConditionalExpressionYield))
223         AssignmentExpressionInYield     < (YieldExpressionIn / ArrowFunctionInYield / ConditionalExpressionInYield) / ((LeftHandSideExpressionYield AssignmentOperator)* (YieldExpressionIn / ArrowFunctionInYield / ConditionalExpressionInYield))
224         AssignmentOperator              < (!"==" "=") / "*=" / "/=" / "%=" / "+=" / "-=" / "<<=" / ">>=" / ">>>=" / "&=" / "^=" / "|="
225         Comma                           < ","
226         Expression                      < AssignmentExpression (Comma AssignmentExpression)*
227         ExpressionIn                    < AssignmentExpressionIn (Comma AssignmentExpressionIn)*
228         ExpressionYield                 < AssignmentExpressionYield (Comma AssignmentExpressionYield)*
229         ExpressionInYield               < AssignmentExpressionInYield (Comma AssignmentExpressionInYield)*
230 
231         Statement                       < (BlockStatement / VariableStatement / EmptyStatement / IfStatement / BreakableStatement / ContinueStatement / BreakStatement / WithStatement / LabelledStatement / ThrowStatement / TryStatement / DebuggerStatement / ExpressionStatement) :";"?
232         StatementYield                  < (BlockStatementYield / VariableStatementYield / EmptyStatement / IfStatementYield / BreakableStatementYield / ContinueStatementYield / BreakStatementYield / WithStatementYield / LabelledStatementYield / ThrowStatementYield / TryStatementYield / DebuggerStatement / ExpressionStatementYield) :";"?
233         StatementReturn                 < (BlockStatementReturn / VariableStatement / EmptyStatement / IfStatementReturn / BreakableStatementReturn / ContinueStatement / BreakStatement / ReturnStatement / WithStatementReturn / LabelledStatementReturn / ThrowStatement / TryStatementReturn / DebuggerStatement / ExpressionStatement) :";"?
234         StatementYieldReturn            < (BlockStatementYieldReturn / VariableStatementYield / EmptyStatement / IfStatementYieldReturn / BreakableStatementYieldReturn / ContinueStatementYield / BreakStatementYield / ReturnStatementYield / WithStatementYieldReturn / LabelledStatementYieldReturn / ThrowStatementYield / TryStatementYieldReturn / DebuggerStatement / ExpressionStatementYield) :";"?
235 
236         Declaration                         < HoistableDeclaration / ClassDeclaration / LexicalDeclarationIn
237         DeclarationYield                    < HoistableDeclarationYield / ClassDeclarationYield / LexicalDeclarationInYield
238         HoistableDeclaration                < GeneratorDeclaration / FunctionDeclaration
239         HoistableDeclarationYield           < GeneratorDeclarationYield / FunctionDeclarationYield
240         HoistableDeclarationDefault         < GeneratorDeclarationDefault / FunctionDeclarationDefault
241         HoistableDeclarationYieldDefault    < GeneratorDeclarationYieldDefault / FunctionDeclarationYieldDefault
242 
243         BreakableStatement                  < IterationStatement / SwitchStatement
244         BreakableStatementYield             < IterationStatementYield / SwitchStatementYield
245         BreakableStatementReturn            < IterationStatementReturn / SwitchStatementReturn
246         BreakableStatementYieldReturn       < IterationStatementYieldReturn / SwitchStatementYieldReturn
247 
248         BlockStatement                      < %Block
249         BlockStatementYield                 < %BlockYield
250         BlockStatementReturn                < %BlockReturn
251         BlockStatementYieldReturn           < %BlockYieldReturn
252 
253         Block                               < CurlyBrackets(StatementList)
254         BlockYield                          < CurlyBrackets(StatementListYield)
255         BlockReturn                         < CurlyBrackets(StatementListReturn)
256         BlockYieldReturn                    < CurlyBrackets(StatementListYieldReturn)
257 
258         StatementList                       < StatementListItem*
259         StatementListYield                  < StatementListItemYield*
260         StatementListReturn                 < StatementListItemReturn*
261         StatementListYieldReturn            < StatementListItemYieldReturn*
262 
263         StatementListItem                   < Declaration / Statement
264         StatementListItemYield              < DeclarationYield / StatementYield
265         StatementListItemReturn             < Declaration / StatementReturn
266         StatementListItemYieldReturn        < DeclarationYield / StatementYieldReturn
267 
268         LexicalDeclaration                  < LetOrConst BindingList :";"
269         LexicalDeclarationIn                < LetOrConst BindingListIn :";"
270         LexicalDeclarationYield             < LetOrConst BindingListYield :";"
271         LexicalDeclarationInYield           < LetOrConst BindingListInYield :";"
272         LetOrConst                          < ("let" / "const")
273 
274         BindingList                         < LexicalBinding (:"," LexicalBinding)*
275         BindingListIn                       < LexicalBindingIn (:"," LexicalBindingIn)*
276         BindingListYield                    < LexicalBindingYield (:"," LexicalBindingYield)*
277         BindingListInYield                  < LexicalBindingInYield (:"," LexicalBindingInYield)*
278 
279         LexicalBinding                      < (BindingPatternYield Initializer) / (BindingIdentifier Initializer?)
280         LexicalBindingIn                    < (BindingPatternYield InitializerIn) / (BindingIdentifier InitializerIn?)
281         LexicalBindingYield                 < (BindingPatternYield InitializerYield) / (BindingIdentifierYield InitializerYield?)
282         LexicalBindingInYield               < (BindingPatternYield InitializerInYield) / (BindingIdentifierYield InitializerInYield?)
283 
284         VariableStatement                   < :"var" VariableDeclarationListIn
285         VariableStatementYield              < :"var" VariableDeclarationListInYield
286 
287         VariableDeclarationList             < VariableDeclaration (:"," VariableDeclaration)*
288         VariableDeclarationListIn           < VariableDeclarationIn (:"," VariableDeclarationIn)*
289         VariableDeclarationListYield        < VariableDeclarationYield (:"," VariableDeclarationYield)*
290         VariableDeclarationListInYield      < VariableDeclarationInYield (:"," VariableDeclarationInYield)*
291 
292         VariableDeclaration             < (BindingPattern Initializer) / (BindingIdentifier Initializer?)
293         VariableDeclarationIn           < (BindingPattern InitializerIn) / (BindingIdentifier InitializerIn?)
294         VariableDeclarationYield        < (BindingPatternYield InitializerYield) / (BindingIdentifierYield InitializerYield?)
295         VariableDeclarationInYield      < (BindingPatternYield InitializerInYield) / (BindingIdentifierYield InitializerInYield?)
296 
297         BindingPattern                  < ObjectBindingPattern / ArrayBindingPattern
298         BindingPatternYield             < ObjectBindingPatternYield / ArrayBindingPatternYield
299         ObjectBindingPattern            < CurlyBrackets((BindingPropertyList (:",")?)?)
300         ObjectBindingPatternYield       < CurlyBrackets((BindingPropertyListYield (:",")?)?)
301 
302         ArrayBindingPattern             < SquareBrackets(Elision? BindingRestElement?) / SquareBrackets(BindingElementList (:"," Elision? BindingRestElement?)?) / SquareBrackets(BindingElementList)
303         ArrayBindingPatternYield        < SquareBrackets(Elision? BindingRestElementYield?) / SquareBrackets(BindingElementListYield (:"," Elision? BindingRestElementYield?)?) / SquareBrackets(BindingElementListYield)
304         BindingPropertyList             < BindingProperty (:"," BindingProperty)*
305         BindingPropertyListYield        < BindingPropertyYield (:"," BindingPropertyYield)*
306         BindingElementList              < BindingElisionElement (:"," BindingElisionElement)*
307         BindingElementListYield         < BindingElisionElementYield (:"," BindingElisionElementYield)*
308         BindingElisionElement           < Elision? BindingElement
309         BindingElisionElementYield      < Elision? BindingElementYield
310         BindingProperty                 < (PropertyName ":" BindingElement) / SingleNameBinding
311         BindingPropertyYield            < (PropertyNameYield ":" BindingElementYield) / SingleNameBindingYield
312         BindingElement                  < (BindingPattern InitializerIn?) / SingleNameBinding
313         BindingElementYield             < (BindingPatternYield InitializerInYield?) / SingleNameBindingYield
314         SingleNameBinding               < BindingIdentifier InitializerIn?
315         SingleNameBindingYield          < BindingIdentifierYield InitializerInYield?
316         BindingRestElement              < :"..." BindingIdentifier
317         BindingRestElementYield         < :"..." BindingIdentifierYield
318 
319         EmptyStatement                  < ";"
320 
321         ExpressionStatement             < !("{" / (("function" / "class" / ("let" "[")) !(IdentifierStart / IdentifierPart))) ExpressionIn
322         ExpressionStatementYield        < !("{" / (("function" / "class" / ("let" "[")) !(IdentifierStart / IdentifierPart))) ExpressionInYield
323         ElseKeyword                     < "else"
324         IfStatement                     < :"if" Parentheses(ExpressionIn) Statement (ElseKeyword Statement)?
325         IfStatementYield                < :"if" Parentheses(ExpressionInYield) StatementYield (ElseKeyword StatementYield)?
326         IfStatementReturn               < :"if" Parentheses(ExpressionIn) StatementReturn (ElseKeyword StatementReturn)?
327         IfStatementYieldReturn          < :"if" Parentheses(ExpressionInYield) StatementYieldReturn (ElseKeyword StatementYieldReturn)?
328 
329         DoKeyword                       <- "do" !(IdentifierStart / IdentifierPart)
330         WhileKeyword                    < "while"
331         ForKeyword                      < "for"
332         VarKeyword                      < "var"
333         InKeyword                       < "in"
334         OfKeyword                       < "of"
335         Semicolon                       < ";"
336         IterationStatement              < 
337                                             / (DoKeyword Statement WhileKeyword Parentheses(ExpressionIn) Semicolon)
338                                             / (WhileKeyword Parentheses(ExpressionIn) Statement)
339                                             / (ForKeyword Parentheses(VarKeyword VariableDeclarationList Semicolon ExpressionIn? Semicolon ExpressionIn?) Statement)
340                                             / (ForKeyword Parentheses(VarKeyword ForBinding ((InKeyword ExpressionIn) / (OfKeyword AssignmentExpressionIn))) Statement)
341                                             / (ForKeyword Parentheses(ForDeclaration InKeyword ExpressionIn) Statement)
342                                             / (ForKeyword Parentheses(ForDeclaration OfKeyword AssignmentExpressionIn) Statement)
343                                             / (ForKeyword Parentheses(LexicalDeclaration ExpressionIn? Semicolon ExpressionIn?) Statement)
344                                             / (ForKeyword Parentheses(!("let" "[") Expression? Semicolon ExpressionIn? Semicolon ExpressionIn?) Statement)
345                                             / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpression InKeyword ExpressionIn) Statement)
346                                             / (ForKeyword Parentheses(!("let") LeftHandSideExpression OfKeyword AssignmentExpressionIn) Statement)
347         IterationStatementYield         < 
348                                             / (DoKeyword StatementYield WhileKeyword Parentheses(ExpressionInYield) Semicolon)
349                                             / (WhileKeyword Parentheses(ExpressionInYield) StatementYield)
350                                             / (ForKeyword Parentheses(VarKeyword VariableDeclarationListYield Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYield)
351                                             / (ForKeyword Parentheses(VarKeyword ForBindingYield ((InKeyword ExpressionInYield) / (OfKeyword AssignmentExpressionInYield))) StatementYield)
352                                             / (ForKeyword Parentheses(ForDeclarationYield InKeyword ExpressionInYield) StatementYield)
353                                             / (ForKeyword Parentheses(ForDeclarationYield OfKeyword AssignmentExpressionInYield) StatementYield)
354                                             / (ForKeyword Parentheses(LexicalDeclarationYield ExpressionInYield? Semicolon ExpressionInYield?) StatementYield)
355                                             / (ForKeyword Parentheses(!("let" "[") ExpressionYield? Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYield)
356                                             / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpressionYield InKeyword ExpressionInYield) StatementYield)
357                                             / (ForKeyword Parentheses(!("let") LeftHandSideExpressionYield OfKeyword AssignmentExpressionInYield) StatementYield)
358         IterationStatementReturn        < 
359                                             / (DoKeyword StatementReturn WhileKeyword Parentheses(ExpressionIn) Semicolon)
360                                             / (WhileKeyword Parentheses(ExpressionIn) StatementReturn)
361                                             / (ForKeyword Parentheses(VarKeyword VariableDeclarationList Semicolon ExpressionIn? Semicolon ExpressionIn?) StatementReturn)
362                                             / (ForKeyword Parentheses(VarKeyword ForBinding ((InKeyword ExpressionIn) / (OfKeyword AssignmentExpressionIn))) StatementReturn)
363                                             / (ForKeyword Parentheses(ForDeclaration InKeyword ExpressionIn) StatementReturn)
364                                             / (ForKeyword Parentheses(ForDeclaration OfKeyword AssignmentExpressionIn) StatementReturn)
365                                             / (ForKeyword Parentheses(LexicalDeclaration ExpressionIn? Semicolon ExpressionIn?) StatementReturn)
366                                             / (ForKeyword Parentheses(!("let" "[") Expression? Semicolon ExpressionIn? Semicolon ExpressionIn?) StatementReturn)
367                                             / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpression InKeyword ExpressionIn) StatementReturn)
368                                             / (ForKeyword Parentheses(!("let") LeftHandSideExpression OfKeyword AssignmentExpressionIn) StatementReturn)
369         IterationStatementYieldReturn   < 
370                                             / (DoKeyword StatementYieldReturn WhileKeyword Parentheses(ExpressionInYield) Semicolon)
371                                             / (WhileKeyword Parentheses(ExpressionInYield) StatementYieldReturn)
372                                             / (ForKeyword Parentheses(VarKeyword VariableDeclarationListYield Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn)
373                                             / (ForKeyword Parentheses(VarKeyword ForBindingYield ((InKeyword ExpressionInYield) / (OfKeyword AssignmentExpressionInYield))) StatementYieldReturn)
374                                             / (ForKeyword Parentheses(ForDeclarationYield InKeyword ExpressionInYield) StatementYieldReturn)
375                                             / (ForKeyword Parentheses(ForDeclarationYield OfKeyword AssignmentExpressionInYield) StatementYieldReturn)
376                                             / (ForKeyword Parentheses(LexicalDeclarationYield ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn)
377                                             / (ForKeyword Parentheses(!("let" "[") ExpressionYield? Semicolon ExpressionInYield? Semicolon ExpressionInYield?) StatementYieldReturn)
378                                             / (ForKeyword Parentheses(!("let" "[") LeftHandSideExpressionYield InKeyword ExpressionInYield) StatementYieldReturn)
379                                             / (ForKeyword Parentheses(!("let") LeftHandSideExpressionYield OfKeyword AssignmentExpressionInYield) StatementYieldReturn)
380 
381         ForDeclaration              < LetOrConst ForBinding
382         ForDeclarationYield         < LetOrConst ForBindingYield
383         ForBinding                  < BindingPattern / BindingIdentifier
384         ForBindingYield             < BindingPatternYield / BindingIdentifierYield
385         ContinueStatement           <- (("continue" !(IdentifierStart) Spaces LabelIdentifier) / ("continue" !(IdentifierStart / IdentifierPart))) Spaces :";"?
386         ContinueStatementYield      <- (("continue" !(IdentifierStart) Spaces LabelIdentifierYield) / ("continue" !(IdentifierStart / IdentifierPart))) Spaces :";"?
387         BreakStatement              <- (("break" !(IdentifierStart) Spaces LabelIdentifier) / ("break" !(IdentifierStart / IdentifierPart))) Spaces :";"?
388         BreakStatementYield         <- (("break" !(IdentifierStart) Spaces LabelIdentifierYield) / ("break" !(IdentifierStart / IdentifierPart))) Spaces :";"?
389         ReturnStatement             <- (("return" !(IdentifierStart) Spaces ExpressionIn) / ("return" !(IdentifierStart / IdentifierPart))) Spaces :";"?
390         ReturnStatementYield        <- (("return" !(IdentifierStart) Spaces ExpressionInYield) / ("return" !(IdentifierStart / IdentifierPart))) Spaces :";"?
391 
392         WithStatement               < :"with" Parentheses(ExpressionIn) Statement
393         WithStatementYield          < :"with" Parentheses(ExpressionInYield) StatementYield
394         WithStatementReturn         < :"with" Parentheses(ExpressionIn) StatementReturn
395         WithStatementYieldReturn    < :"with" Parentheses(ExpressionInYield) StatementYieldReturn
396 
397         SwitchStatement             < :"switch" Parentheses(ExpressionIn) CaseBlock
398         SwitchStatementYield        < :"switch" Parentheses(ExpressionInYield) CaseBlockYield
399         SwitchStatementReturn       < :"switch" Parentheses(ExpressionIn) CaseBlockReturn
400         SwitchStatementYieldReturn  < :"switch" Parentheses(ExpressionInYield) CaseBlockYieldReturn
401 
402         CaseBlock                   < CurlyBrackets(CaseClauses? DefaultClause? CaseClauses?)
403         CaseBlockYield              < CurlyBrackets(CaseClausesYield? DefaultClauseYield? CaseClausesYield?)
404         CaseBlockReturn             < CurlyBrackets(CaseClausesReturn? DefaultClauseReturn? CaseClausesReturn?)
405         CaseBlockYieldReturn        < CurlyBrackets(CaseClausesYieldReturn? DefaultClauseYieldReturn? CaseClausesYieldReturn?)
406 
407         CaseClauses                 < CaseClause+
408         CaseClausesYield            < CaseClauseYield+
409         CaseClausesReturn           < CaseClauseReturn+
410         CaseClausesYieldReturn      < CaseClauseYieldReturn+
411 
412         CaseClause                  < :"case" ExpressionIn :":" StatementList?
413         CaseClauseYield             < :"case" ExpressionInYield :":" StatementListYield?
414         CaseClauseReturn            < :"case" ExpressionIn :":" StatementListReturn?
415         CaseClauseYieldReturn       < :"case" ExpressionInYield :":" StatementListYieldReturn?
416 
417         DefaultClause               < :"default" :":" StatementList?
418         DefaultClauseYield          < :"default" :":" StatementListYield?
419         DefaultClauseReturn         < :"default" :":" StatementListReturn?
420         DefaultClauseYieldReturn    < :"default" :":" StatementListYieldReturn?
421 
422         LabelledStatement               < LabelIdentifier :":" LabelledItem
423         LabelledStatementYield          < LabelIdentifierYield :":" LabelledItemYield
424         LabelledStatementReturn         < LabelIdentifier :":" LabelledItemReturn
425         LabelledStatementYieldReturn    < LabelIdentifierYield :":" LabelledItemYieldReturn
426 
427         LabelledItem                < FunctionDeclaration / Statement
428         LabelledItemYield           < FunctionDeclarationYield / StatementYield
429         LabelledItemReturn          < FunctionDeclaration / StatementReturn
430         LabelledItemYieldReturn     < FunctionDeclarationYield / StatementYieldReturn
431 
432         ThrowStatement              <- "throw" !(IdentifierStart) Spaces ExpressionIn Spaces :";"?
433         ThrowStatementYield         <- "throw" !(IdentifierStart) Spaces ExpressionInYield Spaces :";"?
434 
435         TryStatement                < :"try" %Block Catch? Finally?
436         TryStatementYield           < :"try" %BlockYield CatchYield? FinallyYield?
437         TryStatementReturn          < :"try" %BlockReturn CatchReturn? FinallyReturn?
438         TryStatementYieldReturn     < :"try" %BlockYieldReturn CatchYieldReturn? FinallyYieldReturn?
439 
440         Catch                       < :"catch" Parentheses(CatchParameter) %Block
441         CatchYield                  < :"catch" Parentheses(CatchParameterYield) %BlockYield
442         CatchReturn                 < :"catch" Parentheses(CatchParameter) %BlockReturn
443         CatchYieldReturn            < :"catch" Parentheses(CatchParameterYield) %BlockYieldReturn
444 
445         Finally                     < :"finally" %Block
446         FinallyYield                < :"finally" %BlockYield
447         FinallyReturn               < :"finally" %BlockReturn
448         FinallyYieldReturn          < :"finally" %BlockYieldReturn
449 
450         CatchParameter              < BindingPattern / BindingIdentifier
451         CatchParameterYield         < BindingPatternYield / BindingIdentifierYield
452 
453         DebuggerStatement               < :"debugger" :";"
454         CurlyBrackets(Content)          < "{" Content "}"
455         Parentheses(Content)            < "(" Content ")"
456         SquareBrackets(Content)         < "[" Content "]"
457 
458         FunctionDeclaration                 < (:"function" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(FunctionBody))
459         FunctionDeclarationYield            < (:"function" BindingIdentifierYield Parentheses(FormalParameters) CurlyBrackets(FunctionBody))
460         FunctionDeclarationDefault          < (:"function" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) / (:"function" Parentheses(FormalParameters) CurlyBrackets(FunctionBody))
461         FunctionDeclarationYieldDefault     < (:"function" BindingIdentifierYield Parentheses(FormalParameters) CurlyBrackets(FunctionBody)) / (:"function" Parentheses(FormalParameters) CurlyBrackets(FunctionBody))
462         
463         FunctionExpression                  < "function" BindingIdentifier? Parentheses(FormalParameters) CurlyBrackets(FunctionBody)
464 
465         StrictFormalParameters          < FormalParameters
466         StrictFormalParametersYield     < FormalParametersYield
467         FormalParameters                < FormalParameterList?
468         FormalParametersYield           < FormalParameterListYield?
469         FormalParameterList             < FunctionRestParameter / (FormalsList (:"," FunctionRestParameter)?)
470         FormalParameterListYield        < FunctionRestParameterYield / (FormalsListYield (:"," FunctionRestParameterYield)?)
471         FormalsList                     < FormalParameter (:"," FormalParameter)*
472         FormalsListYield                < FormalParameterYield (:"," FormalParameterYield)*
473         FunctionRestParameter           < BindingRestElement
474         FunctionRestParameterYield      < BindingRestElementYield
475         FormalParameter                 < BindingElement
476         FormalParameterYield            < BindingElementYield
477         FunctionBody                    < FunctionStatementList
478         FunctionBodyYield               < FunctionStatementListYield
479         FunctionStatementList           < StatementListReturn?
480         FunctionStatementListYield      < StatementListYieldReturn?
481         ArrowFunction                   <- ArrowParameters Spaces "=>" Spacing ConciseBody
482         ArrowFunctionIn                 <- ArrowParameters Spaces "=>" Spacing ConciseBodyIn
483         ArrowFunctionYield              <- ArrowParametersYield Spaces "=>" Spacing ConciseBody
484         ArrowFunctionInYield            <- ArrowParametersYield Spaces "=>" Spacing ConciseBodyIn
485         ArrowParameters                 < BindingIdentifier / CoverParenthesizedExpressionAndArrowParameterList
486         ArrowParametersYield            < BindingIdentifierYield / CoverParenthesizedExpressionAndArrowParameterListYield
487         ConciseBody                     < (!("{") AssignmentExpression) / CurlyBrackets(FunctionBody)
488         ConciseBodyIn                   < (!("{") AssignmentExpressionIn) / CurlyBrackets(FunctionBody)
489 
490         ArrowFormalParameters               < Parentheses(StrictFormalParameters)
491         ArrowFormalParametersYield          < Parentheses(StrictFormalParametersYield)
492         MethodDefinition                    < GeneratorMethod / ("get" PropertyName "(" ")" CurlyBrackets(FunctionBody)) / ("set" PropertyName Parentheses(PropertySetParameterList) CurlyBrackets(FunctionBody)) / (PropertyName Parentheses(StrictFormalParameters) CurlyBrackets(FunctionBody))
493         MethodDefinitionYield               < GeneratorMethodYield / ("get" PropertyNameYield "(" ")" CurlyBrackets(FunctionBody)) / ("set" PropertyNameYield Parentheses(PropertySetParameterList) CurlyBrackets(FunctionBody)) / (PropertyNameYield Parentheses(StrictFormalParameters) CurlyBrackets(FunctionBody))
494         PropertySetParameterList            < FormalParameter
495         GeneratorMethod                     < :"*" PropertyName Parentheses(StrictFormalParameters) CurlyBrackets(GeneratorBody)
496         GeneratorMethodYield                < :"*" PropertyNameYield Parentheses(StrictFormalParametersYield) CurlyBrackets(GeneratorBody)
497         GeneratorDeclaration                < :"function" :"*" BindingIdentifier Parentheses(FormalParameters) CurlyBrackets(GeneratorBody)
498         GeneratorDeclarationYield           < :"function" :"*" BindingIdentifierYield Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody)
499         GeneratorDeclarationDefault         < :"function" :"*" BindingIdentifier? Parentheses(FormalParameters) CurlyBrackets(GeneratorBody)
500         GeneratorDeclarationYieldDefault    < :"function" :"*" BindingIdentifierYield? Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody)
501         GeneratorExpression                 < :"function" :"*" BindingIdentifierYield? Parentheses(FormalParametersYield) CurlyBrackets(GeneratorBody)
502         GeneratorBody                       < FunctionBodyYield
503         YieldExpression                     <- ("yield" Spaces ("*")? AssignmentExpressionYield) / "yield"
504         YieldExpressionIn                   <- ("yield" Spaces ("*")? AssignmentExpressionInYield) / "yield"
505         ClassDeclaration                    <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier Spaces ClassTail
506         ClassDeclarationYield               <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield Spaces ClassTailYield
507         ClassDeclarationDefault             <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier? Spaces ClassTail
508         ClassDeclarationYieldDefault        <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield? Spaces ClassTailYield
509         ClassExpression                     <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifier? Spaces ClassTail
510         ClassExpressionYield                <- :"class" !(IdentifierStart / IdentifierPart) Spaces BindingIdentifierYield? Spaces ClassTailYield
511         ClassTail                           < ClassHeritage? CurlyBrackets(ClassBody?)
512         ClassTailYield                      < ClassHeritageYield? CurlyBrackets(ClassBodyYield?)
513         ClassHeritage                       < :"extends" LeftHandSideExpression
514         ClassHeritageYield                  < :"extends" LeftHandSideExpressionYield
515         ClassBody                           < ClassElementList 
516         ClassBodyYield                      < ClassElementListYield 
517         ClassElementList                    < ClassElement+
518         ClassElementListYield               < ClassElementYield+
519         ClassElement                        < ("static" MethodDefinition) / :";" / MethodDefinition
520         ClassElementYield                   < ("static" MethodDefinitionYield) / :";" / MethodDefinitionYield
521 
522         JSXElement                      < "<" JSXTag JSXAttributeSet ("/>" / (">" JSXContent "</" JSXTag ">"))
523         JSXAttributeSet                 < JSXAttribute*
524         JSXAttribute                    < CurlyBrackets(SpreadElement) / (JSXKey ("=" JSXValue)?)
525         JSXKey                          <~ (!("=" / "/>" / ">") .)+
526         JSXInlineJS                     < ArrowFunction / ConditionalExpression
527         JSXValue                        < StringLiteral / JSXCodeBlock
528         JSXCodeBlock                    < CurlyBrackets(JSXInlineJS)
529         JSXJavaScriptValue              < CurlyBrackets(!JSXElement JSXInlineJS)
530         JSXTag                          <~ [a-zA-Z][a-zA-Z0-9]*
531         JSXContent                      < (JSXElement / JSXCodeBlock / JSXContentText)*
532         JSXContentText                  <~ (!"</" SourceCharacter)*
533     
534 
535 +/
536 module es6.grammar;
537 
538 public import pegged.peg;
539 import std.algorithm: startsWith;
540 import std.functional: toDelegate;
541 
542 struct GenericES6(TParseTree)
543 {
544     import pegged.dynamic.grammar;
545     struct ES6
546     {
547     enum name = "ES6";
548     static ParseTree delegate(ParseTree)[string] before;
549     static ParseTree delegate(ParseTree)[string] after;
550     static ParseTree delegate(ParseTree)[string] rules;
551 
552     static this()
553     {
554         rules["Module"] = toDelegate(&Module);
555         rules["ModuleBody"] = toDelegate(&ModuleBody);
556         rules["ModuleItemList"] = toDelegate(&ModuleItemList);
557         rules["ImportDeclaration"] = toDelegate(&ImportDeclaration);
558         rules["ImportClause"] = toDelegate(&ImportClause);
559         rules["ImportedDefaultBinding"] = toDelegate(&ImportedDefaultBinding);
560         rules["NameSpaceImport"] = toDelegate(&NameSpaceImport);
561         rules["NamedImports"] = toDelegate(&NamedImports);
562         rules["FromClause"] = toDelegate(&FromClause);
563         rules["ImportsList"] = toDelegate(&ImportsList);
564         rules["ImportSpecifier"] = toDelegate(&ImportSpecifier);
565         rules["ModuleSpecifier"] = toDelegate(&ModuleSpecifier);
566         rules["ImportedBinding"] = toDelegate(&ImportedBinding);
567         rules["ExportDeclaration"] = toDelegate(&ExportDeclaration);
568         rules["ExportClause"] = toDelegate(&ExportClause);
569         rules["ExportsList"] = toDelegate(&ExportsList);
570         rules["ExportSpecifier"] = toDelegate(&ExportSpecifier);
571         rules["SourceCharacter"] = toDelegate(&SourceCharacter);
572         rules["InputElementDiv"] = toDelegate(&InputElementDiv);
573         rules["InputElementRegExp"] = toDelegate(&InputElementRegExp);
574         rules["InputElementRegExpOrTemplateTail"] = toDelegate(&InputElementRegExpOrTemplateTail);
575         rules["InputElementTemplateTail"] = toDelegate(&InputElementTemplateTail);
576         rules["WhiteSpace"] = toDelegate(&WhiteSpace);
577         rules["LineTerminator"] = toDelegate(&LineTerminator);
578         rules["LineTerminatorSequence"] = toDelegate(&LineTerminatorSequence);
579         rules["Spacing"] = toDelegate(&Spacing);
580    }
581 
582     template hooked(alias r, string name)
583     {
584         static ParseTree hooked(ParseTree p)
585         {
586             ParseTree result;
587 
588             if (name in before)
589             {
590                 result = before[name](p);
591                 if (result.successful)
592                     return result;
593             }
594 
595             result = r(p);
596             if (result.successful || name !in after)
597                 return result;
598 
599             result = after[name](p);
600             return result;
601         }
602 
603         static ParseTree hooked(string input)
604         {
605             return hooked!(r, name)(ParseTree("",false,[],input));
606         }
607     }
608 
609     static void addRuleBefore(string parentRule, string ruleSyntax)
610     {
611         // enum name is the current grammar name
612         DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules);
613         foreach(ruleName,rule; dg.rules)
614             if (ruleName != "Spacing") // Keep the local Spacing rule, do not overwrite it
615                 rules[ruleName] = rule;
616         before[parentRule] = rules[dg.startingRule];
617     }
618 
619     static void addRuleAfter(string parentRule, string ruleSyntax)
620     {
621         // enum name is the current grammar named
622         DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules);
623         foreach(name,rule; dg.rules)
624         {
625             if (name != "Spacing")
626                 rules[name] = rule;
627         }
628         after[parentRule] = rules[dg.startingRule];
629     }
630 
631     static bool isRule(string s)
632     {
633         return s.startsWith("ES6.");
634     }
635     import std.typecons:Tuple, tuple;
636     static TParseTree[Tuple!(string, size_t)] memo;
637     mixin decimateTree;
638     static TParseTree Module(TParseTree p)
639     {
640         if(__ctfe)
641         {
642             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ModuleBody, Spacing), pegged.peg.wrapAround!(Spacing, eoi, Spacing)), "ES6.Module")(p);
643         }
644         else
645         {
646             if(auto m = tuple(`Module`,p.end) in memo)
647                 return *m;
648             else
649             {
650                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ModuleBody, Spacing), pegged.peg.wrapAround!(Spacing, eoi, Spacing)), "ES6.Module"), "Module")(p);
651                 memo[tuple(`Module`,p.end)] = result;
652                 return result;
653             }
654         }
655     }
656 
657     static TParseTree Module(string s)
658     {
659         if(__ctfe)
660         {
661             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ModuleBody, Spacing), pegged.peg.wrapAround!(Spacing, eoi, Spacing)), "ES6.Module")(TParseTree("", false,[], s));
662         }
663         else
664         {
665             memo = null;
666             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ModuleBody, Spacing), pegged.peg.wrapAround!(Spacing, eoi, Spacing)), "ES6.Module"), "Module")(TParseTree("", false,[], s));
667         }
668     }
669     static string Module(GetName g)
670     {
671         return "ES6.Module";
672     }
673 
674     static TParseTree ModuleBody(TParseTree p)
675     {
676         if(__ctfe)
677         {
678             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ModuleItemList, Spacing), "ES6.ModuleBody")(p);
679         }
680         else
681         {
682             if(auto m = tuple(`ModuleBody`,p.end) in memo)
683                 return *m;
684             else
685             {
686                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ModuleItemList, Spacing), "ES6.ModuleBody"), "ModuleBody")(p);
687                 memo[tuple(`ModuleBody`,p.end)] = result;
688                 return result;
689             }
690         }
691     }
692 
693     static TParseTree ModuleBody(string s)
694     {
695         if(__ctfe)
696         {
697             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ModuleItemList, Spacing), "ES6.ModuleBody")(TParseTree("", false,[], s));
698         }
699         else
700         {
701             memo = null;
702             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ModuleItemList, Spacing), "ES6.ModuleBody"), "ModuleBody")(TParseTree("", false,[], s));
703         }
704     }
705     static string ModuleBody(GetName g)
706     {
707         return "ES6.ModuleBody";
708     }
709 
710     static TParseTree ModuleItemList(TParseTree p)
711     {
712         if(__ctfe)
713         {
714             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ImportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ExportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), Spacing)), "ES6.ModuleItemList")(p);
715         }
716         else
717         {
718             if(auto m = tuple(`ModuleItemList`,p.end) in memo)
719                 return *m;
720             else
721             {
722                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ImportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ExportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), Spacing)), "ES6.ModuleItemList"), "ModuleItemList")(p);
723                 memo[tuple(`ModuleItemList`,p.end)] = result;
724                 return result;
725             }
726         }
727     }
728 
729     static TParseTree ModuleItemList(string s)
730     {
731         if(__ctfe)
732         {
733             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ImportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ExportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), Spacing)), "ES6.ModuleItemList")(TParseTree("", false,[], s));
734         }
735         else
736         {
737             memo = null;
738             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ImportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ExportDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), Spacing)), "ES6.ModuleItemList"), "ModuleItemList")(TParseTree("", false,[], s));
739         }
740     }
741     static string ModuleItemList(GetName g)
742     {
743         return "ES6.ModuleItemList";
744     }
745 
746     static TParseTree ImportDeclaration(TParseTree p)
747     {
748         if(__ctfe)
749         {
750             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("import"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), "ES6.ImportDeclaration")(p);
751         }
752         else
753         {
754             if(auto m = tuple(`ImportDeclaration`,p.end) in memo)
755                 return *m;
756             else
757             {
758                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("import"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), "ES6.ImportDeclaration"), "ImportDeclaration")(p);
759                 memo[tuple(`ImportDeclaration`,p.end)] = result;
760                 return result;
761             }
762         }
763     }
764 
765     static TParseTree ImportDeclaration(string s)
766     {
767         if(__ctfe)
768         {
769             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("import"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), "ES6.ImportDeclaration")(TParseTree("", false,[], s));
770         }
771         else
772         {
773             memo = null;
774             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("import"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), "ES6.ImportDeclaration"), "ImportDeclaration")(TParseTree("", false,[], s));
775         }
776     }
777     static string ImportDeclaration(GetName g)
778     {
779         return "ES6.ImportDeclaration";
780     }
781 
782     static TParseTree ImportClause(TParseTree p)
783     {
784         if(__ctfe)
785         {
786             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing)), "ES6.ImportClause")(p);
787         }
788         else
789         {
790             if(auto m = tuple(`ImportClause`,p.end) in memo)
791                 return *m;
792             else
793             {
794                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing)), "ES6.ImportClause"), "ImportClause")(p);
795                 memo[tuple(`ImportClause`,p.end)] = result;
796                 return result;
797             }
798         }
799     }
800 
801     static TParseTree ImportClause(string s)
802     {
803         if(__ctfe)
804         {
805             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing)), "ES6.ImportClause")(TParseTree("", false,[], s));
806         }
807         else
808         {
809             memo = null;
810             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NameSpaceImport, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, NamedImports, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedDefaultBinding, Spacing)), "ES6.ImportClause"), "ImportClause")(TParseTree("", false,[], s));
811         }
812     }
813     static string ImportClause(GetName g)
814     {
815         return "ES6.ImportClause";
816     }
817 
818     static TParseTree ImportedDefaultBinding(TParseTree p)
819     {
820         if(__ctfe)
821         {
822             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing), "ES6.ImportedDefaultBinding")(p);
823         }
824         else
825         {
826             if(auto m = tuple(`ImportedDefaultBinding`,p.end) in memo)
827                 return *m;
828             else
829             {
830                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing), "ES6.ImportedDefaultBinding"), "ImportedDefaultBinding")(p);
831                 memo[tuple(`ImportedDefaultBinding`,p.end)] = result;
832                 return result;
833             }
834         }
835     }
836 
837     static TParseTree ImportedDefaultBinding(string s)
838     {
839         if(__ctfe)
840         {
841             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing), "ES6.ImportedDefaultBinding")(TParseTree("", false,[], s));
842         }
843         else
844         {
845             memo = null;
846             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing), "ES6.ImportedDefaultBinding"), "ImportedDefaultBinding")(TParseTree("", false,[], s));
847         }
848     }
849     static string ImportedDefaultBinding(GetName g)
850     {
851         return "ES6.ImportedDefaultBinding";
852     }
853 
854     static TParseTree NameSpaceImport(TParseTree p)
855     {
856         if(__ctfe)
857         {
858             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.NameSpaceImport")(p);
859         }
860         else
861         {
862             if(auto m = tuple(`NameSpaceImport`,p.end) in memo)
863                 return *m;
864             else
865             {
866                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.NameSpaceImport"), "NameSpaceImport")(p);
867                 memo[tuple(`NameSpaceImport`,p.end)] = result;
868                 return result;
869             }
870         }
871     }
872 
873     static TParseTree NameSpaceImport(string s)
874     {
875         if(__ctfe)
876         {
877             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.NameSpaceImport")(TParseTree("", false,[], s));
878         }
879         else
880         {
881             memo = null;
882             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.NameSpaceImport"), "NameSpaceImport")(TParseTree("", false,[], s));
883         }
884     }
885     static string NameSpaceImport(GetName g)
886     {
887         return "ES6.NameSpaceImport";
888     }
889 
890     static TParseTree NamedImports(TParseTree p)
891     {
892         if(__ctfe)
893         {
894             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.NamedImports")(p);
895         }
896         else
897         {
898             if(auto m = tuple(`NamedImports`,p.end) in memo)
899                 return *m;
900             else
901             {
902                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.NamedImports"), "NamedImports")(p);
903                 memo[tuple(`NamedImports`,p.end)] = result;
904                 return result;
905             }
906         }
907     }
908 
909     static TParseTree NamedImports(string s)
910     {
911         if(__ctfe)
912         {
913             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.NamedImports")(TParseTree("", false,[], s));
914         }
915         else
916         {
917             memo = null;
918             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.NamedImports"), "NamedImports")(TParseTree("", false,[], s));
919         }
920     }
921     static string NamedImports(GetName g)
922     {
923         return "ES6.NamedImports";
924     }
925 
926     static TParseTree FromClause(TParseTree p)
927     {
928         if(__ctfe)
929         {
930             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("from"), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), "ES6.FromClause")(p);
931         }
932         else
933         {
934             if(auto m = tuple(`FromClause`,p.end) in memo)
935                 return *m;
936             else
937             {
938                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("from"), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), "ES6.FromClause"), "FromClause")(p);
939                 memo[tuple(`FromClause`,p.end)] = result;
940                 return result;
941             }
942         }
943     }
944 
945     static TParseTree FromClause(string s)
946     {
947         if(__ctfe)
948         {
949             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("from"), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), "ES6.FromClause")(TParseTree("", false,[], s));
950         }
951         else
952         {
953             memo = null;
954             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("from"), Spacing), pegged.peg.wrapAround!(Spacing, ModuleSpecifier, Spacing)), "ES6.FromClause"), "FromClause")(TParseTree("", false,[], s));
955         }
956     }
957     static string FromClause(GetName g)
958     {
959         return "ES6.FromClause";
960     }
961 
962     static TParseTree ImportsList(TParseTree p)
963     {
964         if(__ctfe)
965         {
966             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing)), Spacing))), "ES6.ImportsList")(p);
967         }
968         else
969         {
970             if(auto m = tuple(`ImportsList`,p.end) in memo)
971                 return *m;
972             else
973             {
974                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing)), Spacing))), "ES6.ImportsList"), "ImportsList")(p);
975                 memo[tuple(`ImportsList`,p.end)] = result;
976                 return result;
977             }
978         }
979     }
980 
981     static TParseTree ImportsList(string s)
982     {
983         if(__ctfe)
984         {
985             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing)), Spacing))), "ES6.ImportsList")(TParseTree("", false,[], s));
986         }
987         else
988         {
989             memo = null;
990             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ImportSpecifier, Spacing)), Spacing))), "ES6.ImportsList"), "ImportsList")(TParseTree("", false,[], s));
991         }
992     }
993     static string ImportsList(GetName g)
994     {
995         return "ES6.ImportsList";
996     }
997 
998     static TParseTree ImportSpecifier(TParseTree p)
999     {
1000         if(__ctfe)
1001         {
1002             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.ImportSpecifier")(p);
1003         }
1004         else
1005         {
1006             if(auto m = tuple(`ImportSpecifier`,p.end) in memo)
1007                 return *m;
1008             else
1009             {
1010                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.ImportSpecifier"), "ImportSpecifier")(p);
1011                 memo[tuple(`ImportSpecifier`,p.end)] = result;
1012                 return result;
1013             }
1014         }
1015     }
1016 
1017     static TParseTree ImportSpecifier(string s)
1018     {
1019         if(__ctfe)
1020         {
1021             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.ImportSpecifier")(TParseTree("", false,[], s));
1022         }
1023         else
1024         {
1025             memo = null;
1026             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, ImportedBinding, Spacing)), "ES6.ImportSpecifier"), "ImportSpecifier")(TParseTree("", false,[], s));
1027         }
1028     }
1029     static string ImportSpecifier(GetName g)
1030     {
1031         return "ES6.ImportSpecifier";
1032     }
1033 
1034     static TParseTree ModuleSpecifier(TParseTree p)
1035     {
1036         if(__ctfe)
1037         {
1038             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), "ES6.ModuleSpecifier")(p);
1039         }
1040         else
1041         {
1042             if(auto m = tuple(`ModuleSpecifier`,p.end) in memo)
1043                 return *m;
1044             else
1045             {
1046                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), "ES6.ModuleSpecifier"), "ModuleSpecifier")(p);
1047                 memo[tuple(`ModuleSpecifier`,p.end)] = result;
1048                 return result;
1049             }
1050         }
1051     }
1052 
1053     static TParseTree ModuleSpecifier(string s)
1054     {
1055         if(__ctfe)
1056         {
1057             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), "ES6.ModuleSpecifier")(TParseTree("", false,[], s));
1058         }
1059         else
1060         {
1061             memo = null;
1062             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), "ES6.ModuleSpecifier"), "ModuleSpecifier")(TParseTree("", false,[], s));
1063         }
1064     }
1065     static string ModuleSpecifier(GetName g)
1066     {
1067         return "ES6.ModuleSpecifier";
1068     }
1069 
1070     static TParseTree ImportedBinding(TParseTree p)
1071     {
1072         if(__ctfe)
1073         {
1074             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), "ES6.ImportedBinding")(p);
1075         }
1076         else
1077         {
1078             if(auto m = tuple(`ImportedBinding`,p.end) in memo)
1079                 return *m;
1080             else
1081             {
1082                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), "ES6.ImportedBinding"), "ImportedBinding")(p);
1083                 memo[tuple(`ImportedBinding`,p.end)] = result;
1084                 return result;
1085             }
1086         }
1087     }
1088 
1089     static TParseTree ImportedBinding(string s)
1090     {
1091         if(__ctfe)
1092         {
1093             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), "ES6.ImportedBinding")(TParseTree("", false,[], s));
1094         }
1095         else
1096         {
1097             memo = null;
1098             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), "ES6.ImportedBinding"), "ImportedBinding")(TParseTree("", false,[], s));
1099         }
1100     }
1101     static string ImportedBinding(GetName g)
1102     {
1103         return "ES6.ImportedBinding";
1104     }
1105 
1106     static TParseTree ExportDeclaration(TParseTree p)
1107     {
1108         if(__ctfe)
1109         {
1110             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, HoistableDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, Declaration, Spacing)), Spacing)), "ES6.ExportDeclaration")(p);
1111         }
1112         else
1113         {
1114             if(auto m = tuple(`ExportDeclaration`,p.end) in memo)
1115                 return *m;
1116             else
1117             {
1118                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, HoistableDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, Declaration, Spacing)), Spacing)), "ES6.ExportDeclaration"), "ExportDeclaration")(p);
1119                 memo[tuple(`ExportDeclaration`,p.end)] = result;
1120                 return result;
1121             }
1122         }
1123     }
1124 
1125     static TParseTree ExportDeclaration(string s)
1126     {
1127         if(__ctfe)
1128         {
1129             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, HoistableDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, Declaration, Spacing)), Spacing)), "ES6.ExportDeclaration")(TParseTree("", false,[], s));
1130         }
1131         else
1132         {
1133             memo = null;
1134             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, FromClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, ExportClause, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, HoistableDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationDefault, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("export"), Spacing), pegged.peg.wrapAround!(Spacing, Declaration, Spacing)), Spacing)), "ES6.ExportDeclaration"), "ExportDeclaration")(TParseTree("", false,[], s));
1135         }
1136     }
1137     static string ExportDeclaration(GetName g)
1138     {
1139         return "ES6.ExportDeclaration";
1140     }
1141 
1142     static TParseTree ExportClause(TParseTree p)
1143     {
1144         if(__ctfe)
1145         {
1146             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.ExportClause")(p);
1147         }
1148         else
1149         {
1150             if(auto m = tuple(`ExportClause`,p.end) in memo)
1151                 return *m;
1152             else
1153             {
1154                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.ExportClause"), "ExportClause")(p);
1155                 memo[tuple(`ExportClause`,p.end)] = result;
1156                 return result;
1157             }
1158         }
1159     }
1160 
1161     static TParseTree ExportClause(string s)
1162     {
1163         if(__ctfe)
1164         {
1165             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.ExportClause")(TParseTree("", false,[], s));
1166         }
1167         else
1168         {
1169             memo = null;
1170             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), Spacing))), Spacing))), Spacing), "ES6.ExportClause"), "ExportClause")(TParseTree("", false,[], s));
1171         }
1172     }
1173     static string ExportClause(GetName g)
1174     {
1175         return "ES6.ExportClause";
1176     }
1177 
1178     static TParseTree ExportsList(TParseTree p)
1179     {
1180         if(__ctfe)
1181         {
1182             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing)), Spacing))), "ES6.ExportsList")(p);
1183         }
1184         else
1185         {
1186             if(auto m = tuple(`ExportsList`,p.end) in memo)
1187                 return *m;
1188             else
1189             {
1190                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing)), Spacing))), "ES6.ExportsList"), "ExportsList")(p);
1191                 memo[tuple(`ExportsList`,p.end)] = result;
1192                 return result;
1193             }
1194         }
1195     }
1196 
1197     static TParseTree ExportsList(string s)
1198     {
1199         if(__ctfe)
1200         {
1201             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing)), Spacing))), "ES6.ExportsList")(TParseTree("", false,[], s));
1202         }
1203         else
1204         {
1205             memo = null;
1206             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ExportSpecifier, Spacing)), Spacing))), "ES6.ExportsList"), "ExportsList")(TParseTree("", false,[], s));
1207         }
1208     }
1209     static string ExportsList(GetName g)
1210     {
1211         return "ES6.ExportsList";
1212     }
1213 
1214     static TParseTree ExportSpecifier(TParseTree p)
1215     {
1216         if(__ctfe)
1217         {
1218             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), Spacing))), "ES6.ExportSpecifier")(p);
1219         }
1220         else
1221         {
1222             if(auto m = tuple(`ExportSpecifier`,p.end) in memo)
1223                 return *m;
1224             else
1225             {
1226                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), Spacing))), "ES6.ExportSpecifier"), "ExportSpecifier")(p);
1227                 memo[tuple(`ExportSpecifier`,p.end)] = result;
1228                 return result;
1229             }
1230         }
1231     }
1232 
1233     static TParseTree ExportSpecifier(string s)
1234     {
1235         if(__ctfe)
1236         {
1237             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), Spacing))), "ES6.ExportSpecifier")(TParseTree("", false,[], s));
1238         }
1239         else
1240         {
1241             memo = null;
1242             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("as"), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), Spacing))), "ES6.ExportSpecifier"), "ExportSpecifier")(TParseTree("", false,[], s));
1243         }
1244     }
1245     static string ExportSpecifier(GetName g)
1246     {
1247         return "ES6.ExportSpecifier";
1248     }
1249 
1250     static TParseTree SourceCharacter(TParseTree p)
1251     {
1252         if(__ctfe)
1253         {
1254             return         pegged.peg.defined!(pegged.peg.charRange!('\u0000', '\uFFFC'), "ES6.SourceCharacter")(p);
1255         }
1256         else
1257         {
1258             if(auto m = tuple(`SourceCharacter`,p.end) in memo)
1259                 return *m;
1260             else
1261             {
1262                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('\u0000', '\uFFFC'), "ES6.SourceCharacter"), "SourceCharacter")(p);
1263                 memo[tuple(`SourceCharacter`,p.end)] = result;
1264                 return result;
1265             }
1266         }
1267     }
1268 
1269     static TParseTree SourceCharacter(string s)
1270     {
1271         if(__ctfe)
1272         {
1273             return         pegged.peg.defined!(pegged.peg.charRange!('\u0000', '\uFFFC'), "ES6.SourceCharacter")(TParseTree("", false,[], s));
1274         }
1275         else
1276         {
1277             memo = null;
1278             return hooked!(pegged.peg.defined!(pegged.peg.charRange!('\u0000', '\uFFFC'), "ES6.SourceCharacter"), "SourceCharacter")(TParseTree("", false,[], s));
1279         }
1280     }
1281     static string SourceCharacter(GetName g)
1282     {
1283         return "ES6.SourceCharacter";
1284     }
1285 
1286     static TParseTree InputElementDiv(TParseTree p)
1287     {
1288         if(__ctfe)
1289         {
1290             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, RightBracePunctuator), "ES6.InputElementDiv")(p);
1291         }
1292         else
1293         {
1294             if(auto m = tuple(`InputElementDiv`,p.end) in memo)
1295                 return *m;
1296             else
1297             {
1298                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, RightBracePunctuator), "ES6.InputElementDiv"), "InputElementDiv")(p);
1299                 memo[tuple(`InputElementDiv`,p.end)] = result;
1300                 return result;
1301             }
1302         }
1303     }
1304 
1305     static TParseTree InputElementDiv(string s)
1306     {
1307         if(__ctfe)
1308         {
1309             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, RightBracePunctuator), "ES6.InputElementDiv")(TParseTree("", false,[], s));
1310         }
1311         else
1312         {
1313             memo = null;
1314             return hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, RightBracePunctuator), "ES6.InputElementDiv"), "InputElementDiv")(TParseTree("", false,[], s));
1315         }
1316     }
1317     static string InputElementDiv(GetName g)
1318     {
1319         return "ES6.InputElementDiv";
1320     }
1321 
1322     static TParseTree InputElementRegExp(TParseTree p)
1323     {
1324         if(__ctfe)
1325         {
1326             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RightBracePunctuator, RegularExpressionLiteral), "ES6.InputElementRegExp")(p);
1327         }
1328         else
1329         {
1330             if(auto m = tuple(`InputElementRegExp`,p.end) in memo)
1331                 return *m;
1332             else
1333             {
1334                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RightBracePunctuator, RegularExpressionLiteral), "ES6.InputElementRegExp"), "InputElementRegExp")(p);
1335                 memo[tuple(`InputElementRegExp`,p.end)] = result;
1336                 return result;
1337             }
1338         }
1339     }
1340 
1341     static TParseTree InputElementRegExp(string s)
1342     {
1343         if(__ctfe)
1344         {
1345             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RightBracePunctuator, RegularExpressionLiteral), "ES6.InputElementRegExp")(TParseTree("", false,[], s));
1346         }
1347         else
1348         {
1349             memo = null;
1350             return hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RightBracePunctuator, RegularExpressionLiteral), "ES6.InputElementRegExp"), "InputElementRegExp")(TParseTree("", false,[], s));
1351         }
1352     }
1353     static string InputElementRegExp(GetName g)
1354     {
1355         return "ES6.InputElementRegExp";
1356     }
1357 
1358     static TParseTree InputElementRegExpOrTemplateTail(TParseTree p)
1359     {
1360         if(__ctfe)
1361         {
1362             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RegularExpressionLiteral, TemplateSubstitutionTail), "ES6.InputElementRegExpOrTemplateTail")(p);
1363         }
1364         else
1365         {
1366             if(auto m = tuple(`InputElementRegExpOrTemplateTail`,p.end) in memo)
1367                 return *m;
1368             else
1369             {
1370                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RegularExpressionLiteral, TemplateSubstitutionTail), "ES6.InputElementRegExpOrTemplateTail"), "InputElementRegExpOrTemplateTail")(p);
1371                 memo[tuple(`InputElementRegExpOrTemplateTail`,p.end)] = result;
1372                 return result;
1373             }
1374         }
1375     }
1376 
1377     static TParseTree InputElementRegExpOrTemplateTail(string s)
1378     {
1379         if(__ctfe)
1380         {
1381             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RegularExpressionLiteral, TemplateSubstitutionTail), "ES6.InputElementRegExpOrTemplateTail")(TParseTree("", false,[], s));
1382         }
1383         else
1384         {
1385             memo = null;
1386             return hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, RegularExpressionLiteral, TemplateSubstitutionTail), "ES6.InputElementRegExpOrTemplateTail"), "InputElementRegExpOrTemplateTail")(TParseTree("", false,[], s));
1387         }
1388     }
1389     static string InputElementRegExpOrTemplateTail(GetName g)
1390     {
1391         return "ES6.InputElementRegExpOrTemplateTail";
1392     }
1393 
1394     static TParseTree InputElementTemplateTail(TParseTree p)
1395     {
1396         if(__ctfe)
1397         {
1398             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, TemplateSubstitutionTail), "ES6.InputElementTemplateTail")(p);
1399         }
1400         else
1401         {
1402             if(auto m = tuple(`InputElementTemplateTail`,p.end) in memo)
1403                 return *m;
1404             else
1405             {
1406                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, TemplateSubstitutionTail), "ES6.InputElementTemplateTail"), "InputElementTemplateTail")(p);
1407                 memo[tuple(`InputElementTemplateTail`,p.end)] = result;
1408                 return result;
1409             }
1410         }
1411     }
1412 
1413     static TParseTree InputElementTemplateTail(string s)
1414     {
1415         if(__ctfe)
1416         {
1417             return         pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, TemplateSubstitutionTail), "ES6.InputElementTemplateTail")(TParseTree("", false,[], s));
1418         }
1419         else
1420         {
1421             memo = null;
1422             return hooked!(pegged.peg.defined!(pegged.peg.or!(WhiteSpace, LineTerminator, Comment, CommonToken, DivPunctuator, TemplateSubstitutionTail), "ES6.InputElementTemplateTail"), "InputElementTemplateTail")(TParseTree("", false,[], s));
1423         }
1424     }
1425     static string InputElementTemplateTail(GetName g)
1426     {
1427         return "ES6.InputElementTemplateTail";
1428     }
1429 
1430     static TParseTree WhiteSpace(TParseTree p)
1431     {
1432         if(__ctfe)
1433         {
1434             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u0009"), pegged.peg.literal!("\u000B"), pegged.peg.literal!("\u000C"), pegged.peg.literal!("\u0020"), pegged.peg.literal!("\u00A0"), pegged.peg.literal!("\uFEFF"), pegged.peg.charRange!('\u02B0', '\u02FF')), "ES6.WhiteSpace")(p);
1435         }
1436         else
1437         {
1438             if(auto m = tuple(`WhiteSpace`,p.end) in memo)
1439                 return *m;
1440             else
1441             {
1442                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u0009"), pegged.peg.literal!("\u000B"), pegged.peg.literal!("\u000C"), pegged.peg.literal!("\u0020"), pegged.peg.literal!("\u00A0"), pegged.peg.literal!("\uFEFF"), pegged.peg.charRange!('\u02B0', '\u02FF')), "ES6.WhiteSpace"), "WhiteSpace")(p);
1443                 memo[tuple(`WhiteSpace`,p.end)] = result;
1444                 return result;
1445             }
1446         }
1447     }
1448 
1449     static TParseTree WhiteSpace(string s)
1450     {
1451         if(__ctfe)
1452         {
1453             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u0009"), pegged.peg.literal!("\u000B"), pegged.peg.literal!("\u000C"), pegged.peg.literal!("\u0020"), pegged.peg.literal!("\u00A0"), pegged.peg.literal!("\uFEFF"), pegged.peg.charRange!('\u02B0', '\u02FF')), "ES6.WhiteSpace")(TParseTree("", false,[], s));
1454         }
1455         else
1456         {
1457             memo = null;
1458             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u0009"), pegged.peg.literal!("\u000B"), pegged.peg.literal!("\u000C"), pegged.peg.literal!("\u0020"), pegged.peg.literal!("\u00A0"), pegged.peg.literal!("\uFEFF"), pegged.peg.charRange!('\u02B0', '\u02FF')), "ES6.WhiteSpace"), "WhiteSpace")(TParseTree("", false,[], s));
1459         }
1460     }
1461     static string WhiteSpace(GetName g)
1462     {
1463         return "ES6.WhiteSpace";
1464     }
1465 
1466     static TParseTree LineTerminator(TParseTree p)
1467     {
1468         if(__ctfe)
1469         {
1470             return         pegged.peg.defined!(pegged.peg.keywords!("\u000A", "\u000D", "\u2028", "\u2029"), "ES6.LineTerminator")(p);
1471         }
1472         else
1473         {
1474             if(auto m = tuple(`LineTerminator`,p.end) in memo)
1475                 return *m;
1476             else
1477             {
1478                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("\u000A", "\u000D", "\u2028", "\u2029"), "ES6.LineTerminator"), "LineTerminator")(p);
1479                 memo[tuple(`LineTerminator`,p.end)] = result;
1480                 return result;
1481             }
1482         }
1483     }
1484 
1485     static TParseTree LineTerminator(string s)
1486     {
1487         if(__ctfe)
1488         {
1489             return         pegged.peg.defined!(pegged.peg.keywords!("\u000A", "\u000D", "\u2028", "\u2029"), "ES6.LineTerminator")(TParseTree("", false,[], s));
1490         }
1491         else
1492         {
1493             memo = null;
1494             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("\u000A", "\u000D", "\u2028", "\u2029"), "ES6.LineTerminator"), "LineTerminator")(TParseTree("", false,[], s));
1495         }
1496     }
1497     static string LineTerminator(GetName g)
1498     {
1499         return "ES6.LineTerminator";
1500     }
1501 
1502     static TParseTree LineTerminatorSequence(TParseTree p)
1503     {
1504         if(__ctfe)
1505         {
1506             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u000A"), pegged.peg.and!(pegged.peg.literal!("\u000D"), pegged.peg.negLookahead!(pegged.peg.literal!("\u000A"))), pegged.peg.literal!("\u2028"), pegged.peg.literal!("\u2029"), pegged.peg.literal!("\u000D\u000A")), "ES6.LineTerminatorSequence")(p);
1507         }
1508         else
1509         {
1510             if(auto m = tuple(`LineTerminatorSequence`,p.end) in memo)
1511                 return *m;
1512             else
1513             {
1514                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u000A"), pegged.peg.and!(pegged.peg.literal!("\u000D"), pegged.peg.negLookahead!(pegged.peg.literal!("\u000A"))), pegged.peg.literal!("\u2028"), pegged.peg.literal!("\u2029"), pegged.peg.literal!("\u000D\u000A")), "ES6.LineTerminatorSequence"), "LineTerminatorSequence")(p);
1515                 memo[tuple(`LineTerminatorSequence`,p.end)] = result;
1516                 return result;
1517             }
1518         }
1519     }
1520 
1521     static TParseTree LineTerminatorSequence(string s)
1522     {
1523         if(__ctfe)
1524         {
1525             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u000A"), pegged.peg.and!(pegged.peg.literal!("\u000D"), pegged.peg.negLookahead!(pegged.peg.literal!("\u000A"))), pegged.peg.literal!("\u2028"), pegged.peg.literal!("\u2029"), pegged.peg.literal!("\u000D\u000A")), "ES6.LineTerminatorSequence")(TParseTree("", false,[], s));
1526         }
1527         else
1528         {
1529             memo = null;
1530             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u000A"), pegged.peg.and!(pegged.peg.literal!("\u000D"), pegged.peg.negLookahead!(pegged.peg.literal!("\u000A"))), pegged.peg.literal!("\u2028"), pegged.peg.literal!("\u2029"), pegged.peg.literal!("\u000D\u000A")), "ES6.LineTerminatorSequence"), "LineTerminatorSequence")(TParseTree("", false,[], s));
1531         }
1532     }
1533     static string LineTerminatorSequence(GetName g)
1534     {
1535         return "ES6.LineTerminatorSequence";
1536     }
1537 
1538     static TParseTree Spacing(TParseTree p)
1539     {
1540         if(__ctfe)
1541         {
1542             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), pegged.peg.discard!(LineTerminatorSequence), Comment))), "ES6.Spacing")(p);
1543         }
1544         else
1545         {
1546             if(auto m = tuple(`Spacing`,p.end) in memo)
1547                 return *m;
1548             else
1549             {
1550                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), pegged.peg.discard!(LineTerminatorSequence), Comment))), "ES6.Spacing"), "Spacing")(p);
1551                 memo[tuple(`Spacing`,p.end)] = result;
1552                 return result;
1553             }
1554         }
1555     }
1556 
1557     static TParseTree Spacing(string s)
1558     {
1559         if(__ctfe)
1560         {
1561             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), pegged.peg.discard!(LineTerminatorSequence), Comment))), "ES6.Spacing")(TParseTree("", false,[], s));
1562         }
1563         else
1564         {
1565             memo = null;
1566             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), pegged.peg.discard!(LineTerminatorSequence), Comment))), "ES6.Spacing"), "Spacing")(TParseTree("", false,[], s));
1567         }
1568     }
1569     static string Spacing(GetName g)
1570     {
1571         return "ES6.Spacing";
1572     }
1573 
1574     static TParseTree Spaces(TParseTree p)
1575     {
1576         if(__ctfe)
1577         {
1578             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), Comment))), "ES6.Spaces")(p);
1579         }
1580         else
1581         {
1582             if(auto m = tuple(`Spaces`,p.end) in memo)
1583                 return *m;
1584             else
1585             {
1586                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), Comment))), "ES6.Spaces"), "Spaces")(p);
1587                 memo[tuple(`Spaces`,p.end)] = result;
1588                 return result;
1589             }
1590         }
1591     }
1592 
1593     static TParseTree Spaces(string s)
1594     {
1595         if(__ctfe)
1596         {
1597             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), Comment))), "ES6.Spaces")(TParseTree("", false,[], s));
1598         }
1599         else
1600         {
1601             memo = null;
1602             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.discard!(WhiteSpace), Comment))), "ES6.Spaces"), "Spaces")(TParseTree("", false,[], s));
1603         }
1604     }
1605     static string Spaces(GetName g)
1606     {
1607         return "ES6.Spaces";
1608     }
1609 
1610     static TParseTree Comment(TParseTree p)
1611     {
1612         if(__ctfe)
1613         {
1614             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(MultiLineComment, SingleLineComment)), "ES6.Comment")(p);
1615         }
1616         else
1617         {
1618             if(auto m = tuple(`Comment`,p.end) in memo)
1619                 return *m;
1620             else
1621             {
1622                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(MultiLineComment, SingleLineComment)), "ES6.Comment"), "Comment")(p);
1623                 memo[tuple(`Comment`,p.end)] = result;
1624                 return result;
1625             }
1626         }
1627     }
1628 
1629     static TParseTree Comment(string s)
1630     {
1631         if(__ctfe)
1632         {
1633             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(MultiLineComment, SingleLineComment)), "ES6.Comment")(TParseTree("", false,[], s));
1634         }
1635         else
1636         {
1637             memo = null;
1638             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(MultiLineComment, SingleLineComment)), "ES6.Comment"), "Comment")(TParseTree("", false,[], s));
1639         }
1640     }
1641     static string Comment(GetName g)
1642     {
1643         return "ES6.Comment";
1644     }
1645 
1646     static TParseTree MultiLineComment(TParseTree p)
1647     {
1648         if(__ctfe)
1649         {
1650             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("/*")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), SourceCharacter)), pegged.peg.discard!(pegged.peg.literal!("*/")))), "ES6.MultiLineComment")(p);
1651         }
1652         else
1653         {
1654             if(auto m = tuple(`MultiLineComment`,p.end) in memo)
1655                 return *m;
1656             else
1657             {
1658                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("/*")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), SourceCharacter)), pegged.peg.discard!(pegged.peg.literal!("*/")))), "ES6.MultiLineComment"), "MultiLineComment")(p);
1659                 memo[tuple(`MultiLineComment`,p.end)] = result;
1660                 return result;
1661             }
1662         }
1663     }
1664 
1665     static TParseTree MultiLineComment(string s)
1666     {
1667         if(__ctfe)
1668         {
1669             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("/*")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), SourceCharacter)), pegged.peg.discard!(pegged.peg.literal!("*/")))), "ES6.MultiLineComment")(TParseTree("", false,[], s));
1670         }
1671         else
1672         {
1673             memo = null;
1674             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("/*")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), SourceCharacter)), pegged.peg.discard!(pegged.peg.literal!("*/")))), "ES6.MultiLineComment"), "MultiLineComment")(TParseTree("", false,[], s));
1675         }
1676     }
1677     static string MultiLineComment(GetName g)
1678     {
1679         return "ES6.MultiLineComment";
1680     }
1681 
1682     static TParseTree SingleLineComment(TParseTree p)
1683     {
1684         if(__ctfe)
1685         {
1686             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("//")), pegged.peg.option!(SingleLineCommentChars), eol), "ES6.SingleLineComment")(p);
1687         }
1688         else
1689         {
1690             if(auto m = tuple(`SingleLineComment`,p.end) in memo)
1691                 return *m;
1692             else
1693             {
1694                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("//")), pegged.peg.option!(SingleLineCommentChars), eol), "ES6.SingleLineComment"), "SingleLineComment")(p);
1695                 memo[tuple(`SingleLineComment`,p.end)] = result;
1696                 return result;
1697             }
1698         }
1699     }
1700 
1701     static TParseTree SingleLineComment(string s)
1702     {
1703         if(__ctfe)
1704         {
1705             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("//")), pegged.peg.option!(SingleLineCommentChars), eol), "ES6.SingleLineComment")(TParseTree("", false,[], s));
1706         }
1707         else
1708         {
1709             memo = null;
1710             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("//")), pegged.peg.option!(SingleLineCommentChars), eol), "ES6.SingleLineComment"), "SingleLineComment")(TParseTree("", false,[], s));
1711         }
1712     }
1713     static string SingleLineComment(GetName g)
1714     {
1715         return "ES6.SingleLineComment";
1716     }
1717 
1718     static TParseTree SingleLineCommentChars(TParseTree p)
1719     {
1720         if(__ctfe)
1721         {
1722             return         pegged.peg.defined!(pegged.peg.oneOrMore!(SingleLineCommentChar), "ES6.SingleLineCommentChars")(p);
1723         }
1724         else
1725         {
1726             if(auto m = tuple(`SingleLineCommentChars`,p.end) in memo)
1727                 return *m;
1728             else
1729             {
1730                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(SingleLineCommentChar), "ES6.SingleLineCommentChars"), "SingleLineCommentChars")(p);
1731                 memo[tuple(`SingleLineCommentChars`,p.end)] = result;
1732                 return result;
1733             }
1734         }
1735     }
1736 
1737     static TParseTree SingleLineCommentChars(string s)
1738     {
1739         if(__ctfe)
1740         {
1741             return         pegged.peg.defined!(pegged.peg.oneOrMore!(SingleLineCommentChar), "ES6.SingleLineCommentChars")(TParseTree("", false,[], s));
1742         }
1743         else
1744         {
1745             memo = null;
1746             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(SingleLineCommentChar), "ES6.SingleLineCommentChars"), "SingleLineCommentChars")(TParseTree("", false,[], s));
1747         }
1748     }
1749     static string SingleLineCommentChars(GetName g)
1750     {
1751         return "ES6.SingleLineCommentChars";
1752     }
1753 
1754     static TParseTree SingleLineCommentChar(TParseTree p)
1755     {
1756         if(__ctfe)
1757         {
1758             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.SingleLineCommentChar")(p);
1759         }
1760         else
1761         {
1762             if(auto m = tuple(`SingleLineCommentChar`,p.end) in memo)
1763                 return *m;
1764             else
1765             {
1766                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.SingleLineCommentChar"), "SingleLineCommentChar")(p);
1767                 memo[tuple(`SingleLineCommentChar`,p.end)] = result;
1768                 return result;
1769             }
1770         }
1771     }
1772 
1773     static TParseTree SingleLineCommentChar(string s)
1774     {
1775         if(__ctfe)
1776         {
1777             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.SingleLineCommentChar")(TParseTree("", false,[], s));
1778         }
1779         else
1780         {
1781             memo = null;
1782             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.SingleLineCommentChar"), "SingleLineCommentChar")(TParseTree("", false,[], s));
1783         }
1784     }
1785     static string SingleLineCommentChar(GetName g)
1786     {
1787         return "ES6.SingleLineCommentChar";
1788     }
1789 
1790     static TParseTree CommonToken(TParseTree p)
1791     {
1792         if(__ctfe)
1793         {
1794             return         pegged.peg.defined!(pegged.peg.or!(IdentifierName, Punctuator, NumericLiteral, StringLiteral, Template), "ES6.CommonToken")(p);
1795         }
1796         else
1797         {
1798             if(auto m = tuple(`CommonToken`,p.end) in memo)
1799                 return *m;
1800             else
1801             {
1802                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(IdentifierName, Punctuator, NumericLiteral, StringLiteral, Template), "ES6.CommonToken"), "CommonToken")(p);
1803                 memo[tuple(`CommonToken`,p.end)] = result;
1804                 return result;
1805             }
1806         }
1807     }
1808 
1809     static TParseTree CommonToken(string s)
1810     {
1811         if(__ctfe)
1812         {
1813             return         pegged.peg.defined!(pegged.peg.or!(IdentifierName, Punctuator, NumericLiteral, StringLiteral, Template), "ES6.CommonToken")(TParseTree("", false,[], s));
1814         }
1815         else
1816         {
1817             memo = null;
1818             return hooked!(pegged.peg.defined!(pegged.peg.or!(IdentifierName, Punctuator, NumericLiteral, StringLiteral, Template), "ES6.CommonToken"), "CommonToken")(TParseTree("", false,[], s));
1819         }
1820     }
1821     static string CommonToken(GetName g)
1822     {
1823         return "ES6.CommonToken";
1824     }
1825 
1826     static TParseTree IdentifierName(TParseTree p)
1827     {
1828         if(__ctfe)
1829         {
1830             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(IdentifierStart, pegged.peg.zeroOrMore!(IdentifierPart))), "ES6.IdentifierName")(p);
1831         }
1832         else
1833         {
1834             if(auto m = tuple(`IdentifierName`,p.end) in memo)
1835                 return *m;
1836             else
1837             {
1838                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(IdentifierStart, pegged.peg.zeroOrMore!(IdentifierPart))), "ES6.IdentifierName"), "IdentifierName")(p);
1839                 memo[tuple(`IdentifierName`,p.end)] = result;
1840                 return result;
1841             }
1842         }
1843     }
1844 
1845     static TParseTree IdentifierName(string s)
1846     {
1847         if(__ctfe)
1848         {
1849             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(IdentifierStart, pegged.peg.zeroOrMore!(IdentifierPart))), "ES6.IdentifierName")(TParseTree("", false,[], s));
1850         }
1851         else
1852         {
1853             memo = null;
1854             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(IdentifierStart, pegged.peg.zeroOrMore!(IdentifierPart))), "ES6.IdentifierName"), "IdentifierName")(TParseTree("", false,[], s));
1855         }
1856     }
1857     static string IdentifierName(GetName g)
1858     {
1859         return "ES6.IdentifierName";
1860     }
1861 
1862     static TParseTree IdentifierStart(TParseTree p)
1863     {
1864         if(__ctfe)
1865         {
1866             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDStart, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence))), "ES6.IdentifierStart")(p);
1867         }
1868         else
1869         {
1870             if(auto m = tuple(`IdentifierStart`,p.end) in memo)
1871                 return *m;
1872             else
1873             {
1874                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDStart, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence))), "ES6.IdentifierStart"), "IdentifierStart")(p);
1875                 memo[tuple(`IdentifierStart`,p.end)] = result;
1876                 return result;
1877             }
1878         }
1879     }
1880 
1881     static TParseTree IdentifierStart(string s)
1882     {
1883         if(__ctfe)
1884         {
1885             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDStart, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence))), "ES6.IdentifierStart")(TParseTree("", false,[], s));
1886         }
1887         else
1888         {
1889             memo = null;
1890             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDStart, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence))), "ES6.IdentifierStart"), "IdentifierStart")(TParseTree("", false,[], s));
1891         }
1892     }
1893     static string IdentifierStart(GetName g)
1894     {
1895         return "ES6.IdentifierStart";
1896     }
1897 
1898     static TParseTree IdentifierPart(TParseTree p)
1899     {
1900         if(__ctfe)
1901         {
1902             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDContinue, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence), pegged.peg.literal!("\u200C"), pegged.peg.literal!("\u200D"))), "ES6.IdentifierPart")(p);
1903         }
1904         else
1905         {
1906             if(auto m = tuple(`IdentifierPart`,p.end) in memo)
1907                 return *m;
1908             else
1909             {
1910                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDContinue, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence), pegged.peg.literal!("\u200C"), pegged.peg.literal!("\u200D"))), "ES6.IdentifierPart"), "IdentifierPart")(p);
1911                 memo[tuple(`IdentifierPart`,p.end)] = result;
1912                 return result;
1913             }
1914         }
1915     }
1916 
1917     static TParseTree IdentifierPart(string s)
1918     {
1919         if(__ctfe)
1920         {
1921             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDContinue, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence), pegged.peg.literal!("\u200C"), pegged.peg.literal!("\u200D"))), "ES6.IdentifierPart")(TParseTree("", false,[], s));
1922         }
1923         else
1924         {
1925             memo = null;
1926             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(UnicodeIDContinue, pegged.peg.literal!("$"), pegged.peg.literal!("_"), pegged.peg.and!(pegged.peg.literal!("\\"), UnicodeEscapeSequence), pegged.peg.literal!("\u200C"), pegged.peg.literal!("\u200D"))), "ES6.IdentifierPart"), "IdentifierPart")(TParseTree("", false,[], s));
1927         }
1928     }
1929     static string IdentifierPart(GetName g)
1930     {
1931         return "ES6.IdentifierPart";
1932     }
1933 
1934     static TParseTree UnicodeIDStart(TParseTree p)
1935     {
1936         if(__ctfe)
1937         {
1938             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(ID_Start, Other_ID_Start)), "ES6.UnicodeIDStart")(p);
1939         }
1940         else
1941         {
1942             if(auto m = tuple(`UnicodeIDStart`,p.end) in memo)
1943                 return *m;
1944             else
1945             {
1946                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(ID_Start, Other_ID_Start)), "ES6.UnicodeIDStart"), "UnicodeIDStart")(p);
1947                 memo[tuple(`UnicodeIDStart`,p.end)] = result;
1948                 return result;
1949             }
1950         }
1951     }
1952 
1953     static TParseTree UnicodeIDStart(string s)
1954     {
1955         if(__ctfe)
1956         {
1957             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(ID_Start, Other_ID_Start)), "ES6.UnicodeIDStart")(TParseTree("", false,[], s));
1958         }
1959         else
1960         {
1961             memo = null;
1962             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(ID_Start, Other_ID_Start)), "ES6.UnicodeIDStart"), "UnicodeIDStart")(TParseTree("", false,[], s));
1963         }
1964     }
1965     static string UnicodeIDStart(GetName g)
1966     {
1967         return "ES6.UnicodeIDStart";
1968     }
1969 
1970     static TParseTree ID_Start(TParseTree p)
1971     {
1972         if(__ctfe)
1973         {
1974             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Start")(p);
1975         }
1976         else
1977         {
1978             if(auto m = tuple(`ID_Start`,p.end) in memo)
1979                 return *m;
1980             else
1981             {
1982                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Start"), "ID_Start")(p);
1983                 memo[tuple(`ID_Start`,p.end)] = result;
1984                 return result;
1985             }
1986         }
1987     }
1988 
1989     static TParseTree ID_Start(string s)
1990     {
1991         if(__ctfe)
1992         {
1993             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Start")(TParseTree("", false,[], s));
1994         }
1995         else
1996         {
1997             memo = null;
1998             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Start"), "ID_Start")(TParseTree("", false,[], s));
1999         }
2000     }
2001     static string ID_Start(GetName g)
2002     {
2003         return "ES6.ID_Start";
2004     }
2005 
2006     static TParseTree Other_ID_Start(TParseTree p)
2007     {
2008         if(__ctfe)
2009         {
2010             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u2118"), pegged.peg.literal!("\u212e"), pegged.peg.charRange!('\u309b', '\u309c')), "ES6.Other_ID_Start")(p);
2011         }
2012         else
2013         {
2014             if(auto m = tuple(`Other_ID_Start`,p.end) in memo)
2015                 return *m;
2016             else
2017             {
2018                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u2118"), pegged.peg.literal!("\u212e"), pegged.peg.charRange!('\u309b', '\u309c')), "ES6.Other_ID_Start"), "Other_ID_Start")(p);
2019                 memo[tuple(`Other_ID_Start`,p.end)] = result;
2020                 return result;
2021             }
2022         }
2023     }
2024 
2025     static TParseTree Other_ID_Start(string s)
2026     {
2027         if(__ctfe)
2028         {
2029             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u2118"), pegged.peg.literal!("\u212e"), pegged.peg.charRange!('\u309b', '\u309c')), "ES6.Other_ID_Start")(TParseTree("", false,[], s));
2030         }
2031         else
2032         {
2033             memo = null;
2034             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u2118"), pegged.peg.literal!("\u212e"), pegged.peg.charRange!('\u309b', '\u309c')), "ES6.Other_ID_Start"), "Other_ID_Start")(TParseTree("", false,[], s));
2035         }
2036     }
2037     static string Other_ID_Start(GetName g)
2038     {
2039         return "ES6.Other_ID_Start";
2040     }
2041 
2042     static TParseTree UnicodeIDContinue(TParseTree p)
2043     {
2044         if(__ctfe)
2045         {
2046             return         pegged.peg.defined!(pegged.peg.or!(ID_Continue, Other_ID_Continue, Other_ID_Start), "ES6.UnicodeIDContinue")(p);
2047         }
2048         else
2049         {
2050             if(auto m = tuple(`UnicodeIDContinue`,p.end) in memo)
2051                 return *m;
2052             else
2053             {
2054                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(ID_Continue, Other_ID_Continue, Other_ID_Start), "ES6.UnicodeIDContinue"), "UnicodeIDContinue")(p);
2055                 memo[tuple(`UnicodeIDContinue`,p.end)] = result;
2056                 return result;
2057             }
2058         }
2059     }
2060 
2061     static TParseTree UnicodeIDContinue(string s)
2062     {
2063         if(__ctfe)
2064         {
2065             return         pegged.peg.defined!(pegged.peg.or!(ID_Continue, Other_ID_Continue, Other_ID_Start), "ES6.UnicodeIDContinue")(TParseTree("", false,[], s));
2066         }
2067         else
2068         {
2069             memo = null;
2070             return hooked!(pegged.peg.defined!(pegged.peg.or!(ID_Continue, Other_ID_Continue, Other_ID_Start), "ES6.UnicodeIDContinue"), "UnicodeIDContinue")(TParseTree("", false,[], s));
2071         }
2072     }
2073     static string UnicodeIDContinue(GetName g)
2074     {
2075         return "ES6.UnicodeIDContinue";
2076     }
2077 
2078     static TParseTree ID_Continue(TParseTree p)
2079     {
2080         if(__ctfe)
2081         {
2082             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0030', '\u0039'), pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.literal!("\u005f"), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Continue")(p);
2083         }
2084         else
2085         {
2086             if(auto m = tuple(`ID_Continue`,p.end) in memo)
2087                 return *m;
2088             else
2089             {
2090                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0030', '\u0039'), pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.literal!("\u005f"), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Continue"), "ID_Continue")(p);
2091                 memo[tuple(`ID_Continue`,p.end)] = result;
2092                 return result;
2093             }
2094         }
2095     }
2096 
2097     static TParseTree ID_Continue(string s)
2098     {
2099         if(__ctfe)
2100         {
2101             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0030', '\u0039'), pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.literal!("\u005f"), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Continue")(TParseTree("", false,[], s));
2102         }
2103         else
2104         {
2105             memo = null;
2106             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\u0030', '\u0039'), pegged.peg.charRange!('\u0041', '\u005a'), pegged.peg.literal!("\u005f"), pegged.peg.charRange!('\u0061', '\u007a'), pegged.peg.literal!("\u00aa"), pegged.peg.literal!("\u00b5"), pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u00ba"), pegged.peg.charRange!('\u00c0', '\u00d6'), pegged.peg.charRange!('\u00d8', '\u00f6')), "ES6.ID_Continue"), "ID_Continue")(TParseTree("", false,[], s));
2107         }
2108     }
2109     static string ID_Continue(GetName g)
2110     {
2111         return "ES6.ID_Continue";
2112     }
2113 
2114     static TParseTree Other_ID_Continue(TParseTree p)
2115     {
2116         if(__ctfe)
2117         {
2118             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u0387"), pegged.peg.charRange!('\u1369', '\u1371'), pegged.peg.literal!("\u19da")), "ES6.Other_ID_Continue")(p);
2119         }
2120         else
2121         {
2122             if(auto m = tuple(`Other_ID_Continue`,p.end) in memo)
2123                 return *m;
2124             else
2125             {
2126                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u0387"), pegged.peg.charRange!('\u1369', '\u1371'), pegged.peg.literal!("\u19da")), "ES6.Other_ID_Continue"), "Other_ID_Continue")(p);
2127                 memo[tuple(`Other_ID_Continue`,p.end)] = result;
2128                 return result;
2129             }
2130         }
2131     }
2132 
2133     static TParseTree Other_ID_Continue(string s)
2134     {
2135         if(__ctfe)
2136         {
2137             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u0387"), pegged.peg.charRange!('\u1369', '\u1371'), pegged.peg.literal!("\u19da")), "ES6.Other_ID_Continue")(TParseTree("", false,[], s));
2138         }
2139         else
2140         {
2141             memo = null;
2142             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("\u00b7"), pegged.peg.literal!("\u0387"), pegged.peg.charRange!('\u1369', '\u1371'), pegged.peg.literal!("\u19da")), "ES6.Other_ID_Continue"), "Other_ID_Continue")(TParseTree("", false,[], s));
2143         }
2144     }
2145     static string Other_ID_Continue(GetName g)
2146     {
2147         return "ES6.Other_ID_Continue";
2148     }
2149 
2150     static TParseTree ReservedWord(TParseTree p)
2151     {
2152         if(__ctfe)
2153         {
2154             return         pegged.peg.defined!(pegged.peg.or!(Keyword, FutureReservedWord, NullLiteral, BooleanLiteral), "ES6.ReservedWord")(p);
2155         }
2156         else
2157         {
2158             if(auto m = tuple(`ReservedWord`,p.end) in memo)
2159                 return *m;
2160             else
2161             {
2162                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(Keyword, FutureReservedWord, NullLiteral, BooleanLiteral), "ES6.ReservedWord"), "ReservedWord")(p);
2163                 memo[tuple(`ReservedWord`,p.end)] = result;
2164                 return result;
2165             }
2166         }
2167     }
2168 
2169     static TParseTree ReservedWord(string s)
2170     {
2171         if(__ctfe)
2172         {
2173             return         pegged.peg.defined!(pegged.peg.or!(Keyword, FutureReservedWord, NullLiteral, BooleanLiteral), "ES6.ReservedWord")(TParseTree("", false,[], s));
2174         }
2175         else
2176         {
2177             memo = null;
2178             return hooked!(pegged.peg.defined!(pegged.peg.or!(Keyword, FutureReservedWord, NullLiteral, BooleanLiteral), "ES6.ReservedWord"), "ReservedWord")(TParseTree("", false,[], s));
2179         }
2180     }
2181     static string ReservedWord(GetName g)
2182     {
2183         return "ES6.ReservedWord";
2184     }
2185 
2186     static TParseTree Keyword(TParseTree p)
2187     {
2188         if(__ctfe)
2189         {
2190             return         pegged.peg.defined!(pegged.peg.keywords!("break", "do", "in", "typeof", "case", "else", "instanceof", "var", "catch", "export", "new", "void", "class", "extends", "return", "while", "const", "finally", "super", "with", "continue", "for", "switch", "yield", "debugger", "function", "this", "default", "if", "throw", "delete", "import", "try"), "ES6.Keyword")(p);
2191         }
2192         else
2193         {
2194             if(auto m = tuple(`Keyword`,p.end) in memo)
2195                 return *m;
2196             else
2197             {
2198                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("break", "do", "in", "typeof", "case", "else", "instanceof", "var", "catch", "export", "new", "void", "class", "extends", "return", "while", "const", "finally", "super", "with", "continue", "for", "switch", "yield", "debugger", "function", "this", "default", "if", "throw", "delete", "import", "try"), "ES6.Keyword"), "Keyword")(p);
2199                 memo[tuple(`Keyword`,p.end)] = result;
2200                 return result;
2201             }
2202         }
2203     }
2204 
2205     static TParseTree Keyword(string s)
2206     {
2207         if(__ctfe)
2208         {
2209             return         pegged.peg.defined!(pegged.peg.keywords!("break", "do", "in", "typeof", "case", "else", "instanceof", "var", "catch", "export", "new", "void", "class", "extends", "return", "while", "const", "finally", "super", "with", "continue", "for", "switch", "yield", "debugger", "function", "this", "default", "if", "throw", "delete", "import", "try"), "ES6.Keyword")(TParseTree("", false,[], s));
2210         }
2211         else
2212         {
2213             memo = null;
2214             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("break", "do", "in", "typeof", "case", "else", "instanceof", "var", "catch", "export", "new", "void", "class", "extends", "return", "while", "const", "finally", "super", "with", "continue", "for", "switch", "yield", "debugger", "function", "this", "default", "if", "throw", "delete", "import", "try"), "ES6.Keyword"), "Keyword")(TParseTree("", false,[], s));
2215         }
2216     }
2217     static string Keyword(GetName g)
2218     {
2219         return "ES6.Keyword";
2220     }
2221 
2222     static TParseTree FutureReservedWord(TParseTree p)
2223     {
2224         if(__ctfe)
2225         {
2226             return         pegged.peg.defined!(pegged.peg.keywords!("enum", "await"), "ES6.FutureReservedWord")(p);
2227         }
2228         else
2229         {
2230             if(auto m = tuple(`FutureReservedWord`,p.end) in memo)
2231                 return *m;
2232             else
2233             {
2234                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("enum", "await"), "ES6.FutureReservedWord"), "FutureReservedWord")(p);
2235                 memo[tuple(`FutureReservedWord`,p.end)] = result;
2236                 return result;
2237             }
2238         }
2239     }
2240 
2241     static TParseTree FutureReservedWord(string s)
2242     {
2243         if(__ctfe)
2244         {
2245             return         pegged.peg.defined!(pegged.peg.keywords!("enum", "await"), "ES6.FutureReservedWord")(TParseTree("", false,[], s));
2246         }
2247         else
2248         {
2249             memo = null;
2250             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("enum", "await"), "ES6.FutureReservedWord"), "FutureReservedWord")(TParseTree("", false,[], s));
2251         }
2252     }
2253     static string FutureReservedWord(GetName g)
2254     {
2255         return "ES6.FutureReservedWord";
2256     }
2257 
2258     static TParseTree Punctuator(TParseTree p)
2259     {
2260         if(__ctfe)
2261         {
2262             return         pegged.peg.defined!(pegged.peg.keywords!("{", "}", "(", ")", "[", "]", ".", ";", ",", "<=", ">=", "<", ">", "===", "!==", "==", "!=", "++", "--", "*=", "*", "%=", "%", "+=", "+", "-=", "-", "<<=", "<<", ">>>=", ">>>", ">>=", ">>", "&&", "||", "^=", "^", "!", "~", "&=", "&", "|=", "|", "?", ":", "=>", "="), "ES6.Punctuator")(p);
2263         }
2264         else
2265         {
2266             if(auto m = tuple(`Punctuator`,p.end) in memo)
2267                 return *m;
2268             else
2269             {
2270                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("{", "}", "(", ")", "[", "]", ".", ";", ",", "<=", ">=", "<", ">", "===", "!==", "==", "!=", "++", "--", "*=", "*", "%=", "%", "+=", "+", "-=", "-", "<<=", "<<", ">>>=", ">>>", ">>=", ">>", "&&", "||", "^=", "^", "!", "~", "&=", "&", "|=", "|", "?", ":", "=>", "="), "ES6.Punctuator"), "Punctuator")(p);
2271                 memo[tuple(`Punctuator`,p.end)] = result;
2272                 return result;
2273             }
2274         }
2275     }
2276 
2277     static TParseTree Punctuator(string s)
2278     {
2279         if(__ctfe)
2280         {
2281             return         pegged.peg.defined!(pegged.peg.keywords!("{", "}", "(", ")", "[", "]", ".", ";", ",", "<=", ">=", "<", ">", "===", "!==", "==", "!=", "++", "--", "*=", "*", "%=", "%", "+=", "+", "-=", "-", "<<=", "<<", ">>>=", ">>>", ">>=", ">>", "&&", "||", "^=", "^", "!", "~", "&=", "&", "|=", "|", "?", ":", "=>", "="), "ES6.Punctuator")(TParseTree("", false,[], s));
2282         }
2283         else
2284         {
2285             memo = null;
2286             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("{", "}", "(", ")", "[", "]", ".", ";", ",", "<=", ">=", "<", ">", "===", "!==", "==", "!=", "++", "--", "*=", "*", "%=", "%", "+=", "+", "-=", "-", "<<=", "<<", ">>>=", ">>>", ">>=", ">>", "&&", "||", "^=", "^", "!", "~", "&=", "&", "|=", "|", "?", ":", "=>", "="), "ES6.Punctuator"), "Punctuator")(TParseTree("", false,[], s));
2287         }
2288     }
2289     static string Punctuator(GetName g)
2290     {
2291         return "ES6.Punctuator";
2292     }
2293 
2294     static TParseTree DivPunctuator(TParseTree p)
2295     {
2296         if(__ctfe)
2297         {
2298             return         pegged.peg.defined!(pegged.peg.keywords!("/=", "/"), "ES6.DivPunctuator")(p);
2299         }
2300         else
2301         {
2302             if(auto m = tuple(`DivPunctuator`,p.end) in memo)
2303                 return *m;
2304             else
2305             {
2306                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("/=", "/"), "ES6.DivPunctuator"), "DivPunctuator")(p);
2307                 memo[tuple(`DivPunctuator`,p.end)] = result;
2308                 return result;
2309             }
2310         }
2311     }
2312 
2313     static TParseTree DivPunctuator(string s)
2314     {
2315         if(__ctfe)
2316         {
2317             return         pegged.peg.defined!(pegged.peg.keywords!("/=", "/"), "ES6.DivPunctuator")(TParseTree("", false,[], s));
2318         }
2319         else
2320         {
2321             memo = null;
2322             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("/=", "/"), "ES6.DivPunctuator"), "DivPunctuator")(TParseTree("", false,[], s));
2323         }
2324     }
2325     static string DivPunctuator(GetName g)
2326     {
2327         return "ES6.DivPunctuator";
2328     }
2329 
2330     static TParseTree RightBracePunctuator(TParseTree p)
2331     {
2332         if(__ctfe)
2333         {
2334             return         pegged.peg.defined!(pegged.peg.literal!("}"), "ES6.RightBracePunctuator")(p);
2335         }
2336         else
2337         {
2338             if(auto m = tuple(`RightBracePunctuator`,p.end) in memo)
2339                 return *m;
2340             else
2341             {
2342                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("}"), "ES6.RightBracePunctuator"), "RightBracePunctuator")(p);
2343                 memo[tuple(`RightBracePunctuator`,p.end)] = result;
2344                 return result;
2345             }
2346         }
2347     }
2348 
2349     static TParseTree RightBracePunctuator(string s)
2350     {
2351         if(__ctfe)
2352         {
2353             return         pegged.peg.defined!(pegged.peg.literal!("}"), "ES6.RightBracePunctuator")(TParseTree("", false,[], s));
2354         }
2355         else
2356         {
2357             memo = null;
2358             return hooked!(pegged.peg.defined!(pegged.peg.literal!("}"), "ES6.RightBracePunctuator"), "RightBracePunctuator")(TParseTree("", false,[], s));
2359         }
2360     }
2361     static string RightBracePunctuator(GetName g)
2362     {
2363         return "ES6.RightBracePunctuator";
2364     }
2365 
2366     static TParseTree NullLiteral(TParseTree p)
2367     {
2368         if(__ctfe)
2369         {
2370             return         pegged.peg.defined!(pegged.peg.literal!("null"), "ES6.NullLiteral")(p);
2371         }
2372         else
2373         {
2374             if(auto m = tuple(`NullLiteral`,p.end) in memo)
2375                 return *m;
2376             else
2377             {
2378                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("null"), "ES6.NullLiteral"), "NullLiteral")(p);
2379                 memo[tuple(`NullLiteral`,p.end)] = result;
2380                 return result;
2381             }
2382         }
2383     }
2384 
2385     static TParseTree NullLiteral(string s)
2386     {
2387         if(__ctfe)
2388         {
2389             return         pegged.peg.defined!(pegged.peg.literal!("null"), "ES6.NullLiteral")(TParseTree("", false,[], s));
2390         }
2391         else
2392         {
2393             memo = null;
2394             return hooked!(pegged.peg.defined!(pegged.peg.literal!("null"), "ES6.NullLiteral"), "NullLiteral")(TParseTree("", false,[], s));
2395         }
2396     }
2397     static string NullLiteral(GetName g)
2398     {
2399         return "ES6.NullLiteral";
2400     }
2401 
2402     static TParseTree BooleanLiteral(TParseTree p)
2403     {
2404         if(__ctfe)
2405         {
2406             return         pegged.peg.defined!(pegged.peg.keywords!("true", "false"), "ES6.BooleanLiteral")(p);
2407         }
2408         else
2409         {
2410             if(auto m = tuple(`BooleanLiteral`,p.end) in memo)
2411                 return *m;
2412             else
2413             {
2414                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("true", "false"), "ES6.BooleanLiteral"), "BooleanLiteral")(p);
2415                 memo[tuple(`BooleanLiteral`,p.end)] = result;
2416                 return result;
2417             }
2418         }
2419     }
2420 
2421     static TParseTree BooleanLiteral(string s)
2422     {
2423         if(__ctfe)
2424         {
2425             return         pegged.peg.defined!(pegged.peg.keywords!("true", "false"), "ES6.BooleanLiteral")(TParseTree("", false,[], s));
2426         }
2427         else
2428         {
2429             memo = null;
2430             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("true", "false"), "ES6.BooleanLiteral"), "BooleanLiteral")(TParseTree("", false,[], s));
2431         }
2432     }
2433     static string BooleanLiteral(GetName g)
2434     {
2435         return "ES6.BooleanLiteral";
2436     }
2437 
2438     static TParseTree NumericLiteral(TParseTree p)
2439     {
2440         if(__ctfe)
2441         {
2442             return         pegged.peg.defined!(pegged.peg.or!(HexIntegerLiteral, DecimalLiteral, BinaryIntegerLiteral, OctalIntegerLiteral), "ES6.NumericLiteral")(p);
2443         }
2444         else
2445         {
2446             if(auto m = tuple(`NumericLiteral`,p.end) in memo)
2447                 return *m;
2448             else
2449             {
2450                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(HexIntegerLiteral, DecimalLiteral, BinaryIntegerLiteral, OctalIntegerLiteral), "ES6.NumericLiteral"), "NumericLiteral")(p);
2451                 memo[tuple(`NumericLiteral`,p.end)] = result;
2452                 return result;
2453             }
2454         }
2455     }
2456 
2457     static TParseTree NumericLiteral(string s)
2458     {
2459         if(__ctfe)
2460         {
2461             return         pegged.peg.defined!(pegged.peg.or!(HexIntegerLiteral, DecimalLiteral, BinaryIntegerLiteral, OctalIntegerLiteral), "ES6.NumericLiteral")(TParseTree("", false,[], s));
2462         }
2463         else
2464         {
2465             memo = null;
2466             return hooked!(pegged.peg.defined!(pegged.peg.or!(HexIntegerLiteral, DecimalLiteral, BinaryIntegerLiteral, OctalIntegerLiteral), "ES6.NumericLiteral"), "NumericLiteral")(TParseTree("", false,[], s));
2467         }
2468     }
2469     static string NumericLiteral(GetName g)
2470     {
2471         return "ES6.NumericLiteral";
2472     }
2473 
2474     static TParseTree DecimalLiteral(TParseTree p)
2475     {
2476         if(__ctfe)
2477         {
2478             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(DecimalIntegerLiteral, pegged.peg.option!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.option!(DecimalDigits))), pegged.peg.option!(ExponentPart)), pegged.peg.and!(pegged.peg.literal!("."), DecimalDigits, pegged.peg.option!(ExponentPart)))), "ES6.DecimalLiteral")(p);
2479         }
2480         else
2481         {
2482             if(auto m = tuple(`DecimalLiteral`,p.end) in memo)
2483                 return *m;
2484             else
2485             {
2486                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(DecimalIntegerLiteral, pegged.peg.option!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.option!(DecimalDigits))), pegged.peg.option!(ExponentPart)), pegged.peg.and!(pegged.peg.literal!("."), DecimalDigits, pegged.peg.option!(ExponentPart)))), "ES6.DecimalLiteral"), "DecimalLiteral")(p);
2487                 memo[tuple(`DecimalLiteral`,p.end)] = result;
2488                 return result;
2489             }
2490         }
2491     }
2492 
2493     static TParseTree DecimalLiteral(string s)
2494     {
2495         if(__ctfe)
2496         {
2497             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(DecimalIntegerLiteral, pegged.peg.option!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.option!(DecimalDigits))), pegged.peg.option!(ExponentPart)), pegged.peg.and!(pegged.peg.literal!("."), DecimalDigits, pegged.peg.option!(ExponentPart)))), "ES6.DecimalLiteral")(TParseTree("", false,[], s));
2498         }
2499         else
2500         {
2501             memo = null;
2502             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(DecimalIntegerLiteral, pegged.peg.option!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.option!(DecimalDigits))), pegged.peg.option!(ExponentPart)), pegged.peg.and!(pegged.peg.literal!("."), DecimalDigits, pegged.peg.option!(ExponentPart)))), "ES6.DecimalLiteral"), "DecimalLiteral")(TParseTree("", false,[], s));
2503         }
2504     }
2505     static string DecimalLiteral(GetName g)
2506     {
2507         return "ES6.DecimalLiteral";
2508     }
2509 
2510     static TParseTree DecimalIntegerLiteral(TParseTree p)
2511     {
2512         if(__ctfe)
2513         {
2514             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("0"), pegged.peg.and!(NonZeroDigit, pegged.peg.option!(DecimalDigits))), "ES6.DecimalIntegerLiteral")(p);
2515         }
2516         else
2517         {
2518             if(auto m = tuple(`DecimalIntegerLiteral`,p.end) in memo)
2519                 return *m;
2520             else
2521             {
2522                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("0"), pegged.peg.and!(NonZeroDigit, pegged.peg.option!(DecimalDigits))), "ES6.DecimalIntegerLiteral"), "DecimalIntegerLiteral")(p);
2523                 memo[tuple(`DecimalIntegerLiteral`,p.end)] = result;
2524                 return result;
2525             }
2526         }
2527     }
2528 
2529     static TParseTree DecimalIntegerLiteral(string s)
2530     {
2531         if(__ctfe)
2532         {
2533             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("0"), pegged.peg.and!(NonZeroDigit, pegged.peg.option!(DecimalDigits))), "ES6.DecimalIntegerLiteral")(TParseTree("", false,[], s));
2534         }
2535         else
2536         {
2537             memo = null;
2538             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("0"), pegged.peg.and!(NonZeroDigit, pegged.peg.option!(DecimalDigits))), "ES6.DecimalIntegerLiteral"), "DecimalIntegerLiteral")(TParseTree("", false,[], s));
2539         }
2540     }
2541     static string DecimalIntegerLiteral(GetName g)
2542     {
2543         return "ES6.DecimalIntegerLiteral";
2544     }
2545 
2546     static TParseTree DecimalDigits(TParseTree p)
2547     {
2548         if(__ctfe)
2549         {
2550             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(DecimalDigit)), "ES6.DecimalDigits")(p);
2551         }
2552         else
2553         {
2554             if(auto m = tuple(`DecimalDigits`,p.end) in memo)
2555                 return *m;
2556             else
2557             {
2558                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(DecimalDigit)), "ES6.DecimalDigits"), "DecimalDigits")(p);
2559                 memo[tuple(`DecimalDigits`,p.end)] = result;
2560                 return result;
2561             }
2562         }
2563     }
2564 
2565     static TParseTree DecimalDigits(string s)
2566     {
2567         if(__ctfe)
2568         {
2569             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(DecimalDigit)), "ES6.DecimalDigits")(TParseTree("", false,[], s));
2570         }
2571         else
2572         {
2573             memo = null;
2574             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(DecimalDigit)), "ES6.DecimalDigits"), "DecimalDigits")(TParseTree("", false,[], s));
2575         }
2576     }
2577     static string DecimalDigits(GetName g)
2578     {
2579         return "ES6.DecimalDigits";
2580     }
2581 
2582     static TParseTree DecimalDigit(TParseTree p)
2583     {
2584         if(__ctfe)
2585         {
2586             return         pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "ES6.DecimalDigit")(p);
2587         }
2588         else
2589         {
2590             if(auto m = tuple(`DecimalDigit`,p.end) in memo)
2591                 return *m;
2592             else
2593             {
2594                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "ES6.DecimalDigit"), "DecimalDigit")(p);
2595                 memo[tuple(`DecimalDigit`,p.end)] = result;
2596                 return result;
2597             }
2598         }
2599     }
2600 
2601     static TParseTree DecimalDigit(string s)
2602     {
2603         if(__ctfe)
2604         {
2605             return         pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "ES6.DecimalDigit")(TParseTree("", false,[], s));
2606         }
2607         else
2608         {
2609             memo = null;
2610             return hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "ES6.DecimalDigit"), "DecimalDigit")(TParseTree("", false,[], s));
2611         }
2612     }
2613     static string DecimalDigit(GetName g)
2614     {
2615         return "ES6.DecimalDigit";
2616     }
2617 
2618     static TParseTree NonZeroDigit(TParseTree p)
2619     {
2620         if(__ctfe)
2621         {
2622             return         pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "ES6.NonZeroDigit")(p);
2623         }
2624         else
2625         {
2626             if(auto m = tuple(`NonZeroDigit`,p.end) in memo)
2627                 return *m;
2628             else
2629             {
2630                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "ES6.NonZeroDigit"), "NonZeroDigit")(p);
2631                 memo[tuple(`NonZeroDigit`,p.end)] = result;
2632                 return result;
2633             }
2634         }
2635     }
2636 
2637     static TParseTree NonZeroDigit(string s)
2638     {
2639         if(__ctfe)
2640         {
2641             return         pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "ES6.NonZeroDigit")(TParseTree("", false,[], s));
2642         }
2643         else
2644         {
2645             memo = null;
2646             return hooked!(pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "ES6.NonZeroDigit"), "NonZeroDigit")(TParseTree("", false,[], s));
2647         }
2648     }
2649     static string NonZeroDigit(GetName g)
2650     {
2651         return "ES6.NonZeroDigit";
2652     }
2653 
2654     static TParseTree ExponentPart(TParseTree p)
2655     {
2656         if(__ctfe)
2657         {
2658             return         pegged.peg.defined!(pegged.peg.and!(ExponentIndicator, SignedInteger), "ES6.ExponentPart")(p);
2659         }
2660         else
2661         {
2662             if(auto m = tuple(`ExponentPart`,p.end) in memo)
2663                 return *m;
2664             else
2665             {
2666                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ExponentIndicator, SignedInteger), "ES6.ExponentPart"), "ExponentPart")(p);
2667                 memo[tuple(`ExponentPart`,p.end)] = result;
2668                 return result;
2669             }
2670         }
2671     }
2672 
2673     static TParseTree ExponentPart(string s)
2674     {
2675         if(__ctfe)
2676         {
2677             return         pegged.peg.defined!(pegged.peg.and!(ExponentIndicator, SignedInteger), "ES6.ExponentPart")(TParseTree("", false,[], s));
2678         }
2679         else
2680         {
2681             memo = null;
2682             return hooked!(pegged.peg.defined!(pegged.peg.and!(ExponentIndicator, SignedInteger), "ES6.ExponentPart"), "ExponentPart")(TParseTree("", false,[], s));
2683         }
2684     }
2685     static string ExponentPart(GetName g)
2686     {
2687         return "ES6.ExponentPart";
2688     }
2689 
2690     static TParseTree ExponentIndicator(TParseTree p)
2691     {
2692         if(__ctfe)
2693         {
2694             return         pegged.peg.defined!(pegged.peg.keywords!("e", "E"), "ES6.ExponentIndicator")(p);
2695         }
2696         else
2697         {
2698             if(auto m = tuple(`ExponentIndicator`,p.end) in memo)
2699                 return *m;
2700             else
2701             {
2702                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("e", "E"), "ES6.ExponentIndicator"), "ExponentIndicator")(p);
2703                 memo[tuple(`ExponentIndicator`,p.end)] = result;
2704                 return result;
2705             }
2706         }
2707     }
2708 
2709     static TParseTree ExponentIndicator(string s)
2710     {
2711         if(__ctfe)
2712         {
2713             return         pegged.peg.defined!(pegged.peg.keywords!("e", "E"), "ES6.ExponentIndicator")(TParseTree("", false,[], s));
2714         }
2715         else
2716         {
2717             memo = null;
2718             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("e", "E"), "ES6.ExponentIndicator"), "ExponentIndicator")(TParseTree("", false,[], s));
2719         }
2720     }
2721     static string ExponentIndicator(GetName g)
2722     {
2723         return "ES6.ExponentIndicator";
2724     }
2725 
2726     static TParseTree SignedInteger(TParseTree p)
2727     {
2728         if(__ctfe)
2729         {
2730             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.keywords!("+", "-")), DecimalDigits), "ES6.SignedInteger")(p);
2731         }
2732         else
2733         {
2734             if(auto m = tuple(`SignedInteger`,p.end) in memo)
2735                 return *m;
2736             else
2737             {
2738                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.keywords!("+", "-")), DecimalDigits), "ES6.SignedInteger"), "SignedInteger")(p);
2739                 memo[tuple(`SignedInteger`,p.end)] = result;
2740                 return result;
2741             }
2742         }
2743     }
2744 
2745     static TParseTree SignedInteger(string s)
2746     {
2747         if(__ctfe)
2748         {
2749             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.keywords!("+", "-")), DecimalDigits), "ES6.SignedInteger")(TParseTree("", false,[], s));
2750         }
2751         else
2752         {
2753             memo = null;
2754             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.keywords!("+", "-")), DecimalDigits), "ES6.SignedInteger"), "SignedInteger")(TParseTree("", false,[], s));
2755         }
2756     }
2757     static string SignedInteger(GetName g)
2758     {
2759         return "ES6.SignedInteger";
2760     }
2761 
2762     static TParseTree BinaryIntegerLiteral(TParseTree p)
2763     {
2764         if(__ctfe)
2765         {
2766             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0b", "0B"), BinaryDigits)), "ES6.BinaryIntegerLiteral")(p);
2767         }
2768         else
2769         {
2770             if(auto m = tuple(`BinaryIntegerLiteral`,p.end) in memo)
2771                 return *m;
2772             else
2773             {
2774                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0b", "0B"), BinaryDigits)), "ES6.BinaryIntegerLiteral"), "BinaryIntegerLiteral")(p);
2775                 memo[tuple(`BinaryIntegerLiteral`,p.end)] = result;
2776                 return result;
2777             }
2778         }
2779     }
2780 
2781     static TParseTree BinaryIntegerLiteral(string s)
2782     {
2783         if(__ctfe)
2784         {
2785             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0b", "0B"), BinaryDigits)), "ES6.BinaryIntegerLiteral")(TParseTree("", false,[], s));
2786         }
2787         else
2788         {
2789             memo = null;
2790             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0b", "0B"), BinaryDigits)), "ES6.BinaryIntegerLiteral"), "BinaryIntegerLiteral")(TParseTree("", false,[], s));
2791         }
2792     }
2793     static string BinaryIntegerLiteral(GetName g)
2794     {
2795         return "ES6.BinaryIntegerLiteral";
2796     }
2797 
2798     static TParseTree BinaryDigits(TParseTree p)
2799     {
2800         if(__ctfe)
2801         {
2802             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(BinaryDigit)), "ES6.BinaryDigits")(p);
2803         }
2804         else
2805         {
2806             if(auto m = tuple(`BinaryDigits`,p.end) in memo)
2807                 return *m;
2808             else
2809             {
2810                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(BinaryDigit)), "ES6.BinaryDigits"), "BinaryDigits")(p);
2811                 memo[tuple(`BinaryDigits`,p.end)] = result;
2812                 return result;
2813             }
2814         }
2815     }
2816 
2817     static TParseTree BinaryDigits(string s)
2818     {
2819         if(__ctfe)
2820         {
2821             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(BinaryDigit)), "ES6.BinaryDigits")(TParseTree("", false,[], s));
2822         }
2823         else
2824         {
2825             memo = null;
2826             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(BinaryDigit)), "ES6.BinaryDigits"), "BinaryDigits")(TParseTree("", false,[], s));
2827         }
2828     }
2829     static string BinaryDigits(GetName g)
2830     {
2831         return "ES6.BinaryDigits";
2832     }
2833 
2834     static TParseTree BinaryDigit(TParseTree p)
2835     {
2836         if(__ctfe)
2837         {
2838             return         pegged.peg.defined!(pegged.peg.keywords!("0", "1"), "ES6.BinaryDigit")(p);
2839         }
2840         else
2841         {
2842             if(auto m = tuple(`BinaryDigit`,p.end) in memo)
2843                 return *m;
2844             else
2845             {
2846                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("0", "1"), "ES6.BinaryDigit"), "BinaryDigit")(p);
2847                 memo[tuple(`BinaryDigit`,p.end)] = result;
2848                 return result;
2849             }
2850         }
2851     }
2852 
2853     static TParseTree BinaryDigit(string s)
2854     {
2855         if(__ctfe)
2856         {
2857             return         pegged.peg.defined!(pegged.peg.keywords!("0", "1"), "ES6.BinaryDigit")(TParseTree("", false,[], s));
2858         }
2859         else
2860         {
2861             memo = null;
2862             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("0", "1"), "ES6.BinaryDigit"), "BinaryDigit")(TParseTree("", false,[], s));
2863         }
2864     }
2865     static string BinaryDigit(GetName g)
2866     {
2867         return "ES6.BinaryDigit";
2868     }
2869 
2870     static TParseTree OctalIntegerLiteral(TParseTree p)
2871     {
2872         if(__ctfe)
2873         {
2874             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0o", "0O"), OctalDigits)), "ES6.OctalIntegerLiteral")(p);
2875         }
2876         else
2877         {
2878             if(auto m = tuple(`OctalIntegerLiteral`,p.end) in memo)
2879                 return *m;
2880             else
2881             {
2882                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0o", "0O"), OctalDigits)), "ES6.OctalIntegerLiteral"), "OctalIntegerLiteral")(p);
2883                 memo[tuple(`OctalIntegerLiteral`,p.end)] = result;
2884                 return result;
2885             }
2886         }
2887     }
2888 
2889     static TParseTree OctalIntegerLiteral(string s)
2890     {
2891         if(__ctfe)
2892         {
2893             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0o", "0O"), OctalDigits)), "ES6.OctalIntegerLiteral")(TParseTree("", false,[], s));
2894         }
2895         else
2896         {
2897             memo = null;
2898             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0o", "0O"), OctalDigits)), "ES6.OctalIntegerLiteral"), "OctalIntegerLiteral")(TParseTree("", false,[], s));
2899         }
2900     }
2901     static string OctalIntegerLiteral(GetName g)
2902     {
2903         return "ES6.OctalIntegerLiteral";
2904     }
2905 
2906     static TParseTree OctalDigits(TParseTree p)
2907     {
2908         if(__ctfe)
2909         {
2910             return         pegged.peg.defined!(pegged.peg.oneOrMore!(OctalDigit), "ES6.OctalDigits")(p);
2911         }
2912         else
2913         {
2914             if(auto m = tuple(`OctalDigits`,p.end) in memo)
2915                 return *m;
2916             else
2917             {
2918                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(OctalDigit), "ES6.OctalDigits"), "OctalDigits")(p);
2919                 memo[tuple(`OctalDigits`,p.end)] = result;
2920                 return result;
2921             }
2922         }
2923     }
2924 
2925     static TParseTree OctalDigits(string s)
2926     {
2927         if(__ctfe)
2928         {
2929             return         pegged.peg.defined!(pegged.peg.oneOrMore!(OctalDigit), "ES6.OctalDigits")(TParseTree("", false,[], s));
2930         }
2931         else
2932         {
2933             memo = null;
2934             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(OctalDigit), "ES6.OctalDigits"), "OctalDigits")(TParseTree("", false,[], s));
2935         }
2936     }
2937     static string OctalDigits(GetName g)
2938     {
2939         return "ES6.OctalDigits";
2940     }
2941 
2942     static TParseTree OctalDigit(TParseTree p)
2943     {
2944         if(__ctfe)
2945         {
2946             return         pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "ES6.OctalDigit")(p);
2947         }
2948         else
2949         {
2950             if(auto m = tuple(`OctalDigit`,p.end) in memo)
2951                 return *m;
2952             else
2953             {
2954                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "ES6.OctalDigit"), "OctalDigit")(p);
2955                 memo[tuple(`OctalDigit`,p.end)] = result;
2956                 return result;
2957             }
2958         }
2959     }
2960 
2961     static TParseTree OctalDigit(string s)
2962     {
2963         if(__ctfe)
2964         {
2965             return         pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "ES6.OctalDigit")(TParseTree("", false,[], s));
2966         }
2967         else
2968         {
2969             memo = null;
2970             return hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "ES6.OctalDigit"), "OctalDigit")(TParseTree("", false,[], s));
2971         }
2972     }
2973     static string OctalDigit(GetName g)
2974     {
2975         return "ES6.OctalDigit";
2976     }
2977 
2978     static TParseTree HexIntegerLiteral(TParseTree p)
2979     {
2980         if(__ctfe)
2981         {
2982             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0x", "0X"), HexDigits)), "ES6.HexIntegerLiteral")(p);
2983         }
2984         else
2985         {
2986             if(auto m = tuple(`HexIntegerLiteral`,p.end) in memo)
2987                 return *m;
2988             else
2989             {
2990                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0x", "0X"), HexDigits)), "ES6.HexIntegerLiteral"), "HexIntegerLiteral")(p);
2991                 memo[tuple(`HexIntegerLiteral`,p.end)] = result;
2992                 return result;
2993             }
2994         }
2995     }
2996 
2997     static TParseTree HexIntegerLiteral(string s)
2998     {
2999         if(__ctfe)
3000         {
3001             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0x", "0X"), HexDigits)), "ES6.HexIntegerLiteral")(TParseTree("", false,[], s));
3002         }
3003         else
3004         {
3005             memo = null;
3006             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.keywords!("0x", "0X"), HexDigits)), "ES6.HexIntegerLiteral"), "HexIntegerLiteral")(TParseTree("", false,[], s));
3007         }
3008     }
3009     static string HexIntegerLiteral(GetName g)
3010     {
3011         return "ES6.HexIntegerLiteral";
3012     }
3013 
3014     static TParseTree HexDigits(TParseTree p)
3015     {
3016         if(__ctfe)
3017         {
3018             return         pegged.peg.defined!(pegged.peg.oneOrMore!(HexDigit), "ES6.HexDigits")(p);
3019         }
3020         else
3021         {
3022             if(auto m = tuple(`HexDigits`,p.end) in memo)
3023                 return *m;
3024             else
3025             {
3026                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(HexDigit), "ES6.HexDigits"), "HexDigits")(p);
3027                 memo[tuple(`HexDigits`,p.end)] = result;
3028                 return result;
3029             }
3030         }
3031     }
3032 
3033     static TParseTree HexDigits(string s)
3034     {
3035         if(__ctfe)
3036         {
3037             return         pegged.peg.defined!(pegged.peg.oneOrMore!(HexDigit), "ES6.HexDigits")(TParseTree("", false,[], s));
3038         }
3039         else
3040         {
3041             memo = null;
3042             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(HexDigit), "ES6.HexDigits"), "HexDigits")(TParseTree("", false,[], s));
3043         }
3044     }
3045     static string HexDigits(GetName g)
3046     {
3047         return "ES6.HexDigits";
3048     }
3049 
3050     static TParseTree HexDigit(TParseTree p)
3051     {
3052         if(__ctfe)
3053         {
3054             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('0', '9'), pegged.peg.charRange!('a', 'f'), pegged.peg.charRange!('A', 'F')), "ES6.HexDigit")(p);
3055         }
3056         else
3057         {
3058             if(auto m = tuple(`HexDigit`,p.end) in memo)
3059                 return *m;
3060             else
3061             {
3062                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('0', '9'), pegged.peg.charRange!('a', 'f'), pegged.peg.charRange!('A', 'F')), "ES6.HexDigit"), "HexDigit")(p);
3063                 memo[tuple(`HexDigit`,p.end)] = result;
3064                 return result;
3065             }
3066         }
3067     }
3068 
3069     static TParseTree HexDigit(string s)
3070     {
3071         if(__ctfe)
3072         {
3073             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('0', '9'), pegged.peg.charRange!('a', 'f'), pegged.peg.charRange!('A', 'F')), "ES6.HexDigit")(TParseTree("", false,[], s));
3074         }
3075         else
3076         {
3077             memo = null;
3078             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('0', '9'), pegged.peg.charRange!('a', 'f'), pegged.peg.charRange!('A', 'F')), "ES6.HexDigit"), "HexDigit")(TParseTree("", false,[], s));
3079         }
3080     }
3081     static string HexDigit(GetName g)
3082     {
3083         return "ES6.HexDigit";
3084     }
3085 
3086     static TParseTree StringLiteral(TParseTree p)
3087     {
3088         if(__ctfe)
3089         {
3090             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("\""), pegged.peg.option!(DoubleStringCharacters), pegged.peg.literal!("\"")), pegged.peg.and!(pegged.peg.literal!("'"), pegged.peg.option!(SingleStringCharacters), pegged.peg.literal!("'")))), "ES6.StringLiteral")(p);
3091         }
3092         else
3093         {
3094             if(auto m = tuple(`StringLiteral`,p.end) in memo)
3095                 return *m;
3096             else
3097             {
3098                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("\""), pegged.peg.option!(DoubleStringCharacters), pegged.peg.literal!("\"")), pegged.peg.and!(pegged.peg.literal!("'"), pegged.peg.option!(SingleStringCharacters), pegged.peg.literal!("'")))), "ES6.StringLiteral"), "StringLiteral")(p);
3099                 memo[tuple(`StringLiteral`,p.end)] = result;
3100                 return result;
3101             }
3102         }
3103     }
3104 
3105     static TParseTree StringLiteral(string s)
3106     {
3107         if(__ctfe)
3108         {
3109             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("\""), pegged.peg.option!(DoubleStringCharacters), pegged.peg.literal!("\"")), pegged.peg.and!(pegged.peg.literal!("'"), pegged.peg.option!(SingleStringCharacters), pegged.peg.literal!("'")))), "ES6.StringLiteral")(TParseTree("", false,[], s));
3110         }
3111         else
3112         {
3113             memo = null;
3114             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("\""), pegged.peg.option!(DoubleStringCharacters), pegged.peg.literal!("\"")), pegged.peg.and!(pegged.peg.literal!("'"), pegged.peg.option!(SingleStringCharacters), pegged.peg.literal!("'")))), "ES6.StringLiteral"), "StringLiteral")(TParseTree("", false,[], s));
3115         }
3116     }
3117     static string StringLiteral(GetName g)
3118     {
3119         return "ES6.StringLiteral";
3120     }
3121 
3122     static TParseTree DoubleStringCharacters(TParseTree p)
3123     {
3124         if(__ctfe)
3125         {
3126             return         pegged.peg.defined!(pegged.peg.oneOrMore!(DoubleStringCharacter), "ES6.DoubleStringCharacters")(p);
3127         }
3128         else
3129         {
3130             if(auto m = tuple(`DoubleStringCharacters`,p.end) in memo)
3131                 return *m;
3132             else
3133             {
3134                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(DoubleStringCharacter), "ES6.DoubleStringCharacters"), "DoubleStringCharacters")(p);
3135                 memo[tuple(`DoubleStringCharacters`,p.end)] = result;
3136                 return result;
3137             }
3138         }
3139     }
3140 
3141     static TParseTree DoubleStringCharacters(string s)
3142     {
3143         if(__ctfe)
3144         {
3145             return         pegged.peg.defined!(pegged.peg.oneOrMore!(DoubleStringCharacter), "ES6.DoubleStringCharacters")(TParseTree("", false,[], s));
3146         }
3147         else
3148         {
3149             memo = null;
3150             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(DoubleStringCharacter), "ES6.DoubleStringCharacters"), "DoubleStringCharacters")(TParseTree("", false,[], s));
3151         }
3152     }
3153     static string DoubleStringCharacters(GetName g)
3154     {
3155         return "ES6.DoubleStringCharacters";
3156     }
3157 
3158     static TParseTree SingleStringCharacters(TParseTree p)
3159     {
3160         if(__ctfe)
3161         {
3162             return         pegged.peg.defined!(pegged.peg.oneOrMore!(SingleStringCharacter), "ES6.SingleStringCharacters")(p);
3163         }
3164         else
3165         {
3166             if(auto m = tuple(`SingleStringCharacters`,p.end) in memo)
3167                 return *m;
3168             else
3169             {
3170                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(SingleStringCharacter), "ES6.SingleStringCharacters"), "SingleStringCharacters")(p);
3171                 memo[tuple(`SingleStringCharacters`,p.end)] = result;
3172                 return result;
3173             }
3174         }
3175     }
3176 
3177     static TParseTree SingleStringCharacters(string s)
3178     {
3179         if(__ctfe)
3180         {
3181             return         pegged.peg.defined!(pegged.peg.oneOrMore!(SingleStringCharacter), "ES6.SingleStringCharacters")(TParseTree("", false,[], s));
3182         }
3183         else
3184         {
3185             memo = null;
3186             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(SingleStringCharacter), "ES6.SingleStringCharacters"), "SingleStringCharacters")(TParseTree("", false,[], s));
3187         }
3188     }
3189     static string SingleStringCharacters(GetName g)
3190     {
3191         return "ES6.SingleStringCharacters";
3192     }
3193 
3194     static TParseTree DoubleStringCharacter(TParseTree p)
3195     {
3196         if(__ctfe)
3197         {
3198             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\""), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.DoubleStringCharacter")(p);
3199         }
3200         else
3201         {
3202             if(auto m = tuple(`DoubleStringCharacter`,p.end) in memo)
3203                 return *m;
3204             else
3205             {
3206                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\""), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.DoubleStringCharacter"), "DoubleStringCharacter")(p);
3207                 memo[tuple(`DoubleStringCharacter`,p.end)] = result;
3208                 return result;
3209             }
3210         }
3211     }
3212 
3213     static TParseTree DoubleStringCharacter(string s)
3214     {
3215         if(__ctfe)
3216         {
3217             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\""), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.DoubleStringCharacter")(TParseTree("", false,[], s));
3218         }
3219         else
3220         {
3221             memo = null;
3222             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\""), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.DoubleStringCharacter"), "DoubleStringCharacter")(TParseTree("", false,[], s));
3223         }
3224     }
3225     static string DoubleStringCharacter(GetName g)
3226     {
3227         return "ES6.DoubleStringCharacter";
3228     }
3229 
3230     static TParseTree SingleStringCharacter(TParseTree p)
3231     {
3232         if(__ctfe)
3233         {
3234             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\'"), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.SingleStringCharacter")(p);
3235         }
3236         else
3237         {
3238             if(auto m = tuple(`SingleStringCharacter`,p.end) in memo)
3239                 return *m;
3240             else
3241             {
3242                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\'"), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.SingleStringCharacter"), "SingleStringCharacter")(p);
3243                 memo[tuple(`SingleStringCharacter`,p.end)] = result;
3244                 return result;
3245             }
3246         }
3247     }
3248 
3249     static TParseTree SingleStringCharacter(string s)
3250     {
3251         if(__ctfe)
3252         {
3253             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\'"), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.SingleStringCharacter")(TParseTree("", false,[], s));
3254         }
3255         else
3256         {
3257             memo = null;
3258             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\'"), pegged.peg.literal!("\\"), LineTerminator)), SourceCharacter), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation), "ES6.SingleStringCharacter"), "SingleStringCharacter")(TParseTree("", false,[], s));
3259         }
3260     }
3261     static string SingleStringCharacter(GetName g)
3262     {
3263         return "ES6.SingleStringCharacter";
3264     }
3265 
3266     static TParseTree LineContinuation(TParseTree p)
3267     {
3268         if(__ctfe)
3269         {
3270             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), LineTerminatorSequence), "ES6.LineContinuation")(p);
3271         }
3272         else
3273         {
3274             if(auto m = tuple(`LineContinuation`,p.end) in memo)
3275                 return *m;
3276             else
3277             {
3278                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), LineTerminatorSequence), "ES6.LineContinuation"), "LineContinuation")(p);
3279                 memo[tuple(`LineContinuation`,p.end)] = result;
3280                 return result;
3281             }
3282         }
3283     }
3284 
3285     static TParseTree LineContinuation(string s)
3286     {
3287         if(__ctfe)
3288         {
3289             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), LineTerminatorSequence), "ES6.LineContinuation")(TParseTree("", false,[], s));
3290         }
3291         else
3292         {
3293             memo = null;
3294             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), LineTerminatorSequence), "ES6.LineContinuation"), "LineContinuation")(TParseTree("", false,[], s));
3295         }
3296     }
3297     static string LineContinuation(GetName g)
3298     {
3299         return "ES6.LineContinuation";
3300     }
3301 
3302     static TParseTree EscapeSequence(TParseTree p)
3303     {
3304         if(__ctfe)
3305         {
3306             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(CharacterEscapeSequence, pegged.peg.and!(pegged.peg.literal!("0"), pegged.peg.negLookahead!(DecimalDigit))), HexEscapeSequence, UnicodeEscapeSequence), "ES6.EscapeSequence")(p);
3307         }
3308         else
3309         {
3310             if(auto m = tuple(`EscapeSequence`,p.end) in memo)
3311                 return *m;
3312             else
3313             {
3314                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(CharacterEscapeSequence, pegged.peg.and!(pegged.peg.literal!("0"), pegged.peg.negLookahead!(DecimalDigit))), HexEscapeSequence, UnicodeEscapeSequence), "ES6.EscapeSequence"), "EscapeSequence")(p);
3315                 memo[tuple(`EscapeSequence`,p.end)] = result;
3316                 return result;
3317             }
3318         }
3319     }
3320 
3321     static TParseTree EscapeSequence(string s)
3322     {
3323         if(__ctfe)
3324         {
3325             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(CharacterEscapeSequence, pegged.peg.and!(pegged.peg.literal!("0"), pegged.peg.negLookahead!(DecimalDigit))), HexEscapeSequence, UnicodeEscapeSequence), "ES6.EscapeSequence")(TParseTree("", false,[], s));
3326         }
3327         else
3328         {
3329             memo = null;
3330             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(CharacterEscapeSequence, pegged.peg.and!(pegged.peg.literal!("0"), pegged.peg.negLookahead!(DecimalDigit))), HexEscapeSequence, UnicodeEscapeSequence), "ES6.EscapeSequence"), "EscapeSequence")(TParseTree("", false,[], s));
3331         }
3332     }
3333     static string EscapeSequence(GetName g)
3334     {
3335         return "ES6.EscapeSequence";
3336     }
3337 
3338     static TParseTree CharacterEscapeSequence(TParseTree p)
3339     {
3340         if(__ctfe)
3341         {
3342             return         pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, NonEscapeCharacter), "ES6.CharacterEscapeSequence")(p);
3343         }
3344         else
3345         {
3346             if(auto m = tuple(`CharacterEscapeSequence`,p.end) in memo)
3347                 return *m;
3348             else
3349             {
3350                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, NonEscapeCharacter), "ES6.CharacterEscapeSequence"), "CharacterEscapeSequence")(p);
3351                 memo[tuple(`CharacterEscapeSequence`,p.end)] = result;
3352                 return result;
3353             }
3354         }
3355     }
3356 
3357     static TParseTree CharacterEscapeSequence(string s)
3358     {
3359         if(__ctfe)
3360         {
3361             return         pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, NonEscapeCharacter), "ES6.CharacterEscapeSequence")(TParseTree("", false,[], s));
3362         }
3363         else
3364         {
3365             memo = null;
3366             return hooked!(pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, NonEscapeCharacter), "ES6.CharacterEscapeSequence"), "CharacterEscapeSequence")(TParseTree("", false,[], s));
3367         }
3368     }
3369     static string CharacterEscapeSequence(GetName g)
3370     {
3371         return "ES6.CharacterEscapeSequence";
3372     }
3373 
3374     static TParseTree SingleEscapeCharacter(TParseTree p)
3375     {
3376         if(__ctfe)
3377         {
3378             return         pegged.peg.defined!(pegged.peg.keywords!("'", "\"", "\\", "b", "f", "n", "r", "t", "v"), "ES6.SingleEscapeCharacter")(p);
3379         }
3380         else
3381         {
3382             if(auto m = tuple(`SingleEscapeCharacter`,p.end) in memo)
3383                 return *m;
3384             else
3385             {
3386                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("'", "\"", "\\", "b", "f", "n", "r", "t", "v"), "ES6.SingleEscapeCharacter"), "SingleEscapeCharacter")(p);
3387                 memo[tuple(`SingleEscapeCharacter`,p.end)] = result;
3388                 return result;
3389             }
3390         }
3391     }
3392 
3393     static TParseTree SingleEscapeCharacter(string s)
3394     {
3395         if(__ctfe)
3396         {
3397             return         pegged.peg.defined!(pegged.peg.keywords!("'", "\"", "\\", "b", "f", "n", "r", "t", "v"), "ES6.SingleEscapeCharacter")(TParseTree("", false,[], s));
3398         }
3399         else
3400         {
3401             memo = null;
3402             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("'", "\"", "\\", "b", "f", "n", "r", "t", "v"), "ES6.SingleEscapeCharacter"), "SingleEscapeCharacter")(TParseTree("", false,[], s));
3403         }
3404     }
3405     static string SingleEscapeCharacter(GetName g)
3406     {
3407         return "ES6.SingleEscapeCharacter";
3408     }
3409 
3410     static TParseTree NonEscapeCharacter(TParseTree p)
3411     {
3412         if(__ctfe)
3413         {
3414             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(EscapeCharacter, LineTerminator)), SourceCharacter), "ES6.NonEscapeCharacter")(p);
3415         }
3416         else
3417         {
3418             if(auto m = tuple(`NonEscapeCharacter`,p.end) in memo)
3419                 return *m;
3420             else
3421             {
3422                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(EscapeCharacter, LineTerminator)), SourceCharacter), "ES6.NonEscapeCharacter"), "NonEscapeCharacter")(p);
3423                 memo[tuple(`NonEscapeCharacter`,p.end)] = result;
3424                 return result;
3425             }
3426         }
3427     }
3428 
3429     static TParseTree NonEscapeCharacter(string s)
3430     {
3431         if(__ctfe)
3432         {
3433             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(EscapeCharacter, LineTerminator)), SourceCharacter), "ES6.NonEscapeCharacter")(TParseTree("", false,[], s));
3434         }
3435         else
3436         {
3437             memo = null;
3438             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(EscapeCharacter, LineTerminator)), SourceCharacter), "ES6.NonEscapeCharacter"), "NonEscapeCharacter")(TParseTree("", false,[], s));
3439         }
3440     }
3441     static string NonEscapeCharacter(GetName g)
3442     {
3443         return "ES6.NonEscapeCharacter";
3444     }
3445 
3446     static TParseTree EscapeCharacter(TParseTree p)
3447     {
3448         if(__ctfe)
3449         {
3450             return         pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, DecimalDigit, pegged.peg.literal!("x"), pegged.peg.literal!("u")), "ES6.EscapeCharacter")(p);
3451         }
3452         else
3453         {
3454             if(auto m = tuple(`EscapeCharacter`,p.end) in memo)
3455                 return *m;
3456             else
3457             {
3458                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, DecimalDigit, pegged.peg.literal!("x"), pegged.peg.literal!("u")), "ES6.EscapeCharacter"), "EscapeCharacter")(p);
3459                 memo[tuple(`EscapeCharacter`,p.end)] = result;
3460                 return result;
3461             }
3462         }
3463     }
3464 
3465     static TParseTree EscapeCharacter(string s)
3466     {
3467         if(__ctfe)
3468         {
3469             return         pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, DecimalDigit, pegged.peg.literal!("x"), pegged.peg.literal!("u")), "ES6.EscapeCharacter")(TParseTree("", false,[], s));
3470         }
3471         else
3472         {
3473             memo = null;
3474             return hooked!(pegged.peg.defined!(pegged.peg.or!(SingleEscapeCharacter, DecimalDigit, pegged.peg.literal!("x"), pegged.peg.literal!("u")), "ES6.EscapeCharacter"), "EscapeCharacter")(TParseTree("", false,[], s));
3475         }
3476     }
3477     static string EscapeCharacter(GetName g)
3478     {
3479         return "ES6.EscapeCharacter";
3480     }
3481 
3482     static TParseTree HexEscapeSequence(TParseTree p)
3483     {
3484         if(__ctfe)
3485         {
3486             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("x"), HexDigit, HexDigit), "ES6.HexEscapeSequence")(p);
3487         }
3488         else
3489         {
3490             if(auto m = tuple(`HexEscapeSequence`,p.end) in memo)
3491                 return *m;
3492             else
3493             {
3494                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("x"), HexDigit, HexDigit), "ES6.HexEscapeSequence"), "HexEscapeSequence")(p);
3495                 memo[tuple(`HexEscapeSequence`,p.end)] = result;
3496                 return result;
3497             }
3498         }
3499     }
3500 
3501     static TParseTree HexEscapeSequence(string s)
3502     {
3503         if(__ctfe)
3504         {
3505             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("x"), HexDigit, HexDigit), "ES6.HexEscapeSequence")(TParseTree("", false,[], s));
3506         }
3507         else
3508         {
3509             memo = null;
3510             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("x"), HexDigit, HexDigit), "ES6.HexEscapeSequence"), "HexEscapeSequence")(TParseTree("", false,[], s));
3511         }
3512     }
3513     static string HexEscapeSequence(GetName g)
3514     {
3515         return "ES6.HexEscapeSequence";
3516     }
3517 
3518     static TParseTree UnicodeEscapeSequence(TParseTree p)
3519     {
3520         if(__ctfe)
3521         {
3522             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("u"), Hex4Digits), pegged.peg.and!(pegged.peg.literal!("u{"), HexDigits, pegged.peg.literal!("}"))), "ES6.UnicodeEscapeSequence")(p);
3523         }
3524         else
3525         {
3526             if(auto m = tuple(`UnicodeEscapeSequence`,p.end) in memo)
3527                 return *m;
3528             else
3529             {
3530                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("u"), Hex4Digits), pegged.peg.and!(pegged.peg.literal!("u{"), HexDigits, pegged.peg.literal!("}"))), "ES6.UnicodeEscapeSequence"), "UnicodeEscapeSequence")(p);
3531                 memo[tuple(`UnicodeEscapeSequence`,p.end)] = result;
3532                 return result;
3533             }
3534         }
3535     }
3536 
3537     static TParseTree UnicodeEscapeSequence(string s)
3538     {
3539         if(__ctfe)
3540         {
3541             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("u"), Hex4Digits), pegged.peg.and!(pegged.peg.literal!("u{"), HexDigits, pegged.peg.literal!("}"))), "ES6.UnicodeEscapeSequence")(TParseTree("", false,[], s));
3542         }
3543         else
3544         {
3545             memo = null;
3546             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("u"), Hex4Digits), pegged.peg.and!(pegged.peg.literal!("u{"), HexDigits, pegged.peg.literal!("}"))), "ES6.UnicodeEscapeSequence"), "UnicodeEscapeSequence")(TParseTree("", false,[], s));
3547         }
3548     }
3549     static string UnicodeEscapeSequence(GetName g)
3550     {
3551         return "ES6.UnicodeEscapeSequence";
3552     }
3553 
3554     static TParseTree Hex4Digits(TParseTree p)
3555     {
3556         if(__ctfe)
3557         {
3558             return         pegged.peg.defined!(pegged.peg.and!(HexDigit, HexDigit, HexDigit, HexDigit), "ES6.Hex4Digits")(p);
3559         }
3560         else
3561         {
3562             if(auto m = tuple(`Hex4Digits`,p.end) in memo)
3563                 return *m;
3564             else
3565             {
3566                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(HexDigit, HexDigit, HexDigit, HexDigit), "ES6.Hex4Digits"), "Hex4Digits")(p);
3567                 memo[tuple(`Hex4Digits`,p.end)] = result;
3568                 return result;
3569             }
3570         }
3571     }
3572 
3573     static TParseTree Hex4Digits(string s)
3574     {
3575         if(__ctfe)
3576         {
3577             return         pegged.peg.defined!(pegged.peg.and!(HexDigit, HexDigit, HexDigit, HexDigit), "ES6.Hex4Digits")(TParseTree("", false,[], s));
3578         }
3579         else
3580         {
3581             memo = null;
3582             return hooked!(pegged.peg.defined!(pegged.peg.and!(HexDigit, HexDigit, HexDigit, HexDigit), "ES6.Hex4Digits"), "Hex4Digits")(TParseTree("", false,[], s));
3583         }
3584     }
3585     static string Hex4Digits(GetName g)
3586     {
3587         return "ES6.Hex4Digits";
3588     }
3589 
3590     static TParseTree RegularExpressionLiteral(TParseTree p)
3591     {
3592         if(__ctfe)
3593         {
3594             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), RegularExpressionBody, pegged.peg.literal!("/"), RegularExpressionFlags), "ES6.RegularExpressionLiteral")(p);
3595         }
3596         else
3597         {
3598             if(auto m = tuple(`RegularExpressionLiteral`,p.end) in memo)
3599                 return *m;
3600             else
3601             {
3602                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), RegularExpressionBody, pegged.peg.literal!("/"), RegularExpressionFlags), "ES6.RegularExpressionLiteral"), "RegularExpressionLiteral")(p);
3603                 memo[tuple(`RegularExpressionLiteral`,p.end)] = result;
3604                 return result;
3605             }
3606         }
3607     }
3608 
3609     static TParseTree RegularExpressionLiteral(string s)
3610     {
3611         if(__ctfe)
3612         {
3613             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), RegularExpressionBody, pegged.peg.literal!("/"), RegularExpressionFlags), "ES6.RegularExpressionLiteral")(TParseTree("", false,[], s));
3614         }
3615         else
3616         {
3617             memo = null;
3618             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), RegularExpressionBody, pegged.peg.literal!("/"), RegularExpressionFlags), "ES6.RegularExpressionLiteral"), "RegularExpressionLiteral")(TParseTree("", false,[], s));
3619         }
3620     }
3621     static string RegularExpressionLiteral(GetName g)
3622     {
3623         return "ES6.RegularExpressionLiteral";
3624     }
3625 
3626     static TParseTree RegularExpressionBody(TParseTree p)
3627     {
3628         if(__ctfe)
3629         {
3630             return         pegged.peg.defined!(pegged.peg.and!(RegularExpressionFirstChar, RegularExpressionChars), "ES6.RegularExpressionBody")(p);
3631         }
3632         else
3633         {
3634             if(auto m = tuple(`RegularExpressionBody`,p.end) in memo)
3635                 return *m;
3636             else
3637             {
3638                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(RegularExpressionFirstChar, RegularExpressionChars), "ES6.RegularExpressionBody"), "RegularExpressionBody")(p);
3639                 memo[tuple(`RegularExpressionBody`,p.end)] = result;
3640                 return result;
3641             }
3642         }
3643     }
3644 
3645     static TParseTree RegularExpressionBody(string s)
3646     {
3647         if(__ctfe)
3648         {
3649             return         pegged.peg.defined!(pegged.peg.and!(RegularExpressionFirstChar, RegularExpressionChars), "ES6.RegularExpressionBody")(TParseTree("", false,[], s));
3650         }
3651         else
3652         {
3653             memo = null;
3654             return hooked!(pegged.peg.defined!(pegged.peg.and!(RegularExpressionFirstChar, RegularExpressionChars), "ES6.RegularExpressionBody"), "RegularExpressionBody")(TParseTree("", false,[], s));
3655         }
3656     }
3657     static string RegularExpressionBody(GetName g)
3658     {
3659         return "ES6.RegularExpressionBody";
3660     }
3661 
3662     static TParseTree RegularExpressionChars(TParseTree p)
3663     {
3664         if(__ctfe)
3665         {
3666             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionChar), "ES6.RegularExpressionChars")(p);
3667         }
3668         else
3669         {
3670             if(auto m = tuple(`RegularExpressionChars`,p.end) in memo)
3671                 return *m;
3672             else
3673             {
3674                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionChar), "ES6.RegularExpressionChars"), "RegularExpressionChars")(p);
3675                 memo[tuple(`RegularExpressionChars`,p.end)] = result;
3676                 return result;
3677             }
3678         }
3679     }
3680 
3681     static TParseTree RegularExpressionChars(string s)
3682     {
3683         if(__ctfe)
3684         {
3685             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionChar), "ES6.RegularExpressionChars")(TParseTree("", false,[], s));
3686         }
3687         else
3688         {
3689             memo = null;
3690             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionChar), "ES6.RegularExpressionChars"), "RegularExpressionChars")(TParseTree("", false,[], s));
3691         }
3692     }
3693     static string RegularExpressionChars(GetName g)
3694     {
3695         return "ES6.RegularExpressionChars";
3696     }
3697 
3698     static TParseTree RegularExpressionFirstChar(TParseTree p)
3699     {
3700         if(__ctfe)
3701         {
3702             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("*", "\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionFirstChar")(p);
3703         }
3704         else
3705         {
3706             if(auto m = tuple(`RegularExpressionFirstChar`,p.end) in memo)
3707                 return *m;
3708             else
3709             {
3710                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("*", "\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionFirstChar"), "RegularExpressionFirstChar")(p);
3711                 memo[tuple(`RegularExpressionFirstChar`,p.end)] = result;
3712                 return result;
3713             }
3714         }
3715     }
3716 
3717     static TParseTree RegularExpressionFirstChar(string s)
3718     {
3719         if(__ctfe)
3720         {
3721             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("*", "\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionFirstChar")(TParseTree("", false,[], s));
3722         }
3723         else
3724         {
3725             memo = null;
3726             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("*", "\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionFirstChar"), "RegularExpressionFirstChar")(TParseTree("", false,[], s));
3727         }
3728     }
3729     static string RegularExpressionFirstChar(GetName g)
3730     {
3731         return "ES6.RegularExpressionFirstChar";
3732     }
3733 
3734     static TParseTree RegularExpressionChar(TParseTree p)
3735     {
3736         if(__ctfe)
3737         {
3738             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionChar")(p);
3739         }
3740         else
3741         {
3742             if(auto m = tuple(`RegularExpressionChar`,p.end) in memo)
3743                 return *m;
3744             else
3745             {
3746                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionChar"), "RegularExpressionChar")(p);
3747                 memo[tuple(`RegularExpressionChar`,p.end)] = result;
3748                 return result;
3749             }
3750         }
3751     }
3752 
3753     static TParseTree RegularExpressionChar(string s)
3754     {
3755         if(__ctfe)
3756         {
3757             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionChar")(TParseTree("", false,[], s));
3758         }
3759         else
3760         {
3761             memo = null;
3762             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("\\", "/", "[")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence, RegularExpressionClass), "ES6.RegularExpressionChar"), "RegularExpressionChar")(TParseTree("", false,[], s));
3763         }
3764     }
3765     static string RegularExpressionChar(GetName g)
3766     {
3767         return "ES6.RegularExpressionChar";
3768     }
3769 
3770     static TParseTree RegularExpressionBackslashSequence(TParseTree p)
3771     {
3772         if(__ctfe)
3773         {
3774             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), RegularExpressionNonTerminator), "ES6.RegularExpressionBackslashSequence")(p);
3775         }
3776         else
3777         {
3778             if(auto m = tuple(`RegularExpressionBackslashSequence`,p.end) in memo)
3779                 return *m;
3780             else
3781             {
3782                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), RegularExpressionNonTerminator), "ES6.RegularExpressionBackslashSequence"), "RegularExpressionBackslashSequence")(p);
3783                 memo[tuple(`RegularExpressionBackslashSequence`,p.end)] = result;
3784                 return result;
3785             }
3786         }
3787     }
3788 
3789     static TParseTree RegularExpressionBackslashSequence(string s)
3790     {
3791         if(__ctfe)
3792         {
3793             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), RegularExpressionNonTerminator), "ES6.RegularExpressionBackslashSequence")(TParseTree("", false,[], s));
3794         }
3795         else
3796         {
3797             memo = null;
3798             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("\\"), RegularExpressionNonTerminator), "ES6.RegularExpressionBackslashSequence"), "RegularExpressionBackslashSequence")(TParseTree("", false,[], s));
3799         }
3800     }
3801     static string RegularExpressionBackslashSequence(GetName g)
3802     {
3803         return "ES6.RegularExpressionBackslashSequence";
3804     }
3805 
3806     static TParseTree RegularExpressionNonTerminator(TParseTree p)
3807     {
3808         if(__ctfe)
3809         {
3810             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.RegularExpressionNonTerminator")(p);
3811         }
3812         else
3813         {
3814             if(auto m = tuple(`RegularExpressionNonTerminator`,p.end) in memo)
3815                 return *m;
3816             else
3817             {
3818                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.RegularExpressionNonTerminator"), "RegularExpressionNonTerminator")(p);
3819                 memo[tuple(`RegularExpressionNonTerminator`,p.end)] = result;
3820                 return result;
3821             }
3822         }
3823     }
3824 
3825     static TParseTree RegularExpressionNonTerminator(string s)
3826     {
3827         if(__ctfe)
3828         {
3829             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.RegularExpressionNonTerminator")(TParseTree("", false,[], s));
3830         }
3831         else
3832         {
3833             memo = null;
3834             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(LineTerminator), SourceCharacter), "ES6.RegularExpressionNonTerminator"), "RegularExpressionNonTerminator")(TParseTree("", false,[], s));
3835         }
3836     }
3837     static string RegularExpressionNonTerminator(GetName g)
3838     {
3839         return "ES6.RegularExpressionNonTerminator";
3840     }
3841 
3842     static TParseTree RegularExpressionClass(TParseTree p)
3843     {
3844         if(__ctfe)
3845         {
3846             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), RegularExpressionClassChars, pegged.peg.discard!(pegged.peg.literal!("]"))), "ES6.RegularExpressionClass")(p);
3847         }
3848         else
3849         {
3850             if(auto m = tuple(`RegularExpressionClass`,p.end) in memo)
3851                 return *m;
3852             else
3853             {
3854                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), RegularExpressionClassChars, pegged.peg.discard!(pegged.peg.literal!("]"))), "ES6.RegularExpressionClass"), "RegularExpressionClass")(p);
3855                 memo[tuple(`RegularExpressionClass`,p.end)] = result;
3856                 return result;
3857             }
3858         }
3859     }
3860 
3861     static TParseTree RegularExpressionClass(string s)
3862     {
3863         if(__ctfe)
3864         {
3865             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), RegularExpressionClassChars, pegged.peg.discard!(pegged.peg.literal!("]"))), "ES6.RegularExpressionClass")(TParseTree("", false,[], s));
3866         }
3867         else
3868         {
3869             memo = null;
3870             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), RegularExpressionClassChars, pegged.peg.discard!(pegged.peg.literal!("]"))), "ES6.RegularExpressionClass"), "RegularExpressionClass")(TParseTree("", false,[], s));
3871         }
3872     }
3873     static string RegularExpressionClass(GetName g)
3874     {
3875         return "ES6.RegularExpressionClass";
3876     }
3877 
3878     static TParseTree RegularExpressionClassChars(TParseTree p)
3879     {
3880         if(__ctfe)
3881         {
3882             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionClassChar), "ES6.RegularExpressionClassChars")(p);
3883         }
3884         else
3885         {
3886             if(auto m = tuple(`RegularExpressionClassChars`,p.end) in memo)
3887                 return *m;
3888             else
3889             {
3890                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionClassChar), "ES6.RegularExpressionClassChars"), "RegularExpressionClassChars")(p);
3891                 memo[tuple(`RegularExpressionClassChars`,p.end)] = result;
3892                 return result;
3893             }
3894         }
3895     }
3896 
3897     static TParseTree RegularExpressionClassChars(string s)
3898     {
3899         if(__ctfe)
3900         {
3901             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionClassChar), "ES6.RegularExpressionClassChars")(TParseTree("", false,[], s));
3902         }
3903         else
3904         {
3905             memo = null;
3906             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(RegularExpressionClassChar), "ES6.RegularExpressionClassChars"), "RegularExpressionClassChars")(TParseTree("", false,[], s));
3907         }
3908     }
3909     static string RegularExpressionClassChars(GetName g)
3910     {
3911         return "ES6.RegularExpressionClassChars";
3912     }
3913 
3914     static TParseTree RegularExpressionClassChar(TParseTree p)
3915     {
3916         if(__ctfe)
3917         {
3918             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("]", "\\")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence), "ES6.RegularExpressionClassChar")(p);
3919         }
3920         else
3921         {
3922             if(auto m = tuple(`RegularExpressionClassChar`,p.end) in memo)
3923                 return *m;
3924             else
3925             {
3926                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("]", "\\")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence), "ES6.RegularExpressionClassChar"), "RegularExpressionClassChar")(p);
3927                 memo[tuple(`RegularExpressionClassChar`,p.end)] = result;
3928                 return result;
3929             }
3930         }
3931     }
3932 
3933     static TParseTree RegularExpressionClassChar(string s)
3934     {
3935         if(__ctfe)
3936         {
3937             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("]", "\\")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence), "ES6.RegularExpressionClassChar")(TParseTree("", false,[], s));
3938         }
3939         else
3940         {
3941             memo = null;
3942             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("]", "\\")), RegularExpressionNonTerminator), RegularExpressionBackslashSequence), "ES6.RegularExpressionClassChar"), "RegularExpressionClassChar")(TParseTree("", false,[], s));
3943         }
3944     }
3945     static string RegularExpressionClassChar(GetName g)
3946     {
3947         return "ES6.RegularExpressionClassChar";
3948     }
3949 
3950     static TParseTree RegularExpressionFlags(TParseTree p)
3951     {
3952         if(__ctfe)
3953         {
3954             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(IdentifierPart), "ES6.RegularExpressionFlags")(p);
3955         }
3956         else
3957         {
3958             if(auto m = tuple(`RegularExpressionFlags`,p.end) in memo)
3959                 return *m;
3960             else
3961             {
3962                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(IdentifierPart), "ES6.RegularExpressionFlags"), "RegularExpressionFlags")(p);
3963                 memo[tuple(`RegularExpressionFlags`,p.end)] = result;
3964                 return result;
3965             }
3966         }
3967     }
3968 
3969     static TParseTree RegularExpressionFlags(string s)
3970     {
3971         if(__ctfe)
3972         {
3973             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(IdentifierPart), "ES6.RegularExpressionFlags")(TParseTree("", false,[], s));
3974         }
3975         else
3976         {
3977             memo = null;
3978             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(IdentifierPart), "ES6.RegularExpressionFlags"), "RegularExpressionFlags")(TParseTree("", false,[], s));
3979         }
3980     }
3981     static string RegularExpressionFlags(GetName g)
3982     {
3983         return "ES6.RegularExpressionFlags";
3984     }
3985 
3986     static TParseTree Template(TParseTree p)
3987     {
3988         if(__ctfe)
3989         {
3990             return         pegged.peg.defined!(pegged.peg.or!(NoSubstitutionTemplate, TemplateHead), "ES6.Template")(p);
3991         }
3992         else
3993         {
3994             if(auto m = tuple(`Template`,p.end) in memo)
3995                 return *m;
3996             else
3997             {
3998                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(NoSubstitutionTemplate, TemplateHead), "ES6.Template"), "Template")(p);
3999                 memo[tuple(`Template`,p.end)] = result;
4000                 return result;
4001             }
4002         }
4003     }
4004 
4005     static TParseTree Template(string s)
4006     {
4007         if(__ctfe)
4008         {
4009             return         pegged.peg.defined!(pegged.peg.or!(NoSubstitutionTemplate, TemplateHead), "ES6.Template")(TParseTree("", false,[], s));
4010         }
4011         else
4012         {
4013             memo = null;
4014             return hooked!(pegged.peg.defined!(pegged.peg.or!(NoSubstitutionTemplate, TemplateHead), "ES6.Template"), "Template")(TParseTree("", false,[], s));
4015         }
4016     }
4017     static string Template(GetName g)
4018     {
4019         return "ES6.Template";
4020     }
4021 
4022     static TParseTree NoSubstitutionTemplate(TParseTree p)
4023     {
4024         if(__ctfe)
4025         {
4026             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.NoSubstitutionTemplate")(p);
4027         }
4028         else
4029         {
4030             if(auto m = tuple(`NoSubstitutionTemplate`,p.end) in memo)
4031                 return *m;
4032             else
4033             {
4034                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.NoSubstitutionTemplate"), "NoSubstitutionTemplate")(p);
4035                 memo[tuple(`NoSubstitutionTemplate`,p.end)] = result;
4036                 return result;
4037             }
4038         }
4039     }
4040 
4041     static TParseTree NoSubstitutionTemplate(string s)
4042     {
4043         if(__ctfe)
4044         {
4045             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.NoSubstitutionTemplate")(TParseTree("", false,[], s));
4046         }
4047         else
4048         {
4049             memo = null;
4050             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.NoSubstitutionTemplate"), "NoSubstitutionTemplate")(TParseTree("", false,[], s));
4051         }
4052     }
4053     static string NoSubstitutionTemplate(GetName g)
4054     {
4055         return "ES6.NoSubstitutionTemplate";
4056     }
4057 
4058     static TParseTree TemplateHead(TParseTree p)
4059     {
4060         if(__ctfe)
4061         {
4062             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateHead")(p);
4063         }
4064         else
4065         {
4066             if(auto m = tuple(`TemplateHead`,p.end) in memo)
4067                 return *m;
4068             else
4069             {
4070                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateHead"), "TemplateHead")(p);
4071                 memo[tuple(`TemplateHead`,p.end)] = result;
4072                 return result;
4073             }
4074         }
4075     }
4076 
4077     static TParseTree TemplateHead(string s)
4078     {
4079         if(__ctfe)
4080         {
4081             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateHead")(TParseTree("", false,[], s));
4082         }
4083         else
4084         {
4085             memo = null;
4086             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("\u0060")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateHead"), "TemplateHead")(TParseTree("", false,[], s));
4087         }
4088     }
4089     static string TemplateHead(GetName g)
4090     {
4091         return "ES6.TemplateHead";
4092     }
4093 
4094     static TParseTree TemplateSubstitutionTail(TParseTree p)
4095     {
4096         if(__ctfe)
4097         {
4098             return         pegged.peg.defined!(pegged.peg.or!(TemplateMiddle, TemplateTail), "ES6.TemplateSubstitutionTail")(p);
4099         }
4100         else
4101         {
4102             if(auto m = tuple(`TemplateSubstitutionTail`,p.end) in memo)
4103                 return *m;
4104             else
4105             {
4106                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(TemplateMiddle, TemplateTail), "ES6.TemplateSubstitutionTail"), "TemplateSubstitutionTail")(p);
4107                 memo[tuple(`TemplateSubstitutionTail`,p.end)] = result;
4108                 return result;
4109             }
4110         }
4111     }
4112 
4113     static TParseTree TemplateSubstitutionTail(string s)
4114     {
4115         if(__ctfe)
4116         {
4117             return         pegged.peg.defined!(pegged.peg.or!(TemplateMiddle, TemplateTail), "ES6.TemplateSubstitutionTail")(TParseTree("", false,[], s));
4118         }
4119         else
4120         {
4121             memo = null;
4122             return hooked!(pegged.peg.defined!(pegged.peg.or!(TemplateMiddle, TemplateTail), "ES6.TemplateSubstitutionTail"), "TemplateSubstitutionTail")(TParseTree("", false,[], s));
4123         }
4124     }
4125     static string TemplateSubstitutionTail(GetName g)
4126     {
4127         return "ES6.TemplateSubstitutionTail";
4128     }
4129 
4130     static TParseTree TemplateMiddle(TParseTree p)
4131     {
4132         if(__ctfe)
4133         {
4134             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateMiddle")(p);
4135         }
4136         else
4137         {
4138             if(auto m = tuple(`TemplateMiddle`,p.end) in memo)
4139                 return *m;
4140             else
4141             {
4142                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateMiddle"), "TemplateMiddle")(p);
4143                 memo[tuple(`TemplateMiddle`,p.end)] = result;
4144                 return result;
4145             }
4146         }
4147     }
4148 
4149     static TParseTree TemplateMiddle(string s)
4150     {
4151         if(__ctfe)
4152         {
4153             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateMiddle")(TParseTree("", false,[], s));
4154         }
4155         else
4156         {
4157             memo = null;
4158             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("${"))), "ES6.TemplateMiddle"), "TemplateMiddle")(TParseTree("", false,[], s));
4159         }
4160     }
4161     static string TemplateMiddle(GetName g)
4162     {
4163         return "ES6.TemplateMiddle";
4164     }
4165 
4166     static TParseTree TemplateTail(TParseTree p)
4167     {
4168         if(__ctfe)
4169         {
4170             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.TemplateTail")(p);
4171         }
4172         else
4173         {
4174             if(auto m = tuple(`TemplateTail`,p.end) in memo)
4175                 return *m;
4176             else
4177             {
4178                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.TemplateTail"), "TemplateTail")(p);
4179                 memo[tuple(`TemplateTail`,p.end)] = result;
4180                 return result;
4181             }
4182         }
4183     }
4184 
4185     static TParseTree TemplateTail(string s)
4186     {
4187         if(__ctfe)
4188         {
4189             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.TemplateTail")(TParseTree("", false,[], s));
4190         }
4191         else
4192         {
4193             memo = null;
4194             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("}")), pegged.peg.option!(TemplateCharacters), pegged.peg.discard!(pegged.peg.literal!("\u0060"))), "ES6.TemplateTail"), "TemplateTail")(TParseTree("", false,[], s));
4195         }
4196     }
4197     static string TemplateTail(GetName g)
4198     {
4199         return "ES6.TemplateTail";
4200     }
4201 
4202     static TParseTree TemplateCharacters(TParseTree p)
4203     {
4204         if(__ctfe)
4205         {
4206             return         pegged.peg.defined!(pegged.peg.oneOrMore!(TemplateCharacter), "ES6.TemplateCharacters")(p);
4207         }
4208         else
4209         {
4210             if(auto m = tuple(`TemplateCharacters`,p.end) in memo)
4211                 return *m;
4212             else
4213             {
4214                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(TemplateCharacter), "ES6.TemplateCharacters"), "TemplateCharacters")(p);
4215                 memo[tuple(`TemplateCharacters`,p.end)] = result;
4216                 return result;
4217             }
4218         }
4219     }
4220 
4221     static TParseTree TemplateCharacters(string s)
4222     {
4223         if(__ctfe)
4224         {
4225             return         pegged.peg.defined!(pegged.peg.oneOrMore!(TemplateCharacter), "ES6.TemplateCharacters")(TParseTree("", false,[], s));
4226         }
4227         else
4228         {
4229             memo = null;
4230             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(TemplateCharacter), "ES6.TemplateCharacters"), "TemplateCharacters")(TParseTree("", false,[], s));
4231         }
4232     }
4233     static string TemplateCharacters(GetName g)
4234     {
4235         return "ES6.TemplateCharacters";
4236     }
4237 
4238     static TParseTree TemplateCharacter(TParseTree p)
4239     {
4240         if(__ctfe)
4241         {
4242             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("$"), pegged.peg.negLookahead!(pegged.peg.literal!("{"))), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation, LineTerminatorSequence, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\u0060"), pegged.peg.literal!("\\"), pegged.peg.literal!("$"), LineTerminator)), SourceCharacter)), "ES6.TemplateCharacter")(p);
4243         }
4244         else
4245         {
4246             if(auto m = tuple(`TemplateCharacter`,p.end) in memo)
4247                 return *m;
4248             else
4249             {
4250                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("$"), pegged.peg.negLookahead!(pegged.peg.literal!("{"))), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation, LineTerminatorSequence, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\u0060"), pegged.peg.literal!("\\"), pegged.peg.literal!("$"), LineTerminator)), SourceCharacter)), "ES6.TemplateCharacter"), "TemplateCharacter")(p);
4251                 memo[tuple(`TemplateCharacter`,p.end)] = result;
4252                 return result;
4253             }
4254         }
4255     }
4256 
4257     static TParseTree TemplateCharacter(string s)
4258     {
4259         if(__ctfe)
4260         {
4261             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("$"), pegged.peg.negLookahead!(pegged.peg.literal!("{"))), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation, LineTerminatorSequence, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\u0060"), pegged.peg.literal!("\\"), pegged.peg.literal!("$"), LineTerminator)), SourceCharacter)), "ES6.TemplateCharacter")(TParseTree("", false,[], s));
4262         }
4263         else
4264         {
4265             memo = null;
4266             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("$"), pegged.peg.negLookahead!(pegged.peg.literal!("{"))), pegged.peg.and!(pegged.peg.literal!("\\"), EscapeSequence), LineContinuation, LineTerminatorSequence, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(pegged.peg.literal!("\u0060"), pegged.peg.literal!("\\"), pegged.peg.literal!("$"), LineTerminator)), SourceCharacter)), "ES6.TemplateCharacter"), "TemplateCharacter")(TParseTree("", false,[], s));
4267         }
4268     }
4269     static string TemplateCharacter(GetName g)
4270     {
4271         return "ES6.TemplateCharacter";
4272     }
4273 
4274     static TParseTree IdentifierReference(TParseTree p)
4275     {
4276         if(__ctfe)
4277         {
4278             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.IdentifierReference")(p);
4279         }
4280         else
4281         {
4282             if(auto m = tuple(`IdentifierReference`,p.end) in memo)
4283                 return *m;
4284             else
4285             {
4286                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.IdentifierReference"), "IdentifierReference")(p);
4287                 memo[tuple(`IdentifierReference`,p.end)] = result;
4288                 return result;
4289             }
4290         }
4291     }
4292 
4293     static TParseTree IdentifierReference(string s)
4294     {
4295         if(__ctfe)
4296         {
4297             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.IdentifierReference")(TParseTree("", false,[], s));
4298         }
4299         else
4300         {
4301             memo = null;
4302             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.IdentifierReference"), "IdentifierReference")(TParseTree("", false,[], s));
4303         }
4304     }
4305     static string IdentifierReference(GetName g)
4306     {
4307         return "ES6.IdentifierReference";
4308     }
4309 
4310     static TParseTree IdentifierReferenceYield(TParseTree p)
4311     {
4312         if(__ctfe)
4313         {
4314             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.IdentifierReferenceYield")(p);
4315         }
4316         else
4317         {
4318             if(auto m = tuple(`IdentifierReferenceYield`,p.end) in memo)
4319                 return *m;
4320             else
4321             {
4322                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.IdentifierReferenceYield"), "IdentifierReferenceYield")(p);
4323                 memo[tuple(`IdentifierReferenceYield`,p.end)] = result;
4324                 return result;
4325             }
4326         }
4327     }
4328 
4329     static TParseTree IdentifierReferenceYield(string s)
4330     {
4331         if(__ctfe)
4332         {
4333             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.IdentifierReferenceYield")(TParseTree("", false,[], s));
4334         }
4335         else
4336         {
4337             memo = null;
4338             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.IdentifierReferenceYield"), "IdentifierReferenceYield")(TParseTree("", false,[], s));
4339         }
4340     }
4341     static string IdentifierReferenceYield(GetName g)
4342     {
4343         return "ES6.IdentifierReferenceYield";
4344     }
4345 
4346     static TParseTree BindingIdentifier(TParseTree p)
4347     {
4348         if(__ctfe)
4349         {
4350             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.BindingIdentifier")(p);
4351         }
4352         else
4353         {
4354             if(auto m = tuple(`BindingIdentifier`,p.end) in memo)
4355                 return *m;
4356             else
4357             {
4358                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.BindingIdentifier"), "BindingIdentifier")(p);
4359                 memo[tuple(`BindingIdentifier`,p.end)] = result;
4360                 return result;
4361             }
4362         }
4363     }
4364 
4365     static TParseTree BindingIdentifier(string s)
4366     {
4367         if(__ctfe)
4368         {
4369             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.BindingIdentifier")(TParseTree("", false,[], s));
4370         }
4371         else
4372         {
4373             memo = null;
4374             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.BindingIdentifier"), "BindingIdentifier")(TParseTree("", false,[], s));
4375         }
4376     }
4377     static string BindingIdentifier(GetName g)
4378     {
4379         return "ES6.BindingIdentifier";
4380     }
4381 
4382     static TParseTree BindingIdentifierYield(TParseTree p)
4383     {
4384         if(__ctfe)
4385         {
4386             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.BindingIdentifierYield")(p);
4387         }
4388         else
4389         {
4390             if(auto m = tuple(`BindingIdentifierYield`,p.end) in memo)
4391                 return *m;
4392             else
4393             {
4394                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.BindingIdentifierYield"), "BindingIdentifierYield")(p);
4395                 memo[tuple(`BindingIdentifierYield`,p.end)] = result;
4396                 return result;
4397             }
4398         }
4399     }
4400 
4401     static TParseTree BindingIdentifierYield(string s)
4402     {
4403         if(__ctfe)
4404         {
4405             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.BindingIdentifierYield")(TParseTree("", false,[], s));
4406         }
4407         else
4408         {
4409             memo = null;
4410             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.BindingIdentifierYield"), "BindingIdentifierYield")(TParseTree("", false,[], s));
4411         }
4412     }
4413     static string BindingIdentifierYield(GetName g)
4414     {
4415         return "ES6.BindingIdentifierYield";
4416     }
4417 
4418     static TParseTree LabelIdentifier(TParseTree p)
4419     {
4420         if(__ctfe)
4421         {
4422             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.LabelIdentifier")(p);
4423         }
4424         else
4425         {
4426             if(auto m = tuple(`LabelIdentifier`,p.end) in memo)
4427                 return *m;
4428             else
4429             {
4430                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.LabelIdentifier"), "LabelIdentifier")(p);
4431                 memo[tuple(`LabelIdentifier`,p.end)] = result;
4432                 return result;
4433             }
4434         }
4435     }
4436 
4437     static TParseTree LabelIdentifier(string s)
4438     {
4439         if(__ctfe)
4440         {
4441             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.LabelIdentifier")(TParseTree("", false,[], s));
4442         }
4443         else
4444         {
4445             memo = null;
4446             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("yield"), Spacing)), "ES6.LabelIdentifier"), "LabelIdentifier")(TParseTree("", false,[], s));
4447         }
4448     }
4449     static string LabelIdentifier(GetName g)
4450     {
4451         return "ES6.LabelIdentifier";
4452     }
4453 
4454     static TParseTree LabelIdentifierYield(TParseTree p)
4455     {
4456         if(__ctfe)
4457         {
4458             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.LabelIdentifierYield")(p);
4459         }
4460         else
4461         {
4462             if(auto m = tuple(`LabelIdentifierYield`,p.end) in memo)
4463                 return *m;
4464             else
4465             {
4466                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.LabelIdentifierYield"), "LabelIdentifierYield")(p);
4467                 memo[tuple(`LabelIdentifierYield`,p.end)] = result;
4468                 return result;
4469             }
4470         }
4471     }
4472 
4473     static TParseTree LabelIdentifierYield(string s)
4474     {
4475         if(__ctfe)
4476         {
4477             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.LabelIdentifierYield")(TParseTree("", false,[], s));
4478         }
4479         else
4480         {
4481             memo = null;
4482             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Identifier, Spacing), "ES6.LabelIdentifierYield"), "LabelIdentifierYield")(TParseTree("", false,[], s));
4483         }
4484     }
4485     static string LabelIdentifierYield(GetName g)
4486     {
4487         return "ES6.LabelIdentifierYield";
4488     }
4489 
4490     static TParseTree Identifier(TParseTree p)
4491     {
4492         if(__ctfe)
4493         {
4494             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(ReservedWord, pegged.peg.or!(WhiteSpace, LineTerminatorSequence, Comment, pegged.peg.literal!(";"), pegged.peg.literal!(":")))), IdentifierName), "ES6.Identifier")(p);
4495         }
4496         else
4497         {
4498             if(auto m = tuple(`Identifier`,p.end) in memo)
4499                 return *m;
4500             else
4501             {
4502                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(ReservedWord, pegged.peg.or!(WhiteSpace, LineTerminatorSequence, Comment, pegged.peg.literal!(";"), pegged.peg.literal!(":")))), IdentifierName), "ES6.Identifier"), "Identifier")(p);
4503                 memo[tuple(`Identifier`,p.end)] = result;
4504                 return result;
4505             }
4506         }
4507     }
4508 
4509     static TParseTree Identifier(string s)
4510     {
4511         if(__ctfe)
4512         {
4513             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(ReservedWord, pegged.peg.or!(WhiteSpace, LineTerminatorSequence, Comment, pegged.peg.literal!(";"), pegged.peg.literal!(":")))), IdentifierName), "ES6.Identifier")(TParseTree("", false,[], s));
4514         }
4515         else
4516         {
4517             memo = null;
4518             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(ReservedWord, pegged.peg.or!(WhiteSpace, LineTerminatorSequence, Comment, pegged.peg.literal!(";"), pegged.peg.literal!(":")))), IdentifierName), "ES6.Identifier"), "Identifier")(TParseTree("", false,[], s));
4519         }
4520     }
4521     static string Identifier(GetName g)
4522     {
4523         return "ES6.Identifier";
4524     }
4525 
4526     static TParseTree ThisKeyword(TParseTree p)
4527     {
4528         if(__ctfe)
4529         {
4530             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("this"), pegged.peg.negLookahead!(IdentifierPart)), "ES6.ThisKeyword")(p);
4531         }
4532         else
4533         {
4534             if(auto m = tuple(`ThisKeyword`,p.end) in memo)
4535                 return *m;
4536             else
4537             {
4538                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("this"), pegged.peg.negLookahead!(IdentifierPart)), "ES6.ThisKeyword"), "ThisKeyword")(p);
4539                 memo[tuple(`ThisKeyword`,p.end)] = result;
4540                 return result;
4541             }
4542         }
4543     }
4544 
4545     static TParseTree ThisKeyword(string s)
4546     {
4547         if(__ctfe)
4548         {
4549             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("this"), pegged.peg.negLookahead!(IdentifierPart)), "ES6.ThisKeyword")(TParseTree("", false,[], s));
4550         }
4551         else
4552         {
4553             memo = null;
4554             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("this"), pegged.peg.negLookahead!(IdentifierPart)), "ES6.ThisKeyword"), "ThisKeyword")(TParseTree("", false,[], s));
4555         }
4556     }
4557     static string ThisKeyword(GetName g)
4558     {
4559         return "ES6.ThisKeyword";
4560     }
4561 
4562     static TParseTree PrimaryExpression(TParseTree p)
4563     {
4564         if(__ctfe)
4565         {
4566             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteral, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteral, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpression, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PrimaryExpression")(p);
4567         }
4568         else
4569         {
4570             if(auto m = tuple(`PrimaryExpression`,p.end) in memo)
4571                 return *m;
4572             else
4573             {
4574                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteral, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteral, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpression, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PrimaryExpression"), "PrimaryExpression")(p);
4575                 memo[tuple(`PrimaryExpression`,p.end)] = result;
4576                 return result;
4577             }
4578         }
4579     }
4580 
4581     static TParseTree PrimaryExpression(string s)
4582     {
4583         if(__ctfe)
4584         {
4585             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteral, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteral, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpression, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PrimaryExpression")(TParseTree("", false,[], s));
4586         }
4587         else
4588         {
4589             memo = null;
4590             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteral, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteral, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpression, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PrimaryExpression"), "PrimaryExpression")(TParseTree("", false,[], s));
4591         }
4592     }
4593     static string PrimaryExpression(GetName g)
4594     {
4595         return "ES6.PrimaryExpression";
4596     }
4597 
4598     static TParseTree PrimaryExpressionYield(TParseTree p)
4599     {
4600         if(__ctfe)
4601         {
4602             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PrimaryExpressionYield")(p);
4603         }
4604         else
4605         {
4606             if(auto m = tuple(`PrimaryExpressionYield`,p.end) in memo)
4607                 return *m;
4608             else
4609             {
4610                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PrimaryExpressionYield"), "PrimaryExpressionYield")(p);
4611                 memo[tuple(`PrimaryExpressionYield`,p.end)] = result;
4612                 return result;
4613             }
4614         }
4615     }
4616 
4617     static TParseTree PrimaryExpressionYield(string s)
4618     {
4619         if(__ctfe)
4620         {
4621             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PrimaryExpressionYield")(TParseTree("", false,[], s));
4622         }
4623         else
4624         {
4625             memo = null;
4626             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ThisKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Literal, Spacing), pegged.peg.wrapAround!(Spacing, ArrayLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ObjectLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, GeneratorExpression, Spacing), pegged.peg.wrapAround!(Spacing, ClassExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionExpression, Spacing), pegged.peg.wrapAround!(Spacing, RegularExpressionLiteral, Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PrimaryExpressionYield"), "PrimaryExpressionYield")(TParseTree("", false,[], s));
4627         }
4628     }
4629     static string PrimaryExpressionYield(GetName g)
4630     {
4631         return "ES6.PrimaryExpressionYield";
4632     }
4633 
4634     static TParseTree CoverParenthesizedExpressionAndArrowParameterList(TParseTree p)
4635     {
4636         if(__ctfe)
4637         {
4638             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterList")(p);
4639         }
4640         else
4641         {
4642             if(auto m = tuple(`CoverParenthesizedExpressionAndArrowParameterList`,p.end) in memo)
4643                 return *m;
4644             else
4645             {
4646                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterList"), "CoverParenthesizedExpressionAndArrowParameterList")(p);
4647                 memo[tuple(`CoverParenthesizedExpressionAndArrowParameterList`,p.end)] = result;
4648                 return result;
4649             }
4650         }
4651     }
4652 
4653     static TParseTree CoverParenthesizedExpressionAndArrowParameterList(string s)
4654     {
4655         if(__ctfe)
4656         {
4657             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterList")(TParseTree("", false,[], s));
4658         }
4659         else
4660         {
4661             memo = null;
4662             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterList"), "CoverParenthesizedExpressionAndArrowParameterList")(TParseTree("", false,[], s));
4663         }
4664     }
4665     static string CoverParenthesizedExpressionAndArrowParameterList(GetName g)
4666     {
4667         return "ES6.CoverParenthesizedExpressionAndArrowParameterList";
4668     }
4669 
4670     static TParseTree CoverParenthesizedExpressionAndArrowParameterListYield(TParseTree p)
4671     {
4672         if(__ctfe)
4673         {
4674             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterListYield")(p);
4675         }
4676         else
4677         {
4678             if(auto m = tuple(`CoverParenthesizedExpressionAndArrowParameterListYield`,p.end) in memo)
4679                 return *m;
4680             else
4681             {
4682                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterListYield"), "CoverParenthesizedExpressionAndArrowParameterListYield")(p);
4683                 memo[tuple(`CoverParenthesizedExpressionAndArrowParameterListYield`,p.end)] = result;
4684                 return result;
4685             }
4686         }
4687     }
4688 
4689     static TParseTree CoverParenthesizedExpressionAndArrowParameterListYield(string s)
4690     {
4691         if(__ctfe)
4692         {
4693             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterListYield")(TParseTree("", false,[], s));
4694         }
4695         else
4696         {
4697             memo = null;
4698             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing)), "ES6.CoverParenthesizedExpressionAndArrowParameterListYield"), "CoverParenthesizedExpressionAndArrowParameterListYield")(TParseTree("", false,[], s));
4699         }
4700     }
4701     static string CoverParenthesizedExpressionAndArrowParameterListYield(GetName g)
4702     {
4703         return "ES6.CoverParenthesizedExpressionAndArrowParameterListYield";
4704     }
4705 
4706     static TParseTree ParenthesizedExpression(TParseTree p)
4707     {
4708         if(__ctfe)
4709         {
4710             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), "ES6.ParenthesizedExpression")(p);
4711         }
4712         else
4713         {
4714             if(auto m = tuple(`ParenthesizedExpression`,p.end) in memo)
4715                 return *m;
4716             else
4717             {
4718                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), "ES6.ParenthesizedExpression"), "ParenthesizedExpression")(p);
4719                 memo[tuple(`ParenthesizedExpression`,p.end)] = result;
4720                 return result;
4721             }
4722         }
4723     }
4724 
4725     static TParseTree ParenthesizedExpression(string s)
4726     {
4727         if(__ctfe)
4728         {
4729             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), "ES6.ParenthesizedExpression")(TParseTree("", false,[], s));
4730         }
4731         else
4732         {
4733             memo = null;
4734             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), "ES6.ParenthesizedExpression"), "ParenthesizedExpression")(TParseTree("", false,[], s));
4735         }
4736     }
4737     static string ParenthesizedExpression(GetName g)
4738     {
4739         return "ES6.ParenthesizedExpression";
4740     }
4741 
4742     static TParseTree ParenthesizedExpressionYield(TParseTree p)
4743     {
4744         if(__ctfe)
4745         {
4746             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), "ES6.ParenthesizedExpressionYield")(p);
4747         }
4748         else
4749         {
4750             if(auto m = tuple(`ParenthesizedExpressionYield`,p.end) in memo)
4751                 return *m;
4752             else
4753             {
4754                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), "ES6.ParenthesizedExpressionYield"), "ParenthesizedExpressionYield")(p);
4755                 memo[tuple(`ParenthesizedExpressionYield`,p.end)] = result;
4756                 return result;
4757             }
4758         }
4759     }
4760 
4761     static TParseTree ParenthesizedExpressionYield(string s)
4762     {
4763         if(__ctfe)
4764         {
4765             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), "ES6.ParenthesizedExpressionYield")(TParseTree("", false,[], s));
4766         }
4767         else
4768         {
4769             memo = null;
4770             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), "ES6.ParenthesizedExpressionYield"), "ParenthesizedExpressionYield")(TParseTree("", false,[], s));
4771         }
4772     }
4773     static string ParenthesizedExpressionYield(GetName g)
4774     {
4775         return "ES6.ParenthesizedExpressionYield";
4776     }
4777 
4778     static TParseTree Literal(TParseTree p)
4779     {
4780         if(__ctfe)
4781         {
4782             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.or!(NullLiteral, BooleanLiteral, NumericLiteral), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), StringLiteral), "ES6.Literal")(p);
4783         }
4784         else
4785         {
4786             if(auto m = tuple(`Literal`,p.end) in memo)
4787                 return *m;
4788             else
4789             {
4790                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.or!(NullLiteral, BooleanLiteral, NumericLiteral), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), StringLiteral), "ES6.Literal"), "Literal")(p);
4791                 memo[tuple(`Literal`,p.end)] = result;
4792                 return result;
4793             }
4794         }
4795     }
4796 
4797     static TParseTree Literal(string s)
4798     {
4799         if(__ctfe)
4800         {
4801             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.or!(NullLiteral, BooleanLiteral, NumericLiteral), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), StringLiteral), "ES6.Literal")(TParseTree("", false,[], s));
4802         }
4803         else
4804         {
4805             memo = null;
4806             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.or!(NullLiteral, BooleanLiteral, NumericLiteral), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), StringLiteral), "ES6.Literal"), "Literal")(TParseTree("", false,[], s));
4807         }
4808     }
4809     static string Literal(GetName g)
4810     {
4811         return "ES6.Literal";
4812     }
4813 
4814     static TParseTree ArrayLiteral(TParseTree p)
4815     {
4816         if(__ctfe)
4817         {
4818             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementList, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteral")(p);
4819         }
4820         else
4821         {
4822             if(auto m = tuple(`ArrayLiteral`,p.end) in memo)
4823                 return *m;
4824             else
4825             {
4826                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementList, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteral"), "ArrayLiteral")(p);
4827                 memo[tuple(`ArrayLiteral`,p.end)] = result;
4828                 return result;
4829             }
4830         }
4831     }
4832 
4833     static TParseTree ArrayLiteral(string s)
4834     {
4835         if(__ctfe)
4836         {
4837             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementList, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteral")(TParseTree("", false,[], s));
4838         }
4839         else
4840         {
4841             memo = null;
4842             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementList, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteral"), "ArrayLiteral")(TParseTree("", false,[], s));
4843         }
4844     }
4845     static string ArrayLiteral(GetName g)
4846     {
4847         return "ES6.ArrayLiteral";
4848     }
4849 
4850     static TParseTree ArrayLiteralYield(TParseTree p)
4851     {
4852         if(__ctfe)
4853         {
4854             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementListYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteralYield")(p);
4855         }
4856         else
4857         {
4858             if(auto m = tuple(`ArrayLiteralYield`,p.end) in memo)
4859                 return *m;
4860             else
4861             {
4862                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementListYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteralYield"), "ArrayLiteralYield")(p);
4863                 memo[tuple(`ArrayLiteralYield`,p.end)] = result;
4864                 return result;
4865             }
4866         }
4867     }
4868 
4869     static TParseTree ArrayLiteralYield(string s)
4870     {
4871         if(__ctfe)
4872         {
4873             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementListYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteralYield")(TParseTree("", false,[], s));
4874         }
4875         else
4876         {
4877             memo = null;
4878             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ElementListYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)))), Spacing), "ES6.ArrayLiteralYield"), "ArrayLiteralYield")(TParseTree("", false,[], s));
4879         }
4880     }
4881     static string ArrayLiteralYield(GetName g)
4882     {
4883         return "ES6.ArrayLiteralYield";
4884     }
4885 
4886     static TParseTree ElementList(TParseTree p)
4887     {
4888         if(__ctfe)
4889         {
4890             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing)), Spacing))), "ES6.ElementList")(p);
4891         }
4892         else
4893         {
4894             if(auto m = tuple(`ElementList`,p.end) in memo)
4895                 return *m;
4896             else
4897             {
4898                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing)), Spacing))), "ES6.ElementList"), "ElementList")(p);
4899                 memo[tuple(`ElementList`,p.end)] = result;
4900                 return result;
4901             }
4902         }
4903     }
4904 
4905     static TParseTree ElementList(string s)
4906     {
4907         if(__ctfe)
4908         {
4909             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing)), Spacing))), "ES6.ElementList")(TParseTree("", false,[], s));
4910         }
4911         else
4912         {
4913             memo = null;
4914             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing)), Spacing))), "ES6.ElementList"), "ElementList")(TParseTree("", false,[], s));
4915         }
4916     }
4917     static string ElementList(GetName g)
4918     {
4919         return "ES6.ElementList";
4920     }
4921 
4922     static TParseTree ElementListYield(TParseTree p)
4923     {
4924         if(__ctfe)
4925         {
4926             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing)), Spacing))), "ES6.ElementListYield")(p);
4927         }
4928         else
4929         {
4930             if(auto m = tuple(`ElementListYield`,p.end) in memo)
4931                 return *m;
4932             else
4933             {
4934                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing)), Spacing))), "ES6.ElementListYield"), "ElementListYield")(p);
4935                 memo[tuple(`ElementListYield`,p.end)] = result;
4936                 return result;
4937             }
4938         }
4939     }
4940 
4941     static TParseTree ElementListYield(string s)
4942     {
4943         if(__ctfe)
4944         {
4945             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing)), Spacing))), "ES6.ElementListYield")(TParseTree("", false,[], s));
4946         }
4947         else
4948         {
4949             memo = null;
4950             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, SpreadElementYield, Spacing)), Spacing)), Spacing))), "ES6.ElementListYield"), "ElementListYield")(TParseTree("", false,[], s));
4951         }
4952     }
4953     static string ElementListYield(GetName g)
4954     {
4955         return "ES6.ElementListYield";
4956     }
4957 
4958     static TParseTree Elision(TParseTree p)
4959     {
4960         if(__ctfe)
4961         {
4962             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), "ES6.Elision")(p);
4963         }
4964         else
4965         {
4966             if(auto m = tuple(`Elision`,p.end) in memo)
4967                 return *m;
4968             else
4969             {
4970                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), "ES6.Elision"), "Elision")(p);
4971                 memo[tuple(`Elision`,p.end)] = result;
4972                 return result;
4973             }
4974         }
4975     }
4976 
4977     static TParseTree Elision(string s)
4978     {
4979         if(__ctfe)
4980         {
4981             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), "ES6.Elision")(TParseTree("", false,[], s));
4982         }
4983         else
4984         {
4985             memo = null;
4986             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), "ES6.Elision"), "Elision")(TParseTree("", false,[], s));
4987         }
4988     }
4989     static string Elision(GetName g)
4990     {
4991         return "ES6.Elision";
4992     }
4993 
4994     static TParseTree SpreadElement(TParseTree p)
4995     {
4996         if(__ctfe)
4997         {
4998             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.SpreadElement")(p);
4999         }
5000         else
5001         {
5002             if(auto m = tuple(`SpreadElement`,p.end) in memo)
5003                 return *m;
5004             else
5005             {
5006                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.SpreadElement"), "SpreadElement")(p);
5007                 memo[tuple(`SpreadElement`,p.end)] = result;
5008                 return result;
5009             }
5010         }
5011     }
5012 
5013     static TParseTree SpreadElement(string s)
5014     {
5015         if(__ctfe)
5016         {
5017             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.SpreadElement")(TParseTree("", false,[], s));
5018         }
5019         else
5020         {
5021             memo = null;
5022             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.SpreadElement"), "SpreadElement")(TParseTree("", false,[], s));
5023         }
5024     }
5025     static string SpreadElement(GetName g)
5026     {
5027         return "ES6.SpreadElement";
5028     }
5029 
5030     static TParseTree SpreadElementYield(TParseTree p)
5031     {
5032         if(__ctfe)
5033         {
5034             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.SpreadElementYield")(p);
5035         }
5036         else
5037         {
5038             if(auto m = tuple(`SpreadElementYield`,p.end) in memo)
5039                 return *m;
5040             else
5041             {
5042                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.SpreadElementYield"), "SpreadElementYield")(p);
5043                 memo[tuple(`SpreadElementYield`,p.end)] = result;
5044                 return result;
5045             }
5046         }
5047     }
5048 
5049     static TParseTree SpreadElementYield(string s)
5050     {
5051         if(__ctfe)
5052         {
5053             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.SpreadElementYield")(TParseTree("", false,[], s));
5054         }
5055         else
5056         {
5057             memo = null;
5058             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.SpreadElementYield"), "SpreadElementYield")(TParseTree("", false,[], s));
5059         }
5060     }
5061     static string SpreadElementYield(GetName g)
5062     {
5063         return "ES6.SpreadElementYield";
5064     }
5065 
5066     static TParseTree ObjectLiteral(TParseTree p)
5067     {
5068         if(__ctfe)
5069         {
5070             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionList, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteral")(p);
5071         }
5072         else
5073         {
5074             if(auto m = tuple(`ObjectLiteral`,p.end) in memo)
5075                 return *m;
5076             else
5077             {
5078                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionList, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteral"), "ObjectLiteral")(p);
5079                 memo[tuple(`ObjectLiteral`,p.end)] = result;
5080                 return result;
5081             }
5082         }
5083     }
5084 
5085     static TParseTree ObjectLiteral(string s)
5086     {
5087         if(__ctfe)
5088         {
5089             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionList, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteral")(TParseTree("", false,[], s));
5090         }
5091         else
5092         {
5093             memo = null;
5094             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionList, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteral"), "ObjectLiteral")(TParseTree("", false,[], s));
5095         }
5096     }
5097     static string ObjectLiteral(GetName g)
5098     {
5099         return "ES6.ObjectLiteral";
5100     }
5101 
5102     static TParseTree ObjectLiteralYield(TParseTree p)
5103     {
5104         if(__ctfe)
5105         {
5106             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionListYield, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteralYield")(p);
5107         }
5108         else
5109         {
5110             if(auto m = tuple(`ObjectLiteralYield`,p.end) in memo)
5111                 return *m;
5112             else
5113             {
5114                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionListYield, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteralYield"), "ObjectLiteralYield")(p);
5115                 memo[tuple(`ObjectLiteralYield`,p.end)] = result;
5116                 return result;
5117             }
5118         }
5119     }
5120 
5121     static TParseTree ObjectLiteralYield(string s)
5122     {
5123         if(__ctfe)
5124         {
5125             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionListYield, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteralYield")(TParseTree("", false,[], s));
5126         }
5127         else
5128         {
5129             memo = null;
5130             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionListYield, Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)))), Spacing))), Spacing), "ES6.ObjectLiteralYield"), "ObjectLiteralYield")(TParseTree("", false,[], s));
5131         }
5132     }
5133     static string ObjectLiteralYield(GetName g)
5134     {
5135         return "ES6.ObjectLiteralYield";
5136     }
5137 
5138     static TParseTree PropertyDefinitionList(TParseTree p)
5139     {
5140         if(__ctfe)
5141         {
5142             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing)), Spacing))), "ES6.PropertyDefinitionList")(p);
5143         }
5144         else
5145         {
5146             if(auto m = tuple(`PropertyDefinitionList`,p.end) in memo)
5147                 return *m;
5148             else
5149             {
5150                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing)), Spacing))), "ES6.PropertyDefinitionList"), "PropertyDefinitionList")(p);
5151                 memo[tuple(`PropertyDefinitionList`,p.end)] = result;
5152                 return result;
5153             }
5154         }
5155     }
5156 
5157     static TParseTree PropertyDefinitionList(string s)
5158     {
5159         if(__ctfe)
5160         {
5161             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing)), Spacing))), "ES6.PropertyDefinitionList")(TParseTree("", false,[], s));
5162         }
5163         else
5164         {
5165             memo = null;
5166             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinition, Spacing)), Spacing))), "ES6.PropertyDefinitionList"), "PropertyDefinitionList")(TParseTree("", false,[], s));
5167         }
5168     }
5169     static string PropertyDefinitionList(GetName g)
5170     {
5171         return "ES6.PropertyDefinitionList";
5172     }
5173 
5174     static TParseTree PropertyDefinitionListYield(TParseTree p)
5175     {
5176         if(__ctfe)
5177         {
5178             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing)), Spacing))), "ES6.PropertyDefinitionListYield")(p);
5179         }
5180         else
5181         {
5182             if(auto m = tuple(`PropertyDefinitionListYield`,p.end) in memo)
5183                 return *m;
5184             else
5185             {
5186                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing)), Spacing))), "ES6.PropertyDefinitionListYield"), "PropertyDefinitionListYield")(p);
5187                 memo[tuple(`PropertyDefinitionListYield`,p.end)] = result;
5188                 return result;
5189             }
5190         }
5191     }
5192 
5193     static TParseTree PropertyDefinitionListYield(string s)
5194     {
5195         if(__ctfe)
5196         {
5197             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing)), Spacing))), "ES6.PropertyDefinitionListYield")(TParseTree("", false,[], s));
5198         }
5199         else
5200         {
5201             memo = null;
5202             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, PropertyDefinitionYield, Spacing)), Spacing))), "ES6.PropertyDefinitionListYield"), "PropertyDefinitionListYield")(TParseTree("", false,[], s));
5203         }
5204     }
5205     static string PropertyDefinitionListYield(GetName g)
5206     {
5207         return "ES6.PropertyDefinitionListYield";
5208     }
5209 
5210     static TParseTree PropertyDefinition(TParseTree p)
5211     {
5212         if(__ctfe)
5213         {
5214             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PropertyDefinition")(p);
5215         }
5216         else
5217         {
5218             if(auto m = tuple(`PropertyDefinition`,p.end) in memo)
5219                 return *m;
5220             else
5221             {
5222                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PropertyDefinition"), "PropertyDefinition")(p);
5223                 memo[tuple(`PropertyDefinition`,p.end)] = result;
5224                 return result;
5225             }
5226         }
5227     }
5228 
5229     static TParseTree PropertyDefinition(string s)
5230     {
5231         if(__ctfe)
5232         {
5233             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PropertyDefinition")(TParseTree("", false,[], s));
5234         }
5235         else
5236         {
5237             memo = null;
5238             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing)), "ES6.PropertyDefinition"), "PropertyDefinition")(TParseTree("", false,[], s));
5239         }
5240     }
5241     static string PropertyDefinition(GetName g)
5242     {
5243         return "ES6.PropertyDefinition";
5244     }
5245 
5246     static TParseTree PropertyDefinitionYield(TParseTree p)
5247     {
5248         if(__ctfe)
5249         {
5250             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PropertyDefinitionYield")(p);
5251         }
5252         else
5253         {
5254             if(auto m = tuple(`PropertyDefinitionYield`,p.end) in memo)
5255                 return *m;
5256             else
5257             {
5258                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PropertyDefinitionYield"), "PropertyDefinitionYield")(p);
5259                 memo[tuple(`PropertyDefinitionYield`,p.end)] = result;
5260                 return result;
5261             }
5262         }
5263     }
5264 
5265     static TParseTree PropertyDefinitionYield(string s)
5266     {
5267         if(__ctfe)
5268         {
5269             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PropertyDefinitionYield")(TParseTree("", false,[], s));
5270         }
5271         else
5272         {
5273             memo = null;
5274             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverInitializedNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing)), "ES6.PropertyDefinitionYield"), "PropertyDefinitionYield")(TParseTree("", false,[], s));
5275         }
5276     }
5277     static string PropertyDefinitionYield(GetName g)
5278     {
5279         return "ES6.PropertyDefinitionYield";
5280     }
5281 
5282     static TParseTree PropertyName(TParseTree p)
5283     {
5284         if(__ctfe)
5285         {
5286             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyName, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyName")(p);
5287         }
5288         else
5289         {
5290             if(auto m = tuple(`PropertyName`,p.end) in memo)
5291                 return *m;
5292             else
5293             {
5294                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyName, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyName"), "PropertyName")(p);
5295                 memo[tuple(`PropertyName`,p.end)] = result;
5296                 return result;
5297             }
5298         }
5299     }
5300 
5301     static TParseTree PropertyName(string s)
5302     {
5303         if(__ctfe)
5304         {
5305             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyName, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyName")(TParseTree("", false,[], s));
5306         }
5307         else
5308         {
5309             memo = null;
5310             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyName, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyName"), "PropertyName")(TParseTree("", false,[], s));
5311         }
5312     }
5313     static string PropertyName(GetName g)
5314     {
5315         return "ES6.PropertyName";
5316     }
5317 
5318     static TParseTree PropertyNameYield(TParseTree p)
5319     {
5320         if(__ctfe)
5321         {
5322             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyNameYield")(p);
5323         }
5324         else
5325         {
5326             if(auto m = tuple(`PropertyNameYield`,p.end) in memo)
5327                 return *m;
5328             else
5329             {
5330                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyNameYield"), "PropertyNameYield")(p);
5331                 memo[tuple(`PropertyNameYield`,p.end)] = result;
5332                 return result;
5333             }
5334         }
5335     }
5336 
5337     static TParseTree PropertyNameYield(string s)
5338     {
5339         if(__ctfe)
5340         {
5341             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyNameYield")(TParseTree("", false,[], s));
5342         }
5343         else
5344         {
5345             memo = null;
5346             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ComputedPropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, LiteralPropertyName, Spacing)), "ES6.PropertyNameYield"), "PropertyNameYield")(TParseTree("", false,[], s));
5347         }
5348     }
5349     static string PropertyNameYield(GetName g)
5350     {
5351         return "ES6.PropertyNameYield";
5352     }
5353 
5354     static TParseTree LiteralPropertyName(TParseTree p)
5355     {
5356         if(__ctfe)
5357         {
5358             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NumericLiteral, Spacing), pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.LiteralPropertyName")(p);
5359         }
5360         else
5361         {
5362             if(auto m = tuple(`LiteralPropertyName`,p.end) in memo)
5363                 return *m;
5364             else
5365             {
5366                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NumericLiteral, Spacing), pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.LiteralPropertyName"), "LiteralPropertyName")(p);
5367                 memo[tuple(`LiteralPropertyName`,p.end)] = result;
5368                 return result;
5369             }
5370         }
5371     }
5372 
5373     static TParseTree LiteralPropertyName(string s)
5374     {
5375         if(__ctfe)
5376         {
5377             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NumericLiteral, Spacing), pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.LiteralPropertyName")(TParseTree("", false,[], s));
5378         }
5379         else
5380         {
5381             memo = null;
5382             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NumericLiteral, Spacing), pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.LiteralPropertyName"), "LiteralPropertyName")(TParseTree("", false,[], s));
5383         }
5384     }
5385     static string LiteralPropertyName(GetName g)
5386     {
5387         return "ES6.LiteralPropertyName";
5388     }
5389 
5390     static TParseTree ComputedPropertyName(TParseTree p)
5391     {
5392         if(__ctfe)
5393         {
5394             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), "ES6.ComputedPropertyName")(p);
5395         }
5396         else
5397         {
5398             if(auto m = tuple(`ComputedPropertyName`,p.end) in memo)
5399                 return *m;
5400             else
5401             {
5402                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), "ES6.ComputedPropertyName"), "ComputedPropertyName")(p);
5403                 memo[tuple(`ComputedPropertyName`,p.end)] = result;
5404                 return result;
5405             }
5406         }
5407     }
5408 
5409     static TParseTree ComputedPropertyName(string s)
5410     {
5411         if(__ctfe)
5412         {
5413             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), "ES6.ComputedPropertyName")(TParseTree("", false,[], s));
5414         }
5415         else
5416         {
5417             memo = null;
5418             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), "ES6.ComputedPropertyName"), "ComputedPropertyName")(TParseTree("", false,[], s));
5419         }
5420     }
5421     static string ComputedPropertyName(GetName g)
5422     {
5423         return "ES6.ComputedPropertyName";
5424     }
5425 
5426     static TParseTree ComputedPropertyNameYield(TParseTree p)
5427     {
5428         if(__ctfe)
5429         {
5430             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), "ES6.ComputedPropertyNameYield")(p);
5431         }
5432         else
5433         {
5434             if(auto m = tuple(`ComputedPropertyNameYield`,p.end) in memo)
5435                 return *m;
5436             else
5437             {
5438                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), "ES6.ComputedPropertyNameYield"), "ComputedPropertyNameYield")(p);
5439                 memo[tuple(`ComputedPropertyNameYield`,p.end)] = result;
5440                 return result;
5441             }
5442         }
5443     }
5444 
5445     static TParseTree ComputedPropertyNameYield(string s)
5446     {
5447         if(__ctfe)
5448         {
5449             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), "ES6.ComputedPropertyNameYield")(TParseTree("", false,[], s));
5450         }
5451         else
5452         {
5453             memo = null;
5454             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing), "ES6.ComputedPropertyNameYield"), "ComputedPropertyNameYield")(TParseTree("", false,[], s));
5455         }
5456     }
5457     static string ComputedPropertyNameYield(GetName g)
5458     {
5459         return "ES6.ComputedPropertyNameYield";
5460     }
5461 
5462     static TParseTree CoverInitializedName(TParseTree p)
5463     {
5464         if(__ctfe)
5465         {
5466             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), "ES6.CoverInitializedName")(p);
5467         }
5468         else
5469         {
5470             if(auto m = tuple(`CoverInitializedName`,p.end) in memo)
5471                 return *m;
5472             else
5473             {
5474                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), "ES6.CoverInitializedName"), "CoverInitializedName")(p);
5475                 memo[tuple(`CoverInitializedName`,p.end)] = result;
5476                 return result;
5477             }
5478         }
5479     }
5480 
5481     static TParseTree CoverInitializedName(string s)
5482     {
5483         if(__ctfe)
5484         {
5485             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), "ES6.CoverInitializedName")(TParseTree("", false,[], s));
5486         }
5487         else
5488         {
5489             memo = null;
5490             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReference, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), "ES6.CoverInitializedName"), "CoverInitializedName")(TParseTree("", false,[], s));
5491         }
5492     }
5493     static string CoverInitializedName(GetName g)
5494     {
5495         return "ES6.CoverInitializedName";
5496     }
5497 
5498     static TParseTree CoverInitializedNameYield(TParseTree p)
5499     {
5500         if(__ctfe)
5501         {
5502             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), "ES6.CoverInitializedNameYield")(p);
5503         }
5504         else
5505         {
5506             if(auto m = tuple(`CoverInitializedNameYield`,p.end) in memo)
5507                 return *m;
5508             else
5509             {
5510                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), "ES6.CoverInitializedNameYield"), "CoverInitializedNameYield")(p);
5511                 memo[tuple(`CoverInitializedNameYield`,p.end)] = result;
5512                 return result;
5513             }
5514         }
5515     }
5516 
5517     static TParseTree CoverInitializedNameYield(string s)
5518     {
5519         if(__ctfe)
5520         {
5521             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), "ES6.CoverInitializedNameYield")(TParseTree("", false,[], s));
5522         }
5523         else
5524         {
5525             memo = null;
5526             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, IdentifierReferenceYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), "ES6.CoverInitializedNameYield"), "CoverInitializedNameYield")(TParseTree("", false,[], s));
5527         }
5528     }
5529     static string CoverInitializedNameYield(GetName g)
5530     {
5531         return "ES6.CoverInitializedNameYield";
5532     }
5533 
5534     static TParseTree Initializer(TParseTree p)
5535     {
5536         if(__ctfe)
5537         {
5538             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), "ES6.Initializer")(p);
5539         }
5540         else
5541         {
5542             if(auto m = tuple(`Initializer`,p.end) in memo)
5543                 return *m;
5544             else
5545             {
5546                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), "ES6.Initializer"), "Initializer")(p);
5547                 memo[tuple(`Initializer`,p.end)] = result;
5548                 return result;
5549             }
5550         }
5551     }
5552 
5553     static TParseTree Initializer(string s)
5554     {
5555         if(__ctfe)
5556         {
5557             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), "ES6.Initializer")(TParseTree("", false,[], s));
5558         }
5559         else
5560         {
5561             memo = null;
5562             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), "ES6.Initializer"), "Initializer")(TParseTree("", false,[], s));
5563         }
5564     }
5565     static string Initializer(GetName g)
5566     {
5567         return "ES6.Initializer";
5568     }
5569 
5570     static TParseTree InitializerIn(TParseTree p)
5571     {
5572         if(__ctfe)
5573         {
5574             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.InitializerIn")(p);
5575         }
5576         else
5577         {
5578             if(auto m = tuple(`InitializerIn`,p.end) in memo)
5579                 return *m;
5580             else
5581             {
5582                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.InitializerIn"), "InitializerIn")(p);
5583                 memo[tuple(`InitializerIn`,p.end)] = result;
5584                 return result;
5585             }
5586         }
5587     }
5588 
5589     static TParseTree InitializerIn(string s)
5590     {
5591         if(__ctfe)
5592         {
5593             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.InitializerIn")(TParseTree("", false,[], s));
5594         }
5595         else
5596         {
5597             memo = null;
5598             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), "ES6.InitializerIn"), "InitializerIn")(TParseTree("", false,[], s));
5599         }
5600     }
5601     static string InitializerIn(GetName g)
5602     {
5603         return "ES6.InitializerIn";
5604     }
5605 
5606     static TParseTree InitializerYield(TParseTree p)
5607     {
5608         if(__ctfe)
5609         {
5610             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), "ES6.InitializerYield")(p);
5611         }
5612         else
5613         {
5614             if(auto m = tuple(`InitializerYield`,p.end) in memo)
5615                 return *m;
5616             else
5617             {
5618                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), "ES6.InitializerYield"), "InitializerYield")(p);
5619                 memo[tuple(`InitializerYield`,p.end)] = result;
5620                 return result;
5621             }
5622         }
5623     }
5624 
5625     static TParseTree InitializerYield(string s)
5626     {
5627         if(__ctfe)
5628         {
5629             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), "ES6.InitializerYield")(TParseTree("", false,[], s));
5630         }
5631         else
5632         {
5633             memo = null;
5634             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), "ES6.InitializerYield"), "InitializerYield")(TParseTree("", false,[], s));
5635         }
5636     }
5637     static string InitializerYield(GetName g)
5638     {
5639         return "ES6.InitializerYield";
5640     }
5641 
5642     static TParseTree InitializerInYield(TParseTree p)
5643     {
5644         if(__ctfe)
5645         {
5646             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.InitializerInYield")(p);
5647         }
5648         else
5649         {
5650             if(auto m = tuple(`InitializerInYield`,p.end) in memo)
5651                 return *m;
5652             else
5653             {
5654                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.InitializerInYield"), "InitializerInYield")(p);
5655                 memo[tuple(`InitializerInYield`,p.end)] = result;
5656                 return result;
5657             }
5658         }
5659     }
5660 
5661     static TParseTree InitializerInYield(string s)
5662     {
5663         if(__ctfe)
5664         {
5665             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.InitializerInYield")(TParseTree("", false,[], s));
5666         }
5667         else
5668         {
5669             memo = null;
5670             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), "ES6.InitializerInYield"), "InitializerInYield")(TParseTree("", false,[], s));
5671         }
5672     }
5673     static string InitializerInYield(GetName g)
5674     {
5675         return "ES6.InitializerInYield";
5676     }
5677 
5678     static TParseTree TemplateLiteral(TParseTree p)
5679     {
5680         if(__ctfe)
5681         {
5682             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpans, Spacing)), Spacing)), "ES6.TemplateLiteral")(p);
5683         }
5684         else
5685         {
5686             if(auto m = tuple(`TemplateLiteral`,p.end) in memo)
5687                 return *m;
5688             else
5689             {
5690                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpans, Spacing)), Spacing)), "ES6.TemplateLiteral"), "TemplateLiteral")(p);
5691                 memo[tuple(`TemplateLiteral`,p.end)] = result;
5692                 return result;
5693             }
5694         }
5695     }
5696 
5697     static TParseTree TemplateLiteral(string s)
5698     {
5699         if(__ctfe)
5700         {
5701             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpans, Spacing)), Spacing)), "ES6.TemplateLiteral")(TParseTree("", false,[], s));
5702         }
5703         else
5704         {
5705             memo = null;
5706             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpans, Spacing)), Spacing)), "ES6.TemplateLiteral"), "TemplateLiteral")(TParseTree("", false,[], s));
5707         }
5708     }
5709     static string TemplateLiteral(GetName g)
5710     {
5711         return "ES6.TemplateLiteral";
5712     }
5713 
5714     static TParseTree TemplateLiteralYield(TParseTree p)
5715     {
5716         if(__ctfe)
5717         {
5718             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpansYield, Spacing)), Spacing)), "ES6.TemplateLiteralYield")(p);
5719         }
5720         else
5721         {
5722             if(auto m = tuple(`TemplateLiteralYield`,p.end) in memo)
5723                 return *m;
5724             else
5725             {
5726                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpansYield, Spacing)), Spacing)), "ES6.TemplateLiteralYield"), "TemplateLiteralYield")(p);
5727                 memo[tuple(`TemplateLiteralYield`,p.end)] = result;
5728                 return result;
5729             }
5730         }
5731     }
5732 
5733     static TParseTree TemplateLiteralYield(string s)
5734     {
5735         if(__ctfe)
5736         {
5737             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpansYield, Spacing)), Spacing)), "ES6.TemplateLiteralYield")(TParseTree("", false,[], s));
5738         }
5739         else
5740         {
5741             memo = null;
5742             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, NoSubstitutionTemplate, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, TemplateHead, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, TemplateSpansYield, Spacing)), Spacing)), "ES6.TemplateLiteralYield"), "TemplateLiteralYield")(TParseTree("", false,[], s));
5743         }
5744     }
5745     static string TemplateLiteralYield(GetName g)
5746     {
5747         return "ES6.TemplateLiteralYield";
5748     }
5749 
5750     static TParseTree TemplateSpans(TParseTree p)
5751     {
5752         if(__ctfe)
5753         {
5754             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpans")(p);
5755         }
5756         else
5757         {
5758             if(auto m = tuple(`TemplateSpans`,p.end) in memo)
5759                 return *m;
5760             else
5761             {
5762                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpans"), "TemplateSpans")(p);
5763                 memo[tuple(`TemplateSpans`,p.end)] = result;
5764                 return result;
5765             }
5766         }
5767     }
5768 
5769     static TParseTree TemplateSpans(string s)
5770     {
5771         if(__ctfe)
5772         {
5773             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpans")(TParseTree("", false,[], s));
5774         }
5775         else
5776         {
5777             memo = null;
5778             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpans"), "TemplateSpans")(TParseTree("", false,[], s));
5779         }
5780     }
5781     static string TemplateSpans(GetName g)
5782     {
5783         return "ES6.TemplateSpans";
5784     }
5785 
5786     static TParseTree TemplateSpansYield(TParseTree p)
5787     {
5788         if(__ctfe)
5789         {
5790             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpansYield")(p);
5791         }
5792         else
5793         {
5794             if(auto m = tuple(`TemplateSpansYield`,p.end) in memo)
5795                 return *m;
5796             else
5797             {
5798                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpansYield"), "TemplateSpansYield")(p);
5799                 memo[tuple(`TemplateSpansYield`,p.end)] = result;
5800                 return result;
5801             }
5802         }
5803     }
5804 
5805     static TParseTree TemplateSpansYield(string s)
5806     {
5807         if(__ctfe)
5808         {
5809             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpansYield")(TParseTree("", false,[], s));
5810         }
5811         else
5812         {
5813             memo = null;
5814             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateTail, Spacing)), "ES6.TemplateSpansYield"), "TemplateSpansYield")(TParseTree("", false,[], s));
5815         }
5816     }
5817     static string TemplateSpansYield(GetName g)
5818     {
5819         return "ES6.TemplateSpansYield";
5820     }
5821 
5822     static TParseTree TemplateMiddleList(TParseTree p)
5823     {
5824         if(__ctfe)
5825         {
5826             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.TemplateMiddleList")(p);
5827         }
5828         else
5829         {
5830             if(auto m = tuple(`TemplateMiddleList`,p.end) in memo)
5831                 return *m;
5832             else
5833             {
5834                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.TemplateMiddleList"), "TemplateMiddleList")(p);
5835                 memo[tuple(`TemplateMiddleList`,p.end)] = result;
5836                 return result;
5837             }
5838         }
5839     }
5840 
5841     static TParseTree TemplateMiddleList(string s)
5842     {
5843         if(__ctfe)
5844         {
5845             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.TemplateMiddleList")(TParseTree("", false,[], s));
5846         }
5847         else
5848         {
5849             memo = null;
5850             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleList, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.TemplateMiddleList"), "TemplateMiddleList")(TParseTree("", false,[], s));
5851         }
5852     }
5853     static string TemplateMiddleList(GetName g)
5854     {
5855         return "ES6.TemplateMiddleList";
5856     }
5857 
5858     static TParseTree TemplateMiddleListYield(TParseTree p)
5859     {
5860         if(__ctfe)
5861         {
5862             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.TemplateMiddleListYield")(p);
5863         }
5864         else
5865         {
5866             if(auto m = tuple(`TemplateMiddleListYield`,p.end) in memo)
5867                 return *m;
5868             else
5869             {
5870                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.TemplateMiddleListYield"), "TemplateMiddleListYield")(p);
5871                 memo[tuple(`TemplateMiddleListYield`,p.end)] = result;
5872                 return result;
5873             }
5874         }
5875     }
5876 
5877     static TParseTree TemplateMiddleListYield(string s)
5878     {
5879         if(__ctfe)
5880         {
5881             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.TemplateMiddleListYield")(TParseTree("", false,[], s));
5882         }
5883         else
5884         {
5885             memo = null;
5886             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, TemplateMiddleListYield, Spacing)), pegged.peg.wrapAround!(Spacing, TemplateMiddle, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.TemplateMiddleListYield"), "TemplateMiddleListYield")(TParseTree("", false,[], s));
5887         }
5888     }
5889     static string TemplateMiddleListYield(GetName g)
5890     {
5891         return "ES6.TemplateMiddleListYield";
5892     }
5893 
5894     static TParseTree FieldAccessor(TParseTree p)
5895     {
5896         if(__ctfe)
5897         {
5898             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.FieldAccessor")(p);
5899         }
5900         else
5901         {
5902             if(auto m = tuple(`FieldAccessor`,p.end) in memo)
5903                 return *m;
5904             else
5905             {
5906                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.FieldAccessor"), "FieldAccessor")(p);
5907                 memo[tuple(`FieldAccessor`,p.end)] = result;
5908                 return result;
5909             }
5910         }
5911     }
5912 
5913     static TParseTree FieldAccessor(string s)
5914     {
5915         if(__ctfe)
5916         {
5917             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.FieldAccessor")(TParseTree("", false,[], s));
5918         }
5919         else
5920         {
5921             memo = null;
5922             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.wrapAround!(Spacing, IdentifierName, Spacing)), "ES6.FieldAccessor"), "FieldAccessor")(TParseTree("", false,[], s));
5923         }
5924     }
5925     static string FieldAccessor(GetName g)
5926     {
5927         return "ES6.FieldAccessor";
5928     }
5929 
5930     static TParseTree MemberExpression(TParseTree p)
5931     {
5932         if(__ctfe)
5933         {
5934             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), "ES6.MemberExpression")(p);
5935         }
5936         else
5937         {
5938             if(auto m = tuple(`MemberExpression`,p.end) in memo)
5939                 return *m;
5940             else
5941             {
5942                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), "ES6.MemberExpression"), "MemberExpression")(p);
5943                 memo[tuple(`MemberExpression`,p.end)] = result;
5944                 return result;
5945             }
5946         }
5947     }
5948 
5949     static TParseTree MemberExpression(string s)
5950     {
5951         if(__ctfe)
5952         {
5953             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), "ES6.MemberExpression")(TParseTree("", false,[], s));
5954         }
5955         else
5956         {
5957             memo = null;
5958             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperProperty, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpression, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing)), Spacing))), "ES6.MemberExpression"), "MemberExpression")(TParseTree("", false,[], s));
5959         }
5960     }
5961     static string MemberExpression(GetName g)
5962     {
5963         return "ES6.MemberExpression";
5964     }
5965 
5966     static TParseTree MemberExpressionYield(TParseTree p)
5967     {
5968         if(__ctfe)
5969         {
5970             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), "ES6.MemberExpressionYield")(p);
5971         }
5972         else
5973         {
5974             if(auto m = tuple(`MemberExpressionYield`,p.end) in memo)
5975                 return *m;
5976             else
5977             {
5978                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), "ES6.MemberExpressionYield"), "MemberExpressionYield")(p);
5979                 memo[tuple(`MemberExpressionYield`,p.end)] = result;
5980                 return result;
5981             }
5982         }
5983     }
5984 
5985     static TParseTree MemberExpressionYield(string s)
5986     {
5987         if(__ctfe)
5988         {
5989             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), "ES6.MemberExpressionYield")(TParseTree("", false,[], s));
5990         }
5991         else
5992         {
5993             memo = null;
5994             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperPropertyYield, Spacing), pegged.peg.wrapAround!(Spacing, MetaProperty, Spacing), pegged.peg.wrapAround!(Spacing, PrimaryExpressionYield, Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing)), Spacing))), "ES6.MemberExpressionYield"), "MemberExpressionYield")(TParseTree("", false,[], s));
5995         }
5996     }
5997     static string MemberExpressionYield(GetName g)
5998     {
5999         return "ES6.MemberExpressionYield";
6000     }
6001 
6002     static TParseTree SuperProperty(TParseTree p)
6003     {
6004         if(__ctfe)
6005         {
6006             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperProperty")(p);
6007         }
6008         else
6009         {
6010             if(auto m = tuple(`SuperProperty`,p.end) in memo)
6011                 return *m;
6012             else
6013             {
6014                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperProperty"), "SuperProperty")(p);
6015                 memo[tuple(`SuperProperty`,p.end)] = result;
6016                 return result;
6017             }
6018         }
6019     }
6020 
6021     static TParseTree SuperProperty(string s)
6022     {
6023         if(__ctfe)
6024         {
6025             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperProperty")(TParseTree("", false,[], s));
6026         }
6027         else
6028         {
6029             memo = null;
6030             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperProperty"), "SuperProperty")(TParseTree("", false,[], s));
6031         }
6032     }
6033     static string SuperProperty(GetName g)
6034     {
6035         return "ES6.SuperProperty";
6036     }
6037 
6038     static TParseTree SuperPropertyYield(TParseTree p)
6039     {
6040         if(__ctfe)
6041         {
6042             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperPropertyYield")(p);
6043         }
6044         else
6045         {
6046             if(auto m = tuple(`SuperPropertyYield`,p.end) in memo)
6047                 return *m;
6048             else
6049             {
6050                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperPropertyYield"), "SuperPropertyYield")(p);
6051                 memo[tuple(`SuperPropertyYield`,p.end)] = result;
6052                 return result;
6053             }
6054         }
6055     }
6056 
6057     static TParseTree SuperPropertyYield(string s)
6058     {
6059         if(__ctfe)
6060         {
6061             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperPropertyYield")(TParseTree("", false,[], s));
6062         }
6063         else
6064         {
6065             memo = null;
6066             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing)), Spacing)), "ES6.SuperPropertyYield"), "SuperPropertyYield")(TParseTree("", false,[], s));
6067         }
6068     }
6069     static string SuperPropertyYield(GetName g)
6070     {
6071         return "ES6.SuperPropertyYield";
6072     }
6073 
6074     static TParseTree MetaProperty(TParseTree p)
6075     {
6076         if(__ctfe)
6077         {
6078             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, NewTarget, Spacing), "ES6.MetaProperty")(p);
6079         }
6080         else
6081         {
6082             if(auto m = tuple(`MetaProperty`,p.end) in memo)
6083                 return *m;
6084             else
6085             {
6086                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, NewTarget, Spacing), "ES6.MetaProperty"), "MetaProperty")(p);
6087                 memo[tuple(`MetaProperty`,p.end)] = result;
6088                 return result;
6089             }
6090         }
6091     }
6092 
6093     static TParseTree MetaProperty(string s)
6094     {
6095         if(__ctfe)
6096         {
6097             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, NewTarget, Spacing), "ES6.MetaProperty")(TParseTree("", false,[], s));
6098         }
6099         else
6100         {
6101             memo = null;
6102             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, NewTarget, Spacing), "ES6.MetaProperty"), "MetaProperty")(TParseTree("", false,[], s));
6103         }
6104     }
6105     static string MetaProperty(GetName g)
6106     {
6107         return "ES6.MetaProperty";
6108     }
6109 
6110     static TParseTree NewKeyword(TParseTree p)
6111     {
6112         if(__ctfe)
6113         {
6114             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("new"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.NewKeyword")(p);
6115         }
6116         else
6117         {
6118             if(auto m = tuple(`NewKeyword`,p.end) in memo)
6119                 return *m;
6120             else
6121             {
6122                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("new"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.NewKeyword"), "NewKeyword")(p);
6123                 memo[tuple(`NewKeyword`,p.end)] = result;
6124                 return result;
6125             }
6126         }
6127     }
6128 
6129     static TParseTree NewKeyword(string s)
6130     {
6131         if(__ctfe)
6132         {
6133             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("new"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.NewKeyword")(TParseTree("", false,[], s));
6134         }
6135         else
6136         {
6137             memo = null;
6138             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("new"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.NewKeyword"), "NewKeyword")(TParseTree("", false,[], s));
6139         }
6140     }
6141     static string NewKeyword(GetName g)
6142     {
6143         return "ES6.NewKeyword";
6144     }
6145 
6146     static TParseTree NewTarget(TParseTree p)
6147     {
6148         if(__ctfe)
6149         {
6150             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("new"), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("target"), Spacing))), "ES6.NewTarget")(p);
6151         }
6152         else
6153         {
6154             if(auto m = tuple(`NewTarget`,p.end) in memo)
6155                 return *m;
6156             else
6157             {
6158                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("new"), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("target"), Spacing))), "ES6.NewTarget"), "NewTarget")(p);
6159                 memo[tuple(`NewTarget`,p.end)] = result;
6160                 return result;
6161             }
6162         }
6163     }
6164 
6165     static TParseTree NewTarget(string s)
6166     {
6167         if(__ctfe)
6168         {
6169             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("new"), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("target"), Spacing))), "ES6.NewTarget")(TParseTree("", false,[], s));
6170         }
6171         else
6172         {
6173             memo = null;
6174             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("new"), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("."), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("target"), Spacing))), "ES6.NewTarget"), "NewTarget")(TParseTree("", false,[], s));
6175         }
6176     }
6177     static string NewTarget(GetName g)
6178     {
6179         return "ES6.NewTarget";
6180     }
6181 
6182     static TParseTree NewExpression(TParseTree p)
6183     {
6184         if(__ctfe)
6185         {
6186             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing)), Spacing)), "ES6.NewExpression")(p);
6187         }
6188         else
6189         {
6190             if(auto m = tuple(`NewExpression`,p.end) in memo)
6191                 return *m;
6192             else
6193             {
6194                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing)), Spacing)), "ES6.NewExpression"), "NewExpression")(p);
6195                 memo[tuple(`NewExpression`,p.end)] = result;
6196                 return result;
6197             }
6198         }
6199     }
6200 
6201     static TParseTree NewExpression(string s)
6202     {
6203         if(__ctfe)
6204         {
6205             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing)), Spacing)), "ES6.NewExpression")(TParseTree("", false,[], s));
6206         }
6207         else
6208         {
6209             memo = null;
6210             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing)), Spacing)), "ES6.NewExpression"), "NewExpression")(TParseTree("", false,[], s));
6211         }
6212     }
6213     static string NewExpression(GetName g)
6214     {
6215         return "ES6.NewExpression";
6216     }
6217 
6218     static TParseTree NewExpressionYield(TParseTree p)
6219     {
6220         if(__ctfe)
6221         {
6222             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing)), Spacing)), "ES6.NewExpressionYield")(p);
6223         }
6224         else
6225         {
6226             if(auto m = tuple(`NewExpressionYield`,p.end) in memo)
6227                 return *m;
6228             else
6229             {
6230                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing)), Spacing)), "ES6.NewExpressionYield"), "NewExpressionYield")(p);
6231                 memo[tuple(`NewExpressionYield`,p.end)] = result;
6232                 return result;
6233             }
6234         }
6235     }
6236 
6237     static TParseTree NewExpressionYield(string s)
6238     {
6239         if(__ctfe)
6240         {
6241             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing)), Spacing)), "ES6.NewExpressionYield")(TParseTree("", false,[], s));
6242         }
6243         else
6244         {
6245             memo = null;
6246             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, NewKeyword, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, WhiteSpace, Spacing))), Spacing)), pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing)), Spacing)), "ES6.NewExpressionYield"), "NewExpressionYield")(TParseTree("", false,[], s));
6247         }
6248     }
6249     static string NewExpressionYield(GetName g)
6250     {
6251         return "ES6.NewExpressionYield";
6252     }
6253 
6254     static TParseTree CallExpression(TParseTree p)
6255     {
6256         if(__ctfe)
6257         {
6258             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCall, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing))), "ES6.CallExpression")(p);
6259         }
6260         else
6261         {
6262             if(auto m = tuple(`CallExpression`,p.end) in memo)
6263                 return *m;
6264             else
6265             {
6266                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCall, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing))), "ES6.CallExpression"), "CallExpression")(p);
6267                 memo[tuple(`CallExpression`,p.end)] = result;
6268                 return result;
6269             }
6270         }
6271     }
6272 
6273     static TParseTree CallExpression(string s)
6274     {
6275         if(__ctfe)
6276         {
6277             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCall, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing))), "ES6.CallExpression")(TParseTree("", false,[], s));
6278         }
6279         else
6280         {
6281             memo = null;
6282             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCall, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpression, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteral, Spacing), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), Spacing))), "ES6.CallExpression"), "CallExpression")(TParseTree("", false,[], s));
6283         }
6284     }
6285     static string CallExpression(GetName g)
6286     {
6287         return "ES6.CallExpression";
6288     }
6289 
6290     static TParseTree CallExpressionYield(TParseTree p)
6291     {
6292         if(__ctfe)
6293         {
6294             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCallYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing))), "ES6.CallExpressionYield")(p);
6295         }
6296         else
6297         {
6298             if(auto m = tuple(`CallExpressionYield`,p.end) in memo)
6299                 return *m;
6300             else
6301             {
6302                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCallYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing))), "ES6.CallExpressionYield"), "CallExpressionYield")(p);
6303                 memo[tuple(`CallExpressionYield`,p.end)] = result;
6304                 return result;
6305             }
6306         }
6307     }
6308 
6309     static TParseTree CallExpressionYield(string s)
6310     {
6311         if(__ctfe)
6312         {
6313             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCallYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing))), "ES6.CallExpressionYield")(TParseTree("", false,[], s));
6314         }
6315         else
6316         {
6317             memo = null;
6318             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SuperCallYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, MemberExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing)), Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, FieldAccessor, Spacing), Spacing), pegged.peg.wrapAround!(Spacing, TemplateLiteralYield, Spacing), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), Spacing))), "ES6.CallExpressionYield"), "CallExpressionYield")(TParseTree("", false,[], s));
6319         }
6320     }
6321     static string CallExpressionYield(GetName g)
6322     {
6323         return "ES6.CallExpressionYield";
6324     }
6325 
6326     static TParseTree SuperCall(TParseTree p)
6327     {
6328         if(__ctfe)
6329         {
6330             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), "ES6.SuperCall")(p);
6331         }
6332         else
6333         {
6334             if(auto m = tuple(`SuperCall`,p.end) in memo)
6335                 return *m;
6336             else
6337             {
6338                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), "ES6.SuperCall"), "SuperCall")(p);
6339                 memo[tuple(`SuperCall`,p.end)] = result;
6340                 return result;
6341             }
6342         }
6343     }
6344 
6345     static TParseTree SuperCall(string s)
6346     {
6347         if(__ctfe)
6348         {
6349             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), "ES6.SuperCall")(TParseTree("", false,[], s));
6350         }
6351         else
6352         {
6353             memo = null;
6354             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, Arguments, Spacing)), "ES6.SuperCall"), "SuperCall")(TParseTree("", false,[], s));
6355         }
6356     }
6357     static string SuperCall(GetName g)
6358     {
6359         return "ES6.SuperCall";
6360     }
6361 
6362     static TParseTree SuperCallYield(TParseTree p)
6363     {
6364         if(__ctfe)
6365         {
6366             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), "ES6.SuperCallYield")(p);
6367         }
6368         else
6369         {
6370             if(auto m = tuple(`SuperCallYield`,p.end) in memo)
6371                 return *m;
6372             else
6373             {
6374                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), "ES6.SuperCallYield"), "SuperCallYield")(p);
6375                 memo[tuple(`SuperCallYield`,p.end)] = result;
6376                 return result;
6377             }
6378         }
6379     }
6380 
6381     static TParseTree SuperCallYield(string s)
6382     {
6383         if(__ctfe)
6384         {
6385             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), "ES6.SuperCallYield")(TParseTree("", false,[], s));
6386         }
6387         else
6388         {
6389             memo = null;
6390             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("super"), Spacing)), pegged.peg.wrapAround!(Spacing, ArgumentsYield, Spacing)), "ES6.SuperCallYield"), "SuperCallYield")(TParseTree("", false,[], s));
6391         }
6392     }
6393     static string SuperCallYield(GetName g)
6394     {
6395         return "ES6.SuperCallYield";
6396     }
6397 
6398     static TParseTree Arguments(TParseTree p)
6399     {
6400         if(__ctfe)
6401         {
6402             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing))), Spacing), "ES6.Arguments")(p);
6403         }
6404         else
6405         {
6406             if(auto m = tuple(`Arguments`,p.end) in memo)
6407                 return *m;
6408             else
6409             {
6410                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing))), Spacing), "ES6.Arguments"), "Arguments")(p);
6411                 memo[tuple(`Arguments`,p.end)] = result;
6412                 return result;
6413             }
6414         }
6415     }
6416 
6417     static TParseTree Arguments(string s)
6418     {
6419         if(__ctfe)
6420         {
6421             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing))), Spacing), "ES6.Arguments")(TParseTree("", false,[], s));
6422         }
6423         else
6424         {
6425             memo = null;
6426             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing))), Spacing), "ES6.Arguments"), "Arguments")(TParseTree("", false,[], s));
6427         }
6428     }
6429     static string Arguments(GetName g)
6430     {
6431         return "ES6.Arguments";
6432     }
6433 
6434     static TParseTree ArgumentsYield(TParseTree p)
6435     {
6436         if(__ctfe)
6437         {
6438             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing))), Spacing), "ES6.ArgumentsYield")(p);
6439         }
6440         else
6441         {
6442             if(auto m = tuple(`ArgumentsYield`,p.end) in memo)
6443                 return *m;
6444             else
6445             {
6446                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing))), Spacing), "ES6.ArgumentsYield"), "ArgumentsYield")(p);
6447                 memo[tuple(`ArgumentsYield`,p.end)] = result;
6448                 return result;
6449             }
6450         }
6451     }
6452 
6453     static TParseTree ArgumentsYield(string s)
6454     {
6455         if(__ctfe)
6456         {
6457             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing))), Spacing), "ES6.ArgumentsYield")(TParseTree("", false,[], s));
6458         }
6459         else
6460         {
6461             memo = null;
6462             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing))), Spacing), "ES6.ArgumentsYield"), "ArgumentsYield")(TParseTree("", false,[], s));
6463         }
6464     }
6465     static string ArgumentsYield(GetName g)
6466     {
6467         return "ES6.ArgumentsYield";
6468     }
6469 
6470     static TParseTree ArgumentList(TParseTree p)
6471     {
6472         if(__ctfe)
6473         {
6474             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing)), Spacing))), "ES6.ArgumentList")(p);
6475         }
6476         else
6477         {
6478             if(auto m = tuple(`ArgumentList`,p.end) in memo)
6479                 return *m;
6480             else
6481             {
6482                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing)), Spacing))), "ES6.ArgumentList"), "ArgumentList")(p);
6483                 memo[tuple(`ArgumentList`,p.end)] = result;
6484                 return result;
6485             }
6486         }
6487     }
6488 
6489     static TParseTree ArgumentList(string s)
6490     {
6491         if(__ctfe)
6492         {
6493             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing)), Spacing))), "ES6.ArgumentList")(TParseTree("", false,[], s));
6494         }
6495         else
6496         {
6497             memo = null;
6498             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentList, Spacing)), Spacing))), "ES6.ArgumentList"), "ArgumentList")(TParseTree("", false,[], s));
6499         }
6500     }
6501     static string ArgumentList(GetName g)
6502     {
6503         return "ES6.ArgumentList";
6504     }
6505 
6506     static TParseTree ArgumentListYield(TParseTree p)
6507     {
6508         if(__ctfe)
6509         {
6510             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing)), Spacing))), "ES6.ArgumentListYield")(p);
6511         }
6512         else
6513         {
6514             if(auto m = tuple(`ArgumentListYield`,p.end) in memo)
6515                 return *m;
6516             else
6517             {
6518                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing)), Spacing))), "ES6.ArgumentListYield"), "ArgumentListYield")(p);
6519                 memo[tuple(`ArgumentListYield`,p.end)] = result;
6520                 return result;
6521             }
6522         }
6523     }
6524 
6525     static TParseTree ArgumentListYield(string s)
6526     {
6527         if(__ctfe)
6528         {
6529             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing)), Spacing))), "ES6.ArgumentListYield")(TParseTree("", false,[], s));
6530         }
6531         else
6532         {
6533             memo = null;
6534             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), pegged.peg.wrapAround!(Spacing, ArgumentListYield, Spacing)), Spacing))), "ES6.ArgumentListYield"), "ArgumentListYield")(TParseTree("", false,[], s));
6535         }
6536     }
6537     static string ArgumentListYield(GetName g)
6538     {
6539         return "ES6.ArgumentListYield";
6540     }
6541 
6542     static TParseTree LeftHandSideExpression(TParseTree p)
6543     {
6544         if(__ctfe)
6545         {
6546             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpression, Spacing), pegged.peg.wrapAround!(Spacing, NewExpression, Spacing)), "ES6.LeftHandSideExpression")(p);
6547         }
6548         else
6549         {
6550             if(auto m = tuple(`LeftHandSideExpression`,p.end) in memo)
6551                 return *m;
6552             else
6553             {
6554                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpression, Spacing), pegged.peg.wrapAround!(Spacing, NewExpression, Spacing)), "ES6.LeftHandSideExpression"), "LeftHandSideExpression")(p);
6555                 memo[tuple(`LeftHandSideExpression`,p.end)] = result;
6556                 return result;
6557             }
6558         }
6559     }
6560 
6561     static TParseTree LeftHandSideExpression(string s)
6562     {
6563         if(__ctfe)
6564         {
6565             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpression, Spacing), pegged.peg.wrapAround!(Spacing, NewExpression, Spacing)), "ES6.LeftHandSideExpression")(TParseTree("", false,[], s));
6566         }
6567         else
6568         {
6569             memo = null;
6570             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpression, Spacing), pegged.peg.wrapAround!(Spacing, NewExpression, Spacing)), "ES6.LeftHandSideExpression"), "LeftHandSideExpression")(TParseTree("", false,[], s));
6571         }
6572     }
6573     static string LeftHandSideExpression(GetName g)
6574     {
6575         return "ES6.LeftHandSideExpression";
6576     }
6577 
6578     static TParseTree LeftHandSideExpressionYield(TParseTree p)
6579     {
6580         if(__ctfe)
6581         {
6582             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, NewExpressionYield, Spacing)), "ES6.LeftHandSideExpressionYield")(p);
6583         }
6584         else
6585         {
6586             if(auto m = tuple(`LeftHandSideExpressionYield`,p.end) in memo)
6587                 return *m;
6588             else
6589             {
6590                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, NewExpressionYield, Spacing)), "ES6.LeftHandSideExpressionYield"), "LeftHandSideExpressionYield")(p);
6591                 memo[tuple(`LeftHandSideExpressionYield`,p.end)] = result;
6592                 return result;
6593             }
6594         }
6595     }
6596 
6597     static TParseTree LeftHandSideExpressionYield(string s)
6598     {
6599         if(__ctfe)
6600         {
6601             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, NewExpressionYield, Spacing)), "ES6.LeftHandSideExpressionYield")(TParseTree("", false,[], s));
6602         }
6603         else
6604         {
6605             memo = null;
6606             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CallExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, NewExpressionYield, Spacing)), "ES6.LeftHandSideExpressionYield"), "LeftHandSideExpressionYield")(TParseTree("", false,[], s));
6607         }
6608     }
6609     static string LeftHandSideExpressionYield(GetName g)
6610     {
6611         return "ES6.LeftHandSideExpressionYield";
6612     }
6613 
6614     static TParseTree PostfixExpression(TParseTree p)
6615     {
6616         if(__ctfe)
6617         {
6618             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpression")(p);
6619         }
6620         else
6621         {
6622             if(auto m = tuple(`PostfixExpression`,p.end) in memo)
6623                 return *m;
6624             else
6625             {
6626                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpression"), "PostfixExpression")(p);
6627                 memo[tuple(`PostfixExpression`,p.end)] = result;
6628                 return result;
6629             }
6630         }
6631     }
6632 
6633     static TParseTree PostfixExpression(string s)
6634     {
6635         if(__ctfe)
6636         {
6637             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpression")(TParseTree("", false,[], s));
6638         }
6639         else
6640         {
6641             memo = null;
6642             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpression"), "PostfixExpression")(TParseTree("", false,[], s));
6643         }
6644     }
6645     static string PostfixExpression(GetName g)
6646     {
6647         return "ES6.PostfixExpression";
6648     }
6649 
6650     static TParseTree PostfixExpressionYield(TParseTree p)
6651     {
6652         if(__ctfe)
6653         {
6654             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpressionYield")(p);
6655         }
6656         else
6657         {
6658             if(auto m = tuple(`PostfixExpressionYield`,p.end) in memo)
6659                 return *m;
6660             else
6661             {
6662                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpressionYield"), "PostfixExpressionYield")(p);
6663                 memo[tuple(`PostfixExpressionYield`,p.end)] = result;
6664                 return result;
6665             }
6666         }
6667     }
6668 
6669     static TParseTree PostfixExpressionYield(string s)
6670     {
6671         if(__ctfe)
6672         {
6673             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpressionYield")(TParseTree("", false,[], s));
6674         }
6675         else
6676         {
6677             memo = null;
6678             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Spaces, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, PostfixOperator, Spacing), Spacing)), Spacing))), "ES6.PostfixExpressionYield"), "PostfixExpressionYield")(TParseTree("", false,[], s));
6679         }
6680     }
6681     static string PostfixExpressionYield(GetName g)
6682     {
6683         return "ES6.PostfixExpressionYield";
6684     }
6685 
6686     static TParseTree PostfixOperator(TParseTree p)
6687     {
6688         if(__ctfe)
6689         {
6690             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("++"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("--"), Spacing)), "ES6.PostfixOperator")(p);
6691         }
6692         else
6693         {
6694             if(auto m = tuple(`PostfixOperator`,p.end) in memo)
6695                 return *m;
6696             else
6697             {
6698                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("++"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("--"), Spacing)), "ES6.PostfixOperator"), "PostfixOperator")(p);
6699                 memo[tuple(`PostfixOperator`,p.end)] = result;
6700                 return result;
6701             }
6702         }
6703     }
6704 
6705     static TParseTree PostfixOperator(string s)
6706     {
6707         if(__ctfe)
6708         {
6709             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("++"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("--"), Spacing)), "ES6.PostfixOperator")(TParseTree("", false,[], s));
6710         }
6711         else
6712         {
6713             memo = null;
6714             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("++"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("--"), Spacing)), "ES6.PostfixOperator"), "PostfixOperator")(TParseTree("", false,[], s));
6715         }
6716     }
6717     static string PostfixOperator(GetName g)
6718     {
6719         return "ES6.PostfixOperator";
6720     }
6721 
6722     static TParseTree PrefixExpression(TParseTree p)
6723     {
6724         if(__ctfe)
6725         {
6726             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.keywords!("delete", "void", "typeof"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), pegged.peg.literal!("++"), pegged.peg.literal!("--"), pegged.peg.literal!("+"), pegged.peg.literal!("-"), pegged.peg.literal!("~"), pegged.peg.literal!("!")), "ES6.PrefixExpression")(p);
6727         }
6728         else
6729         {
6730             if(auto m = tuple(`PrefixExpression`,p.end) in memo)
6731                 return *m;
6732             else
6733             {
6734                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.keywords!("delete", "void", "typeof"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), pegged.peg.literal!("++"), pegged.peg.literal!("--"), pegged.peg.literal!("+"), pegged.peg.literal!("-"), pegged.peg.literal!("~"), pegged.peg.literal!("!")), "ES6.PrefixExpression"), "PrefixExpression")(p);
6735                 memo[tuple(`PrefixExpression`,p.end)] = result;
6736                 return result;
6737             }
6738         }
6739     }
6740 
6741     static TParseTree PrefixExpression(string s)
6742     {
6743         if(__ctfe)
6744         {
6745             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.keywords!("delete", "void", "typeof"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), pegged.peg.literal!("++"), pegged.peg.literal!("--"), pegged.peg.literal!("+"), pegged.peg.literal!("-"), pegged.peg.literal!("~"), pegged.peg.literal!("!")), "ES6.PrefixExpression")(TParseTree("", false,[], s));
6746         }
6747         else
6748         {
6749             memo = null;
6750             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.keywords!("delete", "void", "typeof"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), pegged.peg.literal!("++"), pegged.peg.literal!("--"), pegged.peg.literal!("+"), pegged.peg.literal!("-"), pegged.peg.literal!("~"), pegged.peg.literal!("!")), "ES6.PrefixExpression"), "PrefixExpression")(TParseTree("", false,[], s));
6751         }
6752     }
6753     static string PrefixExpression(GetName g)
6754     {
6755         return "ES6.PrefixExpression";
6756     }
6757 
6758     static TParseTree UnaryExpression(TParseTree p)
6759     {
6760         if(__ctfe)
6761         {
6762             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpression, Spacing)), "ES6.UnaryExpression")(p);
6763         }
6764         else
6765         {
6766             if(auto m = tuple(`UnaryExpression`,p.end) in memo)
6767                 return *m;
6768             else
6769             {
6770                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpression, Spacing)), "ES6.UnaryExpression"), "UnaryExpression")(p);
6771                 memo[tuple(`UnaryExpression`,p.end)] = result;
6772                 return result;
6773             }
6774         }
6775     }
6776 
6777     static TParseTree UnaryExpression(string s)
6778     {
6779         if(__ctfe)
6780         {
6781             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpression, Spacing)), "ES6.UnaryExpression")(TParseTree("", false,[], s));
6782         }
6783         else
6784         {
6785             memo = null;
6786             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpression, Spacing)), "ES6.UnaryExpression"), "UnaryExpression")(TParseTree("", false,[], s));
6787         }
6788     }
6789     static string UnaryExpression(GetName g)
6790     {
6791         return "ES6.UnaryExpression";
6792     }
6793 
6794     static TParseTree UnaryExpressionYield(TParseTree p)
6795     {
6796         if(__ctfe)
6797         {
6798             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpressionYield, Spacing)), "ES6.UnaryExpressionYield")(p);
6799         }
6800         else
6801         {
6802             if(auto m = tuple(`UnaryExpressionYield`,p.end) in memo)
6803                 return *m;
6804             else
6805             {
6806                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpressionYield, Spacing)), "ES6.UnaryExpressionYield"), "UnaryExpressionYield")(p);
6807                 memo[tuple(`UnaryExpressionYield`,p.end)] = result;
6808                 return result;
6809             }
6810         }
6811     }
6812 
6813     static TParseTree UnaryExpressionYield(string s)
6814     {
6815         if(__ctfe)
6816         {
6817             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpressionYield, Spacing)), "ES6.UnaryExpressionYield")(TParseTree("", false,[], s));
6818         }
6819         else
6820         {
6821             memo = null;
6822             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, PrefixExpression, Spacing)), pegged.peg.wrapAround!(Spacing, PostfixExpressionYield, Spacing)), "ES6.UnaryExpressionYield"), "UnaryExpressionYield")(TParseTree("", false,[], s));
6823         }
6824     }
6825     static string UnaryExpressionYield(GetName g)
6826     {
6827         return "ES6.UnaryExpressionYield";
6828     }
6829 
6830     static TParseTree RightHandSideExpression(TParseTree p)
6831     {
6832         if(__ctfe)
6833         {
6834             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpression, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpression")(p);
6835         }
6836         else
6837         {
6838             if(auto m = tuple(`RightHandSideExpression`,p.end) in memo)
6839                 return *m;
6840             else
6841             {
6842                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpression, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpression"), "RightHandSideExpression")(p);
6843                 memo[tuple(`RightHandSideExpression`,p.end)] = result;
6844                 return result;
6845             }
6846         }
6847     }
6848 
6849     static TParseTree RightHandSideExpression(string s)
6850     {
6851         if(__ctfe)
6852         {
6853             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpression, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpression")(TParseTree("", false,[], s));
6854         }
6855         else
6856         {
6857             memo = null;
6858             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpression, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpression"), "RightHandSideExpression")(TParseTree("", false,[], s));
6859         }
6860     }
6861     static string RightHandSideExpression(GetName g)
6862     {
6863         return "ES6.RightHandSideExpression";
6864     }
6865 
6866     static TParseTree RightHandSideExpressionIn(TParseTree p)
6867     {
6868         if(__ctfe)
6869         {
6870             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpressionIn")(p);
6871         }
6872         else
6873         {
6874             if(auto m = tuple(`RightHandSideExpressionIn`,p.end) in memo)
6875                 return *m;
6876             else
6877             {
6878                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpressionIn"), "RightHandSideExpressionIn")(p);
6879                 memo[tuple(`RightHandSideExpressionIn`,p.end)] = result;
6880                 return result;
6881             }
6882         }
6883     }
6884 
6885     static TParseTree RightHandSideExpressionIn(string s)
6886     {
6887         if(__ctfe)
6888         {
6889             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpressionIn")(TParseTree("", false,[], s));
6890         }
6891         else
6892         {
6893             memo = null;
6894             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), "ES6.RightHandSideExpressionIn"), "RightHandSideExpressionIn")(TParseTree("", false,[], s));
6895         }
6896     }
6897     static string RightHandSideExpressionIn(GetName g)
6898     {
6899         return "ES6.RightHandSideExpressionIn";
6900     }
6901 
6902     static TParseTree RightHandSideExpressionYield(TParseTree p)
6903     {
6904         if(__ctfe)
6905         {
6906             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionYield")(p);
6907         }
6908         else
6909         {
6910             if(auto m = tuple(`RightHandSideExpressionYield`,p.end) in memo)
6911                 return *m;
6912             else
6913             {
6914                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionYield"), "RightHandSideExpressionYield")(p);
6915                 memo[tuple(`RightHandSideExpressionYield`,p.end)] = result;
6916                 return result;
6917             }
6918         }
6919     }
6920 
6921     static TParseTree RightHandSideExpressionYield(string s)
6922     {
6923         if(__ctfe)
6924         {
6925             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionYield")(TParseTree("", false,[], s));
6926         }
6927         else
6928         {
6929             memo = null;
6930             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionYield"), "RightHandSideExpressionYield")(TParseTree("", false,[], s));
6931         }
6932     }
6933     static string RightHandSideExpressionYield(GetName g)
6934     {
6935         return "ES6.RightHandSideExpressionYield";
6936     }
6937 
6938     static TParseTree RightHandSideExpressionInYield(TParseTree p)
6939     {
6940         if(__ctfe)
6941         {
6942             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionInYield")(p);
6943         }
6944         else
6945         {
6946             if(auto m = tuple(`RightHandSideExpressionInYield`,p.end) in memo)
6947                 return *m;
6948             else
6949             {
6950                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionInYield"), "RightHandSideExpressionInYield")(p);
6951                 memo[tuple(`RightHandSideExpressionInYield`,p.end)] = result;
6952                 return result;
6953             }
6954         }
6955     }
6956 
6957     static TParseTree RightHandSideExpressionInYield(string s)
6958     {
6959         if(__ctfe)
6960         {
6961             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionInYield")(TParseTree("", false,[], s));
6962         }
6963         else
6964         {
6965             memo = null;
6966             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BinaryExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), "ES6.RightHandSideExpressionInYield"), "RightHandSideExpressionInYield")(TParseTree("", false,[], s));
6967         }
6968     }
6969     static string RightHandSideExpressionInYield(GetName g)
6970     {
6971         return "ES6.RightHandSideExpressionInYield";
6972     }
6973 
6974     static TParseTree BinaryExpression(TParseTree p)
6975     {
6976         if(__ctfe)
6977         {
6978             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpression")(p);
6979         }
6980         else
6981         {
6982             if(auto m = tuple(`BinaryExpression`,p.end) in memo)
6983                 return *m;
6984             else
6985             {
6986                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpression"), "BinaryExpression")(p);
6987                 memo[tuple(`BinaryExpression`,p.end)] = result;
6988                 return result;
6989             }
6990         }
6991     }
6992 
6993     static TParseTree BinaryExpression(string s)
6994     {
6995         if(__ctfe)
6996         {
6997             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpression")(TParseTree("", false,[], s));
6998         }
6999         else
7000         {
7001             memo = null;
7002             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpression"), "BinaryExpression")(TParseTree("", false,[], s));
7003         }
7004     }
7005     static string BinaryExpression(GetName g)
7006     {
7007         return "ES6.BinaryExpression";
7008     }
7009 
7010     static TParseTree BinaryExpressionIn(TParseTree p)
7011     {
7012         if(__ctfe)
7013         {
7014             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpressionIn")(p);
7015         }
7016         else
7017         {
7018             if(auto m = tuple(`BinaryExpressionIn`,p.end) in memo)
7019                 return *m;
7020             else
7021             {
7022                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpressionIn"), "BinaryExpressionIn")(p);
7023                 memo[tuple(`BinaryExpressionIn`,p.end)] = result;
7024                 return result;
7025             }
7026         }
7027     }
7028 
7029     static TParseTree BinaryExpressionIn(string s)
7030     {
7031         if(__ctfe)
7032         {
7033             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpressionIn")(TParseTree("", false,[], s));
7034         }
7035         else
7036         {
7037             memo = null;
7038             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpression, Spacing)), Spacing))), "ES6.BinaryExpressionIn"), "BinaryExpressionIn")(TParseTree("", false,[], s));
7039         }
7040     }
7041     static string BinaryExpressionIn(GetName g)
7042     {
7043         return "ES6.BinaryExpressionIn";
7044     }
7045 
7046     static TParseTree BinaryExpressionYield(TParseTree p)
7047     {
7048         if(__ctfe)
7049         {
7050             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionYield")(p);
7051         }
7052         else
7053         {
7054             if(auto m = tuple(`BinaryExpressionYield`,p.end) in memo)
7055                 return *m;
7056             else
7057             {
7058                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionYield"), "BinaryExpressionYield")(p);
7059                 memo[tuple(`BinaryExpressionYield`,p.end)] = result;
7060                 return result;
7061             }
7062         }
7063     }
7064 
7065     static TParseTree BinaryExpressionYield(string s)
7066     {
7067         if(__ctfe)
7068         {
7069             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionYield")(TParseTree("", false,[], s));
7070         }
7071         else
7072         {
7073             memo = null;
7074             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperator, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionYield"), "BinaryExpressionYield")(TParseTree("", false,[], s));
7075         }
7076     }
7077     static string BinaryExpressionYield(GetName g)
7078     {
7079         return "ES6.BinaryExpressionYield";
7080     }
7081 
7082     static TParseTree BinaryExpressionInYield(TParseTree p)
7083     {
7084         if(__ctfe)
7085         {
7086             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionInYield")(p);
7087         }
7088         else
7089         {
7090             if(auto m = tuple(`BinaryExpressionInYield`,p.end) in memo)
7091                 return *m;
7092             else
7093             {
7094                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionInYield"), "BinaryExpressionInYield")(p);
7095                 memo[tuple(`BinaryExpressionInYield`,p.end)] = result;
7096                 return result;
7097             }
7098         }
7099     }
7100 
7101     static TParseTree BinaryExpressionInYield(string s)
7102     {
7103         if(__ctfe)
7104         {
7105             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionInYield")(TParseTree("", false,[], s));
7106         }
7107         else
7108         {
7109             memo = null;
7110             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing), pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ExpressionOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, UnaryExpressionYield, Spacing)), Spacing))), "ES6.BinaryExpressionInYield"), "BinaryExpressionInYield")(TParseTree("", false,[], s));
7111         }
7112     }
7113     static string BinaryExpressionInYield(GetName g)
7114     {
7115         return "ES6.BinaryExpressionInYield";
7116     }
7117 
7118     static TParseTree ExpressionOperator(TParseTree p)
7119     {
7120         if(__ctfe)
7121         {
7122             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperator, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperator")(p);
7123         }
7124         else
7125         {
7126             if(auto m = tuple(`ExpressionOperator`,p.end) in memo)
7127                 return *m;
7128             else
7129             {
7130                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperator, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperator"), "ExpressionOperator")(p);
7131                 memo[tuple(`ExpressionOperator`,p.end)] = result;
7132                 return result;
7133             }
7134         }
7135     }
7136 
7137     static TParseTree ExpressionOperator(string s)
7138     {
7139         if(__ctfe)
7140         {
7141             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperator, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperator")(TParseTree("", false,[], s));
7142         }
7143         else
7144         {
7145             memo = null;
7146             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperator, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperator"), "ExpressionOperator")(TParseTree("", false,[], s));
7147         }
7148     }
7149     static string ExpressionOperator(GetName g)
7150     {
7151         return "ES6.ExpressionOperator";
7152     }
7153 
7154     static TParseTree ExpressionOperatorIn(TParseTree p)
7155     {
7156         if(__ctfe)
7157         {
7158             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperatorIn")(p);
7159         }
7160         else
7161         {
7162             if(auto m = tuple(`ExpressionOperatorIn`,p.end) in memo)
7163                 return *m;
7164             else
7165             {
7166                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperatorIn"), "ExpressionOperatorIn")(p);
7167                 memo[tuple(`ExpressionOperatorIn`,p.end)] = result;
7168                 return result;
7169             }
7170         }
7171     }
7172 
7173     static TParseTree ExpressionOperatorIn(string s)
7174     {
7175         if(__ctfe)
7176         {
7177             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperatorIn")(TParseTree("", false,[], s));
7178         }
7179         else
7180         {
7181             memo = null;
7182             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, LogicalOperator, Spacing), pegged.peg.wrapAround!(Spacing, BitwiseOperator, Spacing), pegged.peg.wrapAround!(Spacing, EqualityOperator, Spacing), pegged.peg.wrapAround!(Spacing, ShiftOperator, Spacing), pegged.peg.wrapAround!(Spacing, RelationalOperatorIn, Spacing), pegged.peg.wrapAround!(Spacing, AdditiveOperator, Spacing), pegged.peg.wrapAround!(Spacing, MultiplicativeOperator, Spacing)), "ES6.ExpressionOperatorIn"), "ExpressionOperatorIn")(TParseTree("", false,[], s));
7183         }
7184     }
7185     static string ExpressionOperatorIn(GetName g)
7186     {
7187         return "ES6.ExpressionOperatorIn";
7188     }
7189 
7190     static TParseTree LogicalOperator(TParseTree p)
7191     {
7192         if(__ctfe)
7193         {
7194             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("||"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&&"), Spacing)), "ES6.LogicalOperator")(p);
7195         }
7196         else
7197         {
7198             if(auto m = tuple(`LogicalOperator`,p.end) in memo)
7199                 return *m;
7200             else
7201             {
7202                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("||"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&&"), Spacing)), "ES6.LogicalOperator"), "LogicalOperator")(p);
7203                 memo[tuple(`LogicalOperator`,p.end)] = result;
7204                 return result;
7205             }
7206         }
7207     }
7208 
7209     static TParseTree LogicalOperator(string s)
7210     {
7211         if(__ctfe)
7212         {
7213             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("||"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&&"), Spacing)), "ES6.LogicalOperator")(TParseTree("", false,[], s));
7214         }
7215         else
7216         {
7217             memo = null;
7218             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("||"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&&"), Spacing)), "ES6.LogicalOperator"), "LogicalOperator")(TParseTree("", false,[], s));
7219         }
7220     }
7221     static string LogicalOperator(GetName g)
7222     {
7223         return "ES6.LogicalOperator";
7224     }
7225 
7226     static TParseTree BitwiseOperator(TParseTree p)
7227     {
7228         if(__ctfe)
7229         {
7230             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&"), Spacing)), "ES6.BitwiseOperator")(p);
7231         }
7232         else
7233         {
7234             if(auto m = tuple(`BitwiseOperator`,p.end) in memo)
7235                 return *m;
7236             else
7237             {
7238                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&"), Spacing)), "ES6.BitwiseOperator"), "BitwiseOperator")(p);
7239                 memo[tuple(`BitwiseOperator`,p.end)] = result;
7240                 return result;
7241             }
7242         }
7243     }
7244 
7245     static TParseTree BitwiseOperator(string s)
7246     {
7247         if(__ctfe)
7248         {
7249             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&"), Spacing)), "ES6.BitwiseOperator")(TParseTree("", false,[], s));
7250         }
7251         else
7252         {
7253             memo = null;
7254             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&"), Spacing)), "ES6.BitwiseOperator"), "BitwiseOperator")(TParseTree("", false,[], s));
7255         }
7256     }
7257     static string BitwiseOperator(GetName g)
7258     {
7259         return "ES6.BitwiseOperator";
7260     }
7261 
7262     static TParseTree EqualityOperator(TParseTree p)
7263     {
7264         if(__ctfe)
7265         {
7266             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("==="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!="), Spacing)), "ES6.EqualityOperator")(p);
7267         }
7268         else
7269         {
7270             if(auto m = tuple(`EqualityOperator`,p.end) in memo)
7271                 return *m;
7272             else
7273             {
7274                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("==="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!="), Spacing)), "ES6.EqualityOperator"), "EqualityOperator")(p);
7275                 memo[tuple(`EqualityOperator`,p.end)] = result;
7276                 return result;
7277             }
7278         }
7279     }
7280 
7281     static TParseTree EqualityOperator(string s)
7282     {
7283         if(__ctfe)
7284         {
7285             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("==="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!="), Spacing)), "ES6.EqualityOperator")(TParseTree("", false,[], s));
7286         }
7287         else
7288         {
7289             memo = null;
7290             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("==="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("!="), Spacing)), "ES6.EqualityOperator"), "EqualityOperator")(TParseTree("", false,[], s));
7291         }
7292     }
7293     static string EqualityOperator(GetName g)
7294     {
7295         return "ES6.EqualityOperator";
7296     }
7297 
7298     static TParseTree RelationalOperator(TParseTree p)
7299     {
7300         if(__ctfe)
7301         {
7302             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing)), "ES6.RelationalOperator")(p);
7303         }
7304         else
7305         {
7306             if(auto m = tuple(`RelationalOperator`,p.end) in memo)
7307                 return *m;
7308             else
7309             {
7310                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing)), "ES6.RelationalOperator"), "RelationalOperator")(p);
7311                 memo[tuple(`RelationalOperator`,p.end)] = result;
7312                 return result;
7313             }
7314         }
7315     }
7316 
7317     static TParseTree RelationalOperator(string s)
7318     {
7319         if(__ctfe)
7320         {
7321             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing)), "ES6.RelationalOperator")(TParseTree("", false,[], s));
7322         }
7323         else
7324         {
7325             memo = null;
7326             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing)), "ES6.RelationalOperator"), "RelationalOperator")(TParseTree("", false,[], s));
7327         }
7328     }
7329     static string RelationalOperator(GetName g)
7330     {
7331         return "ES6.RelationalOperator";
7332     }
7333 
7334     static TParseTree RelationalOperatorIn(TParseTree p)
7335     {
7336         if(__ctfe)
7337         {
7338             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing)), "ES6.RelationalOperatorIn")(p);
7339         }
7340         else
7341         {
7342             if(auto m = tuple(`RelationalOperatorIn`,p.end) in memo)
7343                 return *m;
7344             else
7345             {
7346                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing)), "ES6.RelationalOperatorIn"), "RelationalOperatorIn")(p);
7347                 memo[tuple(`RelationalOperatorIn`,p.end)] = result;
7348                 return result;
7349             }
7350         }
7351     }
7352 
7353     static TParseTree RelationalOperatorIn(string s)
7354     {
7355         if(__ctfe)
7356         {
7357             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing)), "ES6.RelationalOperatorIn")(TParseTree("", false,[], s));
7358         }
7359         else
7360         {
7361             memo = null;
7362             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("instanceof"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing)), "ES6.RelationalOperatorIn"), "RelationalOperatorIn")(TParseTree("", false,[], s));
7363         }
7364     }
7365     static string RelationalOperatorIn(GetName g)
7366     {
7367         return "ES6.RelationalOperatorIn";
7368     }
7369 
7370     static TParseTree ShiftOperator(TParseTree p)
7371     {
7372         if(__ctfe)
7373         {
7374             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>"), Spacing)), "ES6.ShiftOperator")(p);
7375         }
7376         else
7377         {
7378             if(auto m = tuple(`ShiftOperator`,p.end) in memo)
7379                 return *m;
7380             else
7381             {
7382                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>"), Spacing)), "ES6.ShiftOperator"), "ShiftOperator")(p);
7383                 memo[tuple(`ShiftOperator`,p.end)] = result;
7384                 return result;
7385             }
7386         }
7387     }
7388 
7389     static TParseTree ShiftOperator(string s)
7390     {
7391         if(__ctfe)
7392         {
7393             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>"), Spacing)), "ES6.ShiftOperator")(TParseTree("", false,[], s));
7394         }
7395         else
7396         {
7397             memo = null;
7398             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>"), Spacing)), "ES6.ShiftOperator"), "ShiftOperator")(TParseTree("", false,[], s));
7399         }
7400     }
7401     static string ShiftOperator(GetName g)
7402     {
7403         return "ES6.ShiftOperator";
7404     }
7405 
7406     static TParseTree AdditiveOperator(TParseTree p)
7407     {
7408         if(__ctfe)
7409         {
7410             return         pegged.peg.defined!(pegged.peg.keywords!("+", "-"), "ES6.AdditiveOperator")(p);
7411         }
7412         else
7413         {
7414             if(auto m = tuple(`AdditiveOperator`,p.end) in memo)
7415                 return *m;
7416             else
7417             {
7418                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.keywords!("+", "-"), "ES6.AdditiveOperator"), "AdditiveOperator")(p);
7419                 memo[tuple(`AdditiveOperator`,p.end)] = result;
7420                 return result;
7421             }
7422         }
7423     }
7424 
7425     static TParseTree AdditiveOperator(string s)
7426     {
7427         if(__ctfe)
7428         {
7429             return         pegged.peg.defined!(pegged.peg.keywords!("+", "-"), "ES6.AdditiveOperator")(TParseTree("", false,[], s));
7430         }
7431         else
7432         {
7433             memo = null;
7434             return hooked!(pegged.peg.defined!(pegged.peg.keywords!("+", "-"), "ES6.AdditiveOperator"), "AdditiveOperator")(TParseTree("", false,[], s));
7435         }
7436     }
7437     static string AdditiveOperator(GetName g)
7438     {
7439         return "ES6.AdditiveOperator";
7440     }
7441 
7442     static TParseTree MultiplicativeOperator(TParseTree p)
7443     {
7444         if(__ctfe)
7445         {
7446             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%"), Spacing)), "ES6.MultiplicativeOperator")(p);
7447         }
7448         else
7449         {
7450             if(auto m = tuple(`MultiplicativeOperator`,p.end) in memo)
7451                 return *m;
7452             else
7453             {
7454                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%"), Spacing)), "ES6.MultiplicativeOperator"), "MultiplicativeOperator")(p);
7455                 memo[tuple(`MultiplicativeOperator`,p.end)] = result;
7456                 return result;
7457             }
7458         }
7459     }
7460 
7461     static TParseTree MultiplicativeOperator(string s)
7462     {
7463         if(__ctfe)
7464         {
7465             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%"), Spacing)), "ES6.MultiplicativeOperator")(TParseTree("", false,[], s));
7466         }
7467         else
7468         {
7469             memo = null;
7470             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%"), Spacing)), "ES6.MultiplicativeOperator"), "MultiplicativeOperator")(TParseTree("", false,[], s));
7471         }
7472     }
7473     static string MultiplicativeOperator(GetName g)
7474     {
7475         return "ES6.MultiplicativeOperator";
7476     }
7477 
7478     static TParseTree ConditionalExpression(TParseTree p)
7479     {
7480         if(__ctfe)
7481         {
7482             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.ConditionalExpression")(p);
7483         }
7484         else
7485         {
7486             if(auto m = tuple(`ConditionalExpression`,p.end) in memo)
7487                 return *m;
7488             else
7489             {
7490                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.ConditionalExpression"), "ConditionalExpression")(p);
7491                 memo[tuple(`ConditionalExpression`,p.end)] = result;
7492                 return result;
7493             }
7494         }
7495     }
7496 
7497     static TParseTree ConditionalExpression(string s)
7498     {
7499         if(__ctfe)
7500         {
7501             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.ConditionalExpression")(TParseTree("", false,[], s));
7502         }
7503         else
7504         {
7505             memo = null;
7506             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpression, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.ConditionalExpression"), "ConditionalExpression")(TParseTree("", false,[], s));
7507         }
7508     }
7509     static string ConditionalExpression(GetName g)
7510     {
7511         return "ES6.ConditionalExpression";
7512     }
7513 
7514     static TParseTree ConditionalExpressionIn(TParseTree p)
7515     {
7516         if(__ctfe)
7517         {
7518             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionIn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ConditionalExpressionIn")(p);
7519         }
7520         else
7521         {
7522             if(auto m = tuple(`ConditionalExpressionIn`,p.end) in memo)
7523                 return *m;
7524             else
7525             {
7526                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionIn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ConditionalExpressionIn"), "ConditionalExpressionIn")(p);
7527                 memo[tuple(`ConditionalExpressionIn`,p.end)] = result;
7528                 return result;
7529             }
7530         }
7531     }
7532 
7533     static TParseTree ConditionalExpressionIn(string s)
7534     {
7535         if(__ctfe)
7536         {
7537             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionIn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ConditionalExpressionIn")(TParseTree("", false,[], s));
7538         }
7539         else
7540         {
7541             memo = null;
7542             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionIn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ConditionalExpressionIn"), "ConditionalExpressionIn")(TParseTree("", false,[], s));
7543         }
7544     }
7545     static string ConditionalExpressionIn(GetName g)
7546     {
7547         return "ES6.ConditionalExpressionIn";
7548     }
7549 
7550     static TParseTree ConditionalExpressionYield(TParseTree p)
7551     {
7552         if(__ctfe)
7553         {
7554             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ConditionalExpressionYield")(p);
7555         }
7556         else
7557         {
7558             if(auto m = tuple(`ConditionalExpressionYield`,p.end) in memo)
7559                 return *m;
7560             else
7561             {
7562                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ConditionalExpressionYield"), "ConditionalExpressionYield")(p);
7563                 memo[tuple(`ConditionalExpressionYield`,p.end)] = result;
7564                 return result;
7565             }
7566         }
7567     }
7568 
7569     static TParseTree ConditionalExpressionYield(string s)
7570     {
7571         if(__ctfe)
7572         {
7573             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ConditionalExpressionYield")(TParseTree("", false,[], s));
7574         }
7575         else
7576         {
7577             memo = null;
7578             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ConditionalExpressionYield"), "ConditionalExpressionYield")(TParseTree("", false,[], s));
7579         }
7580     }
7581     static string ConditionalExpressionYield(GetName g)
7582     {
7583         return "ES6.ConditionalExpressionYield";
7584     }
7585 
7586     static TParseTree ConditionalExpressionInYield(TParseTree p)
7587     {
7588         if(__ctfe)
7589         {
7590             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionInYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ConditionalExpressionInYield")(p);
7591         }
7592         else
7593         {
7594             if(auto m = tuple(`ConditionalExpressionInYield`,p.end) in memo)
7595                 return *m;
7596             else
7597             {
7598                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionInYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ConditionalExpressionInYield"), "ConditionalExpressionInYield")(p);
7599                 memo[tuple(`ConditionalExpressionInYield`,p.end)] = result;
7600                 return result;
7601             }
7602         }
7603     }
7604 
7605     static TParseTree ConditionalExpressionInYield(string s)
7606     {
7607         if(__ctfe)
7608         {
7609             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionInYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ConditionalExpressionInYield")(TParseTree("", false,[], s));
7610         }
7611         else
7612         {
7613             memo = null;
7614             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, RightHandSideExpressionInYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("?"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ConditionalExpressionInYield"), "ConditionalExpressionInYield")(TParseTree("", false,[], s));
7615         }
7616     }
7617     static string ConditionalExpressionInYield(GetName g)
7618     {
7619         return "ES6.ConditionalExpressionInYield";
7620     }
7621 
7622     static TParseTree AssignmentExpression(TParseTree p)
7623     {
7624         if(__ctfe)
7625         {
7626             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpression")(p);
7627         }
7628         else
7629         {
7630             if(auto m = tuple(`AssignmentExpression`,p.end) in memo)
7631                 return *m;
7632             else
7633             {
7634                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpression"), "AssignmentExpression")(p);
7635                 memo[tuple(`AssignmentExpression`,p.end)] = result;
7636                 return result;
7637             }
7638         }
7639     }
7640 
7641     static TParseTree AssignmentExpression(string s)
7642     {
7643         if(__ctfe)
7644         {
7645             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpression")(TParseTree("", false,[], s));
7646         }
7647         else
7648         {
7649             memo = null;
7650             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpression"), "AssignmentExpression")(TParseTree("", false,[], s));
7651         }
7652     }
7653     static string AssignmentExpression(GetName g)
7654     {
7655         return "ES6.AssignmentExpression";
7656     }
7657 
7658     static TParseTree AssignmentExpressionIn(TParseTree p)
7659     {
7660         if(__ctfe)
7661         {
7662             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionIn")(p);
7663         }
7664         else
7665         {
7666             if(auto m = tuple(`AssignmentExpressionIn`,p.end) in memo)
7667                 return *m;
7668             else
7669             {
7670                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionIn"), "AssignmentExpressionIn")(p);
7671                 memo[tuple(`AssignmentExpressionIn`,p.end)] = result;
7672                 return result;
7673             }
7674         }
7675     }
7676 
7677     static TParseTree AssignmentExpressionIn(string s)
7678     {
7679         if(__ctfe)
7680         {
7681             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionIn")(TParseTree("", false,[], s));
7682         }
7683         else
7684         {
7685             memo = null;
7686             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionIn, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionIn, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionIn"), "AssignmentExpressionIn")(TParseTree("", false,[], s));
7687         }
7688     }
7689     static string AssignmentExpressionIn(GetName g)
7690     {
7691         return "ES6.AssignmentExpressionIn";
7692     }
7693 
7694     static TParseTree AssignmentExpressionYield(TParseTree p)
7695     {
7696         if(__ctfe)
7697         {
7698             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionYield")(p);
7699         }
7700         else
7701         {
7702             if(auto m = tuple(`AssignmentExpressionYield`,p.end) in memo)
7703                 return *m;
7704             else
7705             {
7706                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionYield"), "AssignmentExpressionYield")(p);
7707                 memo[tuple(`AssignmentExpressionYield`,p.end)] = result;
7708                 return result;
7709             }
7710         }
7711     }
7712 
7713     static TParseTree AssignmentExpressionYield(string s)
7714     {
7715         if(__ctfe)
7716         {
7717             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionYield")(TParseTree("", false,[], s));
7718         }
7719         else
7720         {
7721             memo = null;
7722             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpression, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionYield"), "AssignmentExpressionYield")(TParseTree("", false,[], s));
7723         }
7724     }
7725     static string AssignmentExpressionYield(GetName g)
7726     {
7727         return "ES6.AssignmentExpressionYield";
7728     }
7729 
7730     static TParseTree AssignmentExpressionInYield(TParseTree p)
7731     {
7732         if(__ctfe)
7733         {
7734             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionInYield")(p);
7735         }
7736         else
7737         {
7738             if(auto m = tuple(`AssignmentExpressionInYield`,p.end) in memo)
7739                 return *m;
7740             else
7741             {
7742                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionInYield"), "AssignmentExpressionInYield")(p);
7743                 memo[tuple(`AssignmentExpressionInYield`,p.end)] = result;
7744                 return result;
7745             }
7746         }
7747     }
7748 
7749     static TParseTree AssignmentExpressionInYield(string s)
7750     {
7751         if(__ctfe)
7752         {
7753             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionInYield")(TParseTree("", false,[], s));
7754         }
7755         else
7756         {
7757             memo = null;
7758             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentOperator, Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, YieldExpressionIn, Spacing), pegged.peg.wrapAround!(Spacing, ArrowFunctionInYield, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpressionInYield, Spacing)), Spacing)), Spacing)), "ES6.AssignmentExpressionInYield"), "AssignmentExpressionInYield")(TParseTree("", false,[], s));
7759         }
7760     }
7761     static string AssignmentExpressionInYield(GetName g)
7762     {
7763         return "ES6.AssignmentExpressionInYield";
7764     }
7765 
7766     static TParseTree AssignmentOperator(TParseTree p)
7767     {
7768         if(__ctfe)
7769         {
7770             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("+="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("-="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|="), Spacing)), "ES6.AssignmentOperator")(p);
7771         }
7772         else
7773         {
7774             if(auto m = tuple(`AssignmentOperator`,p.end) in memo)
7775                 return *m;
7776             else
7777             {
7778                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("+="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("-="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|="), Spacing)), "ES6.AssignmentOperator"), "AssignmentOperator")(p);
7779                 memo[tuple(`AssignmentOperator`,p.end)] = result;
7780                 return result;
7781             }
7782         }
7783     }
7784 
7785     static TParseTree AssignmentOperator(string s)
7786     {
7787         if(__ctfe)
7788         {
7789             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("+="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("-="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|="), Spacing)), "ES6.AssignmentOperator")(TParseTree("", false,[], s));
7790         }
7791         else
7792         {
7793             memo = null;
7794             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("=="), Spacing)), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("%="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("+="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("-="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<<="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">>>="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("&="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("^="), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("|="), Spacing)), "ES6.AssignmentOperator"), "AssignmentOperator")(TParseTree("", false,[], s));
7795         }
7796     }
7797     static string AssignmentOperator(GetName g)
7798     {
7799         return "ES6.AssignmentOperator";
7800     }
7801 
7802     static TParseTree Comma(TParseTree p)
7803     {
7804         if(__ctfe)
7805         {
7806             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), "ES6.Comma")(p);
7807         }
7808         else
7809         {
7810             if(auto m = tuple(`Comma`,p.end) in memo)
7811                 return *m;
7812             else
7813             {
7814                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), "ES6.Comma"), "Comma")(p);
7815                 memo[tuple(`Comma`,p.end)] = result;
7816                 return result;
7817             }
7818         }
7819     }
7820 
7821     static TParseTree Comma(string s)
7822     {
7823         if(__ctfe)
7824         {
7825             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), "ES6.Comma")(TParseTree("", false,[], s));
7826         }
7827         else
7828         {
7829             memo = null;
7830             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing), "ES6.Comma"), "Comma")(TParseTree("", false,[], s));
7831         }
7832     }
7833     static string Comma(GetName g)
7834     {
7835         return "ES6.Comma";
7836     }
7837 
7838     static TParseTree Expression(TParseTree p)
7839     {
7840         if(__ctfe)
7841         {
7842             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.Expression")(p);
7843         }
7844         else
7845         {
7846             if(auto m = tuple(`Expression`,p.end) in memo)
7847                 return *m;
7848             else
7849             {
7850                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.Expression"), "Expression")(p);
7851                 memo[tuple(`Expression`,p.end)] = result;
7852                 return result;
7853             }
7854         }
7855     }
7856 
7857     static TParseTree Expression(string s)
7858     {
7859         if(__ctfe)
7860         {
7861             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.Expression")(TParseTree("", false,[], s));
7862         }
7863         else
7864         {
7865             memo = null;
7866             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing))), "ES6.Expression"), "Expression")(TParseTree("", false,[], s));
7867         }
7868     }
7869     static string Expression(GetName g)
7870     {
7871         return "ES6.Expression";
7872     }
7873 
7874     static TParseTree ExpressionIn(TParseTree p)
7875     {
7876         if(__ctfe)
7877         {
7878             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ExpressionIn")(p);
7879         }
7880         else
7881         {
7882             if(auto m = tuple(`ExpressionIn`,p.end) in memo)
7883                 return *m;
7884             else
7885             {
7886                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ExpressionIn"), "ExpressionIn")(p);
7887                 memo[tuple(`ExpressionIn`,p.end)] = result;
7888                 return result;
7889             }
7890         }
7891     }
7892 
7893     static TParseTree ExpressionIn(string s)
7894     {
7895         if(__ctfe)
7896         {
7897             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ExpressionIn")(TParseTree("", false,[], s));
7898         }
7899         else
7900         {
7901             memo = null;
7902             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing))), "ES6.ExpressionIn"), "ExpressionIn")(TParseTree("", false,[], s));
7903         }
7904     }
7905     static string ExpressionIn(GetName g)
7906     {
7907         return "ES6.ExpressionIn";
7908     }
7909 
7910     static TParseTree ExpressionYield(TParseTree p)
7911     {
7912         if(__ctfe)
7913         {
7914             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ExpressionYield")(p);
7915         }
7916         else
7917         {
7918             if(auto m = tuple(`ExpressionYield`,p.end) in memo)
7919                 return *m;
7920             else
7921             {
7922                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ExpressionYield"), "ExpressionYield")(p);
7923                 memo[tuple(`ExpressionYield`,p.end)] = result;
7924                 return result;
7925             }
7926         }
7927     }
7928 
7929     static TParseTree ExpressionYield(string s)
7930     {
7931         if(__ctfe)
7932         {
7933             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ExpressionYield")(TParseTree("", false,[], s));
7934         }
7935         else
7936         {
7937             memo = null;
7938             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionYield, Spacing)), Spacing))), "ES6.ExpressionYield"), "ExpressionYield")(TParseTree("", false,[], s));
7939         }
7940     }
7941     static string ExpressionYield(GetName g)
7942     {
7943         return "ES6.ExpressionYield";
7944     }
7945 
7946     static TParseTree ExpressionInYield(TParseTree p)
7947     {
7948         if(__ctfe)
7949         {
7950             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ExpressionInYield")(p);
7951         }
7952         else
7953         {
7954             if(auto m = tuple(`ExpressionInYield`,p.end) in memo)
7955                 return *m;
7956             else
7957             {
7958                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ExpressionInYield"), "ExpressionInYield")(p);
7959                 memo[tuple(`ExpressionInYield`,p.end)] = result;
7960                 return result;
7961             }
7962         }
7963     }
7964 
7965     static TParseTree ExpressionInYield(string s)
7966     {
7967         if(__ctfe)
7968         {
7969             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ExpressionInYield")(TParseTree("", false,[], s));
7970         }
7971         else
7972         {
7973             memo = null;
7974             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, Comma, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing))), "ES6.ExpressionInYield"), "ExpressionInYield")(TParseTree("", false,[], s));
7975         }
7976     }
7977     static string ExpressionInYield(GetName g)
7978     {
7979         return "ES6.ExpressionInYield";
7980     }
7981 
7982     static TParseTree Statement(TParseTree p)
7983     {
7984         if(__ctfe)
7985         {
7986             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatement, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatement, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatement, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatement, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatement, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.Statement")(p);
7987         }
7988         else
7989         {
7990             if(auto m = tuple(`Statement`,p.end) in memo)
7991                 return *m;
7992             else
7993             {
7994                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatement, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatement, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatement, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatement, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatement, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.Statement"), "Statement")(p);
7995                 memo[tuple(`Statement`,p.end)] = result;
7996                 return result;
7997             }
7998         }
7999     }
8000 
8001     static TParseTree Statement(string s)
8002     {
8003         if(__ctfe)
8004         {
8005             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatement, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatement, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatement, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatement, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatement, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.Statement")(TParseTree("", false,[], s));
8006         }
8007         else
8008         {
8009             memo = null;
8010             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatement, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatement, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatement, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatement, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatement, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.Statement"), "Statement")(TParseTree("", false,[], s));
8011         }
8012     }
8013     static string Statement(GetName g)
8014     {
8015         return "ES6.Statement";
8016     }
8017 
8018     static TParseTree StatementYield(TParseTree p)
8019     {
8020         if(__ctfe)
8021         {
8022             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYield")(p);
8023         }
8024         else
8025         {
8026             if(auto m = tuple(`StatementYield`,p.end) in memo)
8027                 return *m;
8028             else
8029             {
8030                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYield"), "StatementYield")(p);
8031                 memo[tuple(`StatementYield`,p.end)] = result;
8032                 return result;
8033             }
8034         }
8035     }
8036 
8037     static TParseTree StatementYield(string s)
8038     {
8039         if(__ctfe)
8040         {
8041             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYield")(TParseTree("", false,[], s));
8042         }
8043         else
8044         {
8045             memo = null;
8046             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYield"), "StatementYield")(TParseTree("", false,[], s));
8047         }
8048     }
8049     static string StatementYield(GetName g)
8050     {
8051         return "ES6.StatementYield";
8052     }
8053 
8054     static TParseTree StatementReturn(TParseTree p)
8055     {
8056         if(__ctfe)
8057         {
8058             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementReturn")(p);
8059         }
8060         else
8061         {
8062             if(auto m = tuple(`StatementReturn`,p.end) in memo)
8063                 return *m;
8064             else
8065             {
8066                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementReturn"), "StatementReturn")(p);
8067                 memo[tuple(`StatementReturn`,p.end)] = result;
8068                 return result;
8069             }
8070         }
8071     }
8072 
8073     static TParseTree StatementReturn(string s)
8074     {
8075         if(__ctfe)
8076         {
8077             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementReturn")(TParseTree("", false,[], s));
8078         }
8079         else
8080         {
8081             memo = null;
8082             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatement, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatement, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatement, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatement, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatement, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatement, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementReturn"), "StatementReturn")(TParseTree("", false,[], s));
8083         }
8084     }
8085     static string StatementReturn(GetName g)
8086     {
8087         return "ES6.StatementReturn";
8088     }
8089 
8090     static TParseTree StatementYieldReturn(TParseTree p)
8091     {
8092         if(__ctfe)
8093         {
8094             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYieldReturn")(p);
8095         }
8096         else
8097         {
8098             if(auto m = tuple(`StatementYieldReturn`,p.end) in memo)
8099                 return *m;
8100             else
8101             {
8102                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYieldReturn"), "StatementYieldReturn")(p);
8103                 memo[tuple(`StatementYieldReturn`,p.end)] = result;
8104                 return result;
8105             }
8106         }
8107     }
8108 
8109     static TParseTree StatementYieldReturn(string s)
8110     {
8111         if(__ctfe)
8112         {
8113             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYieldReturn")(TParseTree("", false,[], s));
8114         }
8115         else
8116         {
8117             memo = null;
8118             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BlockStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, VariableStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, EmptyStatement, Spacing), pegged.peg.wrapAround!(Spacing, IfStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, BreakableStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ContinueStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, BreakStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, ReturnStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WithStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, LabelledStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, ThrowStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, TryStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, DebuggerStatement, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionStatementYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)))), "ES6.StatementYieldReturn"), "StatementYieldReturn")(TParseTree("", false,[], s));
8119         }
8120     }
8121     static string StatementYieldReturn(GetName g)
8122     {
8123         return "ES6.StatementYieldReturn";
8124     }
8125 
8126     static TParseTree Declaration(TParseTree p)
8127     {
8128         if(__ctfe)
8129         {
8130             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationIn, Spacing)), "ES6.Declaration")(p);
8131         }
8132         else
8133         {
8134             if(auto m = tuple(`Declaration`,p.end) in memo)
8135                 return *m;
8136             else
8137             {
8138                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationIn, Spacing)), "ES6.Declaration"), "Declaration")(p);
8139                 memo[tuple(`Declaration`,p.end)] = result;
8140                 return result;
8141             }
8142         }
8143     }
8144 
8145     static TParseTree Declaration(string s)
8146     {
8147         if(__ctfe)
8148         {
8149             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationIn, Spacing)), "ES6.Declaration")(TParseTree("", false,[], s));
8150         }
8151         else
8152         {
8153             memo = null;
8154             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationIn, Spacing)), "ES6.Declaration"), "Declaration")(TParseTree("", false,[], s));
8155         }
8156     }
8157     static string Declaration(GetName g)
8158     {
8159         return "ES6.Declaration";
8160     }
8161 
8162     static TParseTree DeclarationYield(TParseTree p)
8163     {
8164         if(__ctfe)
8165         {
8166             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationInYield, Spacing)), "ES6.DeclarationYield")(p);
8167         }
8168         else
8169         {
8170             if(auto m = tuple(`DeclarationYield`,p.end) in memo)
8171                 return *m;
8172             else
8173             {
8174                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationInYield, Spacing)), "ES6.DeclarationYield"), "DeclarationYield")(p);
8175                 memo[tuple(`DeclarationYield`,p.end)] = result;
8176                 return result;
8177             }
8178         }
8179     }
8180 
8181     static TParseTree DeclarationYield(string s)
8182     {
8183         if(__ctfe)
8184         {
8185             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationInYield, Spacing)), "ES6.DeclarationYield")(TParseTree("", false,[], s));
8186         }
8187         else
8188         {
8189             memo = null;
8190             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, HoistableDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, ClassDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, LexicalDeclarationInYield, Spacing)), "ES6.DeclarationYield"), "DeclarationYield")(TParseTree("", false,[], s));
8191         }
8192     }
8193     static string DeclarationYield(GetName g)
8194     {
8195         return "ES6.DeclarationYield";
8196     }
8197 
8198     static TParseTree HoistableDeclaration(TParseTree p)
8199     {
8200         if(__ctfe)
8201         {
8202             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing)), "ES6.HoistableDeclaration")(p);
8203         }
8204         else
8205         {
8206             if(auto m = tuple(`HoistableDeclaration`,p.end) in memo)
8207                 return *m;
8208             else
8209             {
8210                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing)), "ES6.HoistableDeclaration"), "HoistableDeclaration")(p);
8211                 memo[tuple(`HoistableDeclaration`,p.end)] = result;
8212                 return result;
8213             }
8214         }
8215     }
8216 
8217     static TParseTree HoistableDeclaration(string s)
8218     {
8219         if(__ctfe)
8220         {
8221             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing)), "ES6.HoistableDeclaration")(TParseTree("", false,[], s));
8222         }
8223         else
8224         {
8225             memo = null;
8226             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing)), "ES6.HoistableDeclaration"), "HoistableDeclaration")(TParseTree("", false,[], s));
8227         }
8228     }
8229     static string HoistableDeclaration(GetName g)
8230     {
8231         return "ES6.HoistableDeclaration";
8232     }
8233 
8234     static TParseTree HoistableDeclarationYield(TParseTree p)
8235     {
8236         if(__ctfe)
8237         {
8238             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing)), "ES6.HoistableDeclarationYield")(p);
8239         }
8240         else
8241         {
8242             if(auto m = tuple(`HoistableDeclarationYield`,p.end) in memo)
8243                 return *m;
8244             else
8245             {
8246                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing)), "ES6.HoistableDeclarationYield"), "HoistableDeclarationYield")(p);
8247                 memo[tuple(`HoistableDeclarationYield`,p.end)] = result;
8248                 return result;
8249             }
8250         }
8251     }
8252 
8253     static TParseTree HoistableDeclarationYield(string s)
8254     {
8255         if(__ctfe)
8256         {
8257             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing)), "ES6.HoistableDeclarationYield")(TParseTree("", false,[], s));
8258         }
8259         else
8260         {
8261             memo = null;
8262             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing)), "ES6.HoistableDeclarationYield"), "HoistableDeclarationYield")(TParseTree("", false,[], s));
8263         }
8264     }
8265     static string HoistableDeclarationYield(GetName g)
8266     {
8267         return "ES6.HoistableDeclarationYield";
8268     }
8269 
8270     static TParseTree HoistableDeclarationDefault(TParseTree p)
8271     {
8272         if(__ctfe)
8273         {
8274             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationDefault, Spacing)), "ES6.HoistableDeclarationDefault")(p);
8275         }
8276         else
8277         {
8278             if(auto m = tuple(`HoistableDeclarationDefault`,p.end) in memo)
8279                 return *m;
8280             else
8281             {
8282                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationDefault, Spacing)), "ES6.HoistableDeclarationDefault"), "HoistableDeclarationDefault")(p);
8283                 memo[tuple(`HoistableDeclarationDefault`,p.end)] = result;
8284                 return result;
8285             }
8286         }
8287     }
8288 
8289     static TParseTree HoistableDeclarationDefault(string s)
8290     {
8291         if(__ctfe)
8292         {
8293             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationDefault, Spacing)), "ES6.HoistableDeclarationDefault")(TParseTree("", false,[], s));
8294         }
8295         else
8296         {
8297             memo = null;
8298             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationDefault, Spacing)), "ES6.HoistableDeclarationDefault"), "HoistableDeclarationDefault")(TParseTree("", false,[], s));
8299         }
8300     }
8301     static string HoistableDeclarationDefault(GetName g)
8302     {
8303         return "ES6.HoistableDeclarationDefault";
8304     }
8305 
8306     static TParseTree HoistableDeclarationYieldDefault(TParseTree p)
8307     {
8308         if(__ctfe)
8309         {
8310             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYieldDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYieldDefault, Spacing)), "ES6.HoistableDeclarationYieldDefault")(p);
8311         }
8312         else
8313         {
8314             if(auto m = tuple(`HoistableDeclarationYieldDefault`,p.end) in memo)
8315                 return *m;
8316             else
8317             {
8318                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYieldDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYieldDefault, Spacing)), "ES6.HoistableDeclarationYieldDefault"), "HoistableDeclarationYieldDefault")(p);
8319                 memo[tuple(`HoistableDeclarationYieldDefault`,p.end)] = result;
8320                 return result;
8321             }
8322         }
8323     }
8324 
8325     static TParseTree HoistableDeclarationYieldDefault(string s)
8326     {
8327         if(__ctfe)
8328         {
8329             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYieldDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYieldDefault, Spacing)), "ES6.HoistableDeclarationYieldDefault")(TParseTree("", false,[], s));
8330         }
8331         else
8332         {
8333             memo = null;
8334             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorDeclarationYieldDefault, Spacing), pegged.peg.wrapAround!(Spacing, FunctionDeclarationYieldDefault, Spacing)), "ES6.HoistableDeclarationYieldDefault"), "HoistableDeclarationYieldDefault")(TParseTree("", false,[], s));
8335         }
8336     }
8337     static string HoistableDeclarationYieldDefault(GetName g)
8338     {
8339         return "ES6.HoistableDeclarationYieldDefault";
8340     }
8341 
8342     static TParseTree BreakableStatement(TParseTree p)
8343     {
8344         if(__ctfe)
8345         {
8346             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatement, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatement, Spacing)), "ES6.BreakableStatement")(p);
8347         }
8348         else
8349         {
8350             if(auto m = tuple(`BreakableStatement`,p.end) in memo)
8351                 return *m;
8352             else
8353             {
8354                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatement, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatement, Spacing)), "ES6.BreakableStatement"), "BreakableStatement")(p);
8355                 memo[tuple(`BreakableStatement`,p.end)] = result;
8356                 return result;
8357             }
8358         }
8359     }
8360 
8361     static TParseTree BreakableStatement(string s)
8362     {
8363         if(__ctfe)
8364         {
8365             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatement, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatement, Spacing)), "ES6.BreakableStatement")(TParseTree("", false,[], s));
8366         }
8367         else
8368         {
8369             memo = null;
8370             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatement, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatement, Spacing)), "ES6.BreakableStatement"), "BreakableStatement")(TParseTree("", false,[], s));
8371         }
8372     }
8373     static string BreakableStatement(GetName g)
8374     {
8375         return "ES6.BreakableStatement";
8376     }
8377 
8378     static TParseTree BreakableStatementYield(TParseTree p)
8379     {
8380         if(__ctfe)
8381         {
8382             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYield, Spacing)), "ES6.BreakableStatementYield")(p);
8383         }
8384         else
8385         {
8386             if(auto m = tuple(`BreakableStatementYield`,p.end) in memo)
8387                 return *m;
8388             else
8389             {
8390                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYield, Spacing)), "ES6.BreakableStatementYield"), "BreakableStatementYield")(p);
8391                 memo[tuple(`BreakableStatementYield`,p.end)] = result;
8392                 return result;
8393             }
8394         }
8395     }
8396 
8397     static TParseTree BreakableStatementYield(string s)
8398     {
8399         if(__ctfe)
8400         {
8401             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYield, Spacing)), "ES6.BreakableStatementYield")(TParseTree("", false,[], s));
8402         }
8403         else
8404         {
8405             memo = null;
8406             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYield, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYield, Spacing)), "ES6.BreakableStatementYield"), "BreakableStatementYield")(TParseTree("", false,[], s));
8407         }
8408     }
8409     static string BreakableStatementYield(GetName g)
8410     {
8411         return "ES6.BreakableStatementYield";
8412     }
8413 
8414     static TParseTree BreakableStatementReturn(TParseTree p)
8415     {
8416         if(__ctfe)
8417         {
8418             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementReturn, Spacing)), "ES6.BreakableStatementReturn")(p);
8419         }
8420         else
8421         {
8422             if(auto m = tuple(`BreakableStatementReturn`,p.end) in memo)
8423                 return *m;
8424             else
8425             {
8426                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementReturn, Spacing)), "ES6.BreakableStatementReturn"), "BreakableStatementReturn")(p);
8427                 memo[tuple(`BreakableStatementReturn`,p.end)] = result;
8428                 return result;
8429             }
8430         }
8431     }
8432 
8433     static TParseTree BreakableStatementReturn(string s)
8434     {
8435         if(__ctfe)
8436         {
8437             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementReturn, Spacing)), "ES6.BreakableStatementReturn")(TParseTree("", false,[], s));
8438         }
8439         else
8440         {
8441             memo = null;
8442             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementReturn, Spacing)), "ES6.BreakableStatementReturn"), "BreakableStatementReturn")(TParseTree("", false,[], s));
8443         }
8444     }
8445     static string BreakableStatementReturn(GetName g)
8446     {
8447         return "ES6.BreakableStatementReturn";
8448     }
8449 
8450     static TParseTree BreakableStatementYieldReturn(TParseTree p)
8451     {
8452         if(__ctfe)
8453         {
8454             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYieldReturn, Spacing)), "ES6.BreakableStatementYieldReturn")(p);
8455         }
8456         else
8457         {
8458             if(auto m = tuple(`BreakableStatementYieldReturn`,p.end) in memo)
8459                 return *m;
8460             else
8461             {
8462                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYieldReturn, Spacing)), "ES6.BreakableStatementYieldReturn"), "BreakableStatementYieldReturn")(p);
8463                 memo[tuple(`BreakableStatementYieldReturn`,p.end)] = result;
8464                 return result;
8465             }
8466         }
8467     }
8468 
8469     static TParseTree BreakableStatementYieldReturn(string s)
8470     {
8471         if(__ctfe)
8472         {
8473             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYieldReturn, Spacing)), "ES6.BreakableStatementYieldReturn")(TParseTree("", false,[], s));
8474         }
8475         else
8476         {
8477             memo = null;
8478             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IterationStatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, SwitchStatementYieldReturn, Spacing)), "ES6.BreakableStatementYieldReturn"), "BreakableStatementYieldReturn")(TParseTree("", false,[], s));
8479         }
8480     }
8481     static string BreakableStatementYieldReturn(GetName g)
8482     {
8483         return "ES6.BreakableStatementYieldReturn";
8484     }
8485 
8486     static TParseTree BlockStatement(TParseTree p)
8487     {
8488         if(__ctfe)
8489         {
8490             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), "ES6.BlockStatement")(p);
8491         }
8492         else
8493         {
8494             if(auto m = tuple(`BlockStatement`,p.end) in memo)
8495                 return *m;
8496             else
8497             {
8498                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), "ES6.BlockStatement"), "BlockStatement")(p);
8499                 memo[tuple(`BlockStatement`,p.end)] = result;
8500                 return result;
8501             }
8502         }
8503     }
8504 
8505     static TParseTree BlockStatement(string s)
8506     {
8507         if(__ctfe)
8508         {
8509             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), "ES6.BlockStatement")(TParseTree("", false,[], s));
8510         }
8511         else
8512         {
8513             memo = null;
8514             return hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), "ES6.BlockStatement"), "BlockStatement")(TParseTree("", false,[], s));
8515         }
8516     }
8517     static string BlockStatement(GetName g)
8518     {
8519         return "ES6.BlockStatement";
8520     }
8521 
8522     static TParseTree BlockStatementYield(TParseTree p)
8523     {
8524         if(__ctfe)
8525         {
8526             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), "ES6.BlockStatementYield")(p);
8527         }
8528         else
8529         {
8530             if(auto m = tuple(`BlockStatementYield`,p.end) in memo)
8531                 return *m;
8532             else
8533             {
8534                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), "ES6.BlockStatementYield"), "BlockStatementYield")(p);
8535                 memo[tuple(`BlockStatementYield`,p.end)] = result;
8536                 return result;
8537             }
8538         }
8539     }
8540 
8541     static TParseTree BlockStatementYield(string s)
8542     {
8543         if(__ctfe)
8544         {
8545             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), "ES6.BlockStatementYield")(TParseTree("", false,[], s));
8546         }
8547         else
8548         {
8549             memo = null;
8550             return hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), "ES6.BlockStatementYield"), "BlockStatementYield")(TParseTree("", false,[], s));
8551         }
8552     }
8553     static string BlockStatementYield(GetName g)
8554     {
8555         return "ES6.BlockStatementYield";
8556     }
8557 
8558     static TParseTree BlockStatementReturn(TParseTree p)
8559     {
8560         if(__ctfe)
8561         {
8562             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), "ES6.BlockStatementReturn")(p);
8563         }
8564         else
8565         {
8566             if(auto m = tuple(`BlockStatementReturn`,p.end) in memo)
8567                 return *m;
8568             else
8569             {
8570                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), "ES6.BlockStatementReturn"), "BlockStatementReturn")(p);
8571                 memo[tuple(`BlockStatementReturn`,p.end)] = result;
8572                 return result;
8573             }
8574         }
8575     }
8576 
8577     static TParseTree BlockStatementReturn(string s)
8578     {
8579         if(__ctfe)
8580         {
8581             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), "ES6.BlockStatementReturn")(TParseTree("", false,[], s));
8582         }
8583         else
8584         {
8585             memo = null;
8586             return hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), "ES6.BlockStatementReturn"), "BlockStatementReturn")(TParseTree("", false,[], s));
8587         }
8588     }
8589     static string BlockStatementReturn(GetName g)
8590     {
8591         return "ES6.BlockStatementReturn";
8592     }
8593 
8594     static TParseTree BlockStatementYieldReturn(TParseTree p)
8595     {
8596         if(__ctfe)
8597         {
8598             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), "ES6.BlockStatementYieldReturn")(p);
8599         }
8600         else
8601         {
8602             if(auto m = tuple(`BlockStatementYieldReturn`,p.end) in memo)
8603                 return *m;
8604             else
8605             {
8606                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), "ES6.BlockStatementYieldReturn"), "BlockStatementYieldReturn")(p);
8607                 memo[tuple(`BlockStatementYieldReturn`,p.end)] = result;
8608                 return result;
8609             }
8610         }
8611     }
8612 
8613     static TParseTree BlockStatementYieldReturn(string s)
8614     {
8615         if(__ctfe)
8616         {
8617             return         pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), "ES6.BlockStatementYieldReturn")(TParseTree("", false,[], s));
8618         }
8619         else
8620         {
8621             memo = null;
8622             return hooked!(pegged.peg.defined!(pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), "ES6.BlockStatementYieldReturn"), "BlockStatementYieldReturn")(TParseTree("", false,[], s));
8623         }
8624     }
8625     static string BlockStatementYieldReturn(GetName g)
8626     {
8627         return "ES6.BlockStatementYieldReturn";
8628     }
8629 
8630     static TParseTree Block(TParseTree p)
8631     {
8632         if(__ctfe)
8633         {
8634             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing)), Spacing), "ES6.Block")(p);
8635         }
8636         else
8637         {
8638             if(auto m = tuple(`Block`,p.end) in memo)
8639                 return *m;
8640             else
8641             {
8642                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing)), Spacing), "ES6.Block"), "Block")(p);
8643                 memo[tuple(`Block`,p.end)] = result;
8644                 return result;
8645             }
8646         }
8647     }
8648 
8649     static TParseTree Block(string s)
8650     {
8651         if(__ctfe)
8652         {
8653             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing)), Spacing), "ES6.Block")(TParseTree("", false,[], s));
8654         }
8655         else
8656         {
8657             memo = null;
8658             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing)), Spacing), "ES6.Block"), "Block")(TParseTree("", false,[], s));
8659         }
8660     }
8661     static string Block(GetName g)
8662     {
8663         return "ES6.Block";
8664     }
8665 
8666     static TParseTree BlockYield(TParseTree p)
8667     {
8668         if(__ctfe)
8669         {
8670             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing)), Spacing), "ES6.BlockYield")(p);
8671         }
8672         else
8673         {
8674             if(auto m = tuple(`BlockYield`,p.end) in memo)
8675                 return *m;
8676             else
8677             {
8678                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing)), Spacing), "ES6.BlockYield"), "BlockYield")(p);
8679                 memo[tuple(`BlockYield`,p.end)] = result;
8680                 return result;
8681             }
8682         }
8683     }
8684 
8685     static TParseTree BlockYield(string s)
8686     {
8687         if(__ctfe)
8688         {
8689             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing)), Spacing), "ES6.BlockYield")(TParseTree("", false,[], s));
8690         }
8691         else
8692         {
8693             memo = null;
8694             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing)), Spacing), "ES6.BlockYield"), "BlockYield")(TParseTree("", false,[], s));
8695         }
8696     }
8697     static string BlockYield(GetName g)
8698     {
8699         return "ES6.BlockYield";
8700     }
8701 
8702     static TParseTree BlockReturn(TParseTree p)
8703     {
8704         if(__ctfe)
8705         {
8706             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), Spacing), "ES6.BlockReturn")(p);
8707         }
8708         else
8709         {
8710             if(auto m = tuple(`BlockReturn`,p.end) in memo)
8711                 return *m;
8712             else
8713             {
8714                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), Spacing), "ES6.BlockReturn"), "BlockReturn")(p);
8715                 memo[tuple(`BlockReturn`,p.end)] = result;
8716                 return result;
8717             }
8718         }
8719     }
8720 
8721     static TParseTree BlockReturn(string s)
8722     {
8723         if(__ctfe)
8724         {
8725             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), Spacing), "ES6.BlockReturn")(TParseTree("", false,[], s));
8726         }
8727         else
8728         {
8729             memo = null;
8730             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), Spacing), "ES6.BlockReturn"), "BlockReturn")(TParseTree("", false,[], s));
8731         }
8732     }
8733     static string BlockReturn(GetName g)
8734     {
8735         return "ES6.BlockReturn";
8736     }
8737 
8738     static TParseTree BlockYieldReturn(TParseTree p)
8739     {
8740         if(__ctfe)
8741         {
8742             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), Spacing), "ES6.BlockYieldReturn")(p);
8743         }
8744         else
8745         {
8746             if(auto m = tuple(`BlockYieldReturn`,p.end) in memo)
8747                 return *m;
8748             else
8749             {
8750                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), Spacing), "ES6.BlockYieldReturn"), "BlockYieldReturn")(p);
8751                 memo[tuple(`BlockYieldReturn`,p.end)] = result;
8752                 return result;
8753             }
8754         }
8755     }
8756 
8757     static TParseTree BlockYieldReturn(string s)
8758     {
8759         if(__ctfe)
8760         {
8761             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), Spacing), "ES6.BlockYieldReturn")(TParseTree("", false,[], s));
8762         }
8763         else
8764         {
8765             memo = null;
8766             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), Spacing), "ES6.BlockYieldReturn"), "BlockYieldReturn")(TParseTree("", false,[], s));
8767         }
8768     }
8769     static string BlockYieldReturn(GetName g)
8770     {
8771         return "ES6.BlockYieldReturn";
8772     }
8773 
8774     static TParseTree StatementList(TParseTree p)
8775     {
8776         if(__ctfe)
8777         {
8778             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), "ES6.StatementList")(p);
8779         }
8780         else
8781         {
8782             if(auto m = tuple(`StatementList`,p.end) in memo)
8783                 return *m;
8784             else
8785             {
8786                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), "ES6.StatementList"), "StatementList")(p);
8787                 memo[tuple(`StatementList`,p.end)] = result;
8788                 return result;
8789             }
8790         }
8791     }
8792 
8793     static TParseTree StatementList(string s)
8794     {
8795         if(__ctfe)
8796         {
8797             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), "ES6.StatementList")(TParseTree("", false,[], s));
8798         }
8799         else
8800         {
8801             memo = null;
8802             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItem, Spacing)), "ES6.StatementList"), "StatementList")(TParseTree("", false,[], s));
8803         }
8804     }
8805     static string StatementList(GetName g)
8806     {
8807         return "ES6.StatementList";
8808     }
8809 
8810     static TParseTree StatementListYield(TParseTree p)
8811     {
8812         if(__ctfe)
8813         {
8814             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYield, Spacing)), "ES6.StatementListYield")(p);
8815         }
8816         else
8817         {
8818             if(auto m = tuple(`StatementListYield`,p.end) in memo)
8819                 return *m;
8820             else
8821             {
8822                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYield, Spacing)), "ES6.StatementListYield"), "StatementListYield")(p);
8823                 memo[tuple(`StatementListYield`,p.end)] = result;
8824                 return result;
8825             }
8826         }
8827     }
8828 
8829     static TParseTree StatementListYield(string s)
8830     {
8831         if(__ctfe)
8832         {
8833             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYield, Spacing)), "ES6.StatementListYield")(TParseTree("", false,[], s));
8834         }
8835         else
8836         {
8837             memo = null;
8838             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYield, Spacing)), "ES6.StatementListYield"), "StatementListYield")(TParseTree("", false,[], s));
8839         }
8840     }
8841     static string StatementListYield(GetName g)
8842     {
8843         return "ES6.StatementListYield";
8844     }
8845 
8846     static TParseTree StatementListReturn(TParseTree p)
8847     {
8848         if(__ctfe)
8849         {
8850             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemReturn, Spacing)), "ES6.StatementListReturn")(p);
8851         }
8852         else
8853         {
8854             if(auto m = tuple(`StatementListReturn`,p.end) in memo)
8855                 return *m;
8856             else
8857             {
8858                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemReturn, Spacing)), "ES6.StatementListReturn"), "StatementListReturn")(p);
8859                 memo[tuple(`StatementListReturn`,p.end)] = result;
8860                 return result;
8861             }
8862         }
8863     }
8864 
8865     static TParseTree StatementListReturn(string s)
8866     {
8867         if(__ctfe)
8868         {
8869             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemReturn, Spacing)), "ES6.StatementListReturn")(TParseTree("", false,[], s));
8870         }
8871         else
8872         {
8873             memo = null;
8874             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemReturn, Spacing)), "ES6.StatementListReturn"), "StatementListReturn")(TParseTree("", false,[], s));
8875         }
8876     }
8877     static string StatementListReturn(GetName g)
8878     {
8879         return "ES6.StatementListReturn";
8880     }
8881 
8882     static TParseTree StatementListYieldReturn(TParseTree p)
8883     {
8884         if(__ctfe)
8885         {
8886             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYieldReturn, Spacing)), "ES6.StatementListYieldReturn")(p);
8887         }
8888         else
8889         {
8890             if(auto m = tuple(`StatementListYieldReturn`,p.end) in memo)
8891                 return *m;
8892             else
8893             {
8894                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYieldReturn, Spacing)), "ES6.StatementListYieldReturn"), "StatementListYieldReturn")(p);
8895                 memo[tuple(`StatementListYieldReturn`,p.end)] = result;
8896                 return result;
8897             }
8898         }
8899     }
8900 
8901     static TParseTree StatementListYieldReturn(string s)
8902     {
8903         if(__ctfe)
8904         {
8905             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYieldReturn, Spacing)), "ES6.StatementListYieldReturn")(TParseTree("", false,[], s));
8906         }
8907         else
8908         {
8909             memo = null;
8910             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, StatementListItemYieldReturn, Spacing)), "ES6.StatementListYieldReturn"), "StatementListYieldReturn")(TParseTree("", false,[], s));
8911         }
8912     }
8913     static string StatementListYieldReturn(GetName g)
8914     {
8915         return "ES6.StatementListYieldReturn";
8916     }
8917 
8918     static TParseTree StatementListItem(TParseTree p)
8919     {
8920         if(__ctfe)
8921         {
8922             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.StatementListItem")(p);
8923         }
8924         else
8925         {
8926             if(auto m = tuple(`StatementListItem`,p.end) in memo)
8927                 return *m;
8928             else
8929             {
8930                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.StatementListItem"), "StatementListItem")(p);
8931                 memo[tuple(`StatementListItem`,p.end)] = result;
8932                 return result;
8933             }
8934         }
8935     }
8936 
8937     static TParseTree StatementListItem(string s)
8938     {
8939         if(__ctfe)
8940         {
8941             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.StatementListItem")(TParseTree("", false,[], s));
8942         }
8943         else
8944         {
8945             memo = null;
8946             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.StatementListItem"), "StatementListItem")(TParseTree("", false,[], s));
8947         }
8948     }
8949     static string StatementListItem(GetName g)
8950     {
8951         return "ES6.StatementListItem";
8952     }
8953 
8954     static TParseTree StatementListItemYield(TParseTree p)
8955     {
8956         if(__ctfe)
8957         {
8958             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.StatementListItemYield")(p);
8959         }
8960         else
8961         {
8962             if(auto m = tuple(`StatementListItemYield`,p.end) in memo)
8963                 return *m;
8964             else
8965             {
8966                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.StatementListItemYield"), "StatementListItemYield")(p);
8967                 memo[tuple(`StatementListItemYield`,p.end)] = result;
8968                 return result;
8969             }
8970         }
8971     }
8972 
8973     static TParseTree StatementListItemYield(string s)
8974     {
8975         if(__ctfe)
8976         {
8977             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.StatementListItemYield")(TParseTree("", false,[], s));
8978         }
8979         else
8980         {
8981             memo = null;
8982             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.StatementListItemYield"), "StatementListItemYield")(TParseTree("", false,[], s));
8983         }
8984     }
8985     static string StatementListItemYield(GetName g)
8986     {
8987         return "ES6.StatementListItemYield";
8988     }
8989 
8990     static TParseTree StatementListItemReturn(TParseTree p)
8991     {
8992         if(__ctfe)
8993         {
8994             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.StatementListItemReturn")(p);
8995         }
8996         else
8997         {
8998             if(auto m = tuple(`StatementListItemReturn`,p.end) in memo)
8999                 return *m;
9000             else
9001             {
9002                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.StatementListItemReturn"), "StatementListItemReturn")(p);
9003                 memo[tuple(`StatementListItemReturn`,p.end)] = result;
9004                 return result;
9005             }
9006         }
9007     }
9008 
9009     static TParseTree StatementListItemReturn(string s)
9010     {
9011         if(__ctfe)
9012         {
9013             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.StatementListItemReturn")(TParseTree("", false,[], s));
9014         }
9015         else
9016         {
9017             memo = null;
9018             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, Declaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.StatementListItemReturn"), "StatementListItemReturn")(TParseTree("", false,[], s));
9019         }
9020     }
9021     static string StatementListItemReturn(GetName g)
9022     {
9023         return "ES6.StatementListItemReturn";
9024     }
9025 
9026     static TParseTree StatementListItemYieldReturn(TParseTree p)
9027     {
9028         if(__ctfe)
9029         {
9030             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.StatementListItemYieldReturn")(p);
9031         }
9032         else
9033         {
9034             if(auto m = tuple(`StatementListItemYieldReturn`,p.end) in memo)
9035                 return *m;
9036             else
9037             {
9038                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.StatementListItemYieldReturn"), "StatementListItemYieldReturn")(p);
9039                 memo[tuple(`StatementListItemYieldReturn`,p.end)] = result;
9040                 return result;
9041             }
9042         }
9043     }
9044 
9045     static TParseTree StatementListItemYieldReturn(string s)
9046     {
9047         if(__ctfe)
9048         {
9049             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.StatementListItemYieldReturn")(TParseTree("", false,[], s));
9050         }
9051         else
9052         {
9053             memo = null;
9054             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, DeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.StatementListItemYieldReturn"), "StatementListItemYieldReturn")(TParseTree("", false,[], s));
9055         }
9056     }
9057     static string StatementListItemYieldReturn(GetName g)
9058     {
9059         return "ES6.StatementListItemYieldReturn";
9060     }
9061 
9062     static TParseTree LexicalDeclaration(TParseTree p)
9063     {
9064         if(__ctfe)
9065         {
9066             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingList, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclaration")(p);
9067         }
9068         else
9069         {
9070             if(auto m = tuple(`LexicalDeclaration`,p.end) in memo)
9071                 return *m;
9072             else
9073             {
9074                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingList, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclaration"), "LexicalDeclaration")(p);
9075                 memo[tuple(`LexicalDeclaration`,p.end)] = result;
9076                 return result;
9077             }
9078         }
9079     }
9080 
9081     static TParseTree LexicalDeclaration(string s)
9082     {
9083         if(__ctfe)
9084         {
9085             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingList, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclaration")(TParseTree("", false,[], s));
9086         }
9087         else
9088         {
9089             memo = null;
9090             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingList, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclaration"), "LexicalDeclaration")(TParseTree("", false,[], s));
9091         }
9092     }
9093     static string LexicalDeclaration(GetName g)
9094     {
9095         return "ES6.LexicalDeclaration";
9096     }
9097 
9098     static TParseTree LexicalDeclarationIn(TParseTree p)
9099     {
9100         if(__ctfe)
9101         {
9102             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationIn")(p);
9103         }
9104         else
9105         {
9106             if(auto m = tuple(`LexicalDeclarationIn`,p.end) in memo)
9107                 return *m;
9108             else
9109             {
9110                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationIn"), "LexicalDeclarationIn")(p);
9111                 memo[tuple(`LexicalDeclarationIn`,p.end)] = result;
9112                 return result;
9113             }
9114         }
9115     }
9116 
9117     static TParseTree LexicalDeclarationIn(string s)
9118     {
9119         if(__ctfe)
9120         {
9121             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationIn")(TParseTree("", false,[], s));
9122         }
9123         else
9124         {
9125             memo = null;
9126             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationIn"), "LexicalDeclarationIn")(TParseTree("", false,[], s));
9127         }
9128     }
9129     static string LexicalDeclarationIn(GetName g)
9130     {
9131         return "ES6.LexicalDeclarationIn";
9132     }
9133 
9134     static TParseTree LexicalDeclarationYield(TParseTree p)
9135     {
9136         if(__ctfe)
9137         {
9138             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationYield")(p);
9139         }
9140         else
9141         {
9142             if(auto m = tuple(`LexicalDeclarationYield`,p.end) in memo)
9143                 return *m;
9144             else
9145             {
9146                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationYield"), "LexicalDeclarationYield")(p);
9147                 memo[tuple(`LexicalDeclarationYield`,p.end)] = result;
9148                 return result;
9149             }
9150         }
9151     }
9152 
9153     static TParseTree LexicalDeclarationYield(string s)
9154     {
9155         if(__ctfe)
9156         {
9157             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationYield")(TParseTree("", false,[], s));
9158         }
9159         else
9160         {
9161             memo = null;
9162             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationYield"), "LexicalDeclarationYield")(TParseTree("", false,[], s));
9163         }
9164     }
9165     static string LexicalDeclarationYield(GetName g)
9166     {
9167         return "ES6.LexicalDeclarationYield";
9168     }
9169 
9170     static TParseTree LexicalDeclarationInYield(TParseTree p)
9171     {
9172         if(__ctfe)
9173         {
9174             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationInYield")(p);
9175         }
9176         else
9177         {
9178             if(auto m = tuple(`LexicalDeclarationInYield`,p.end) in memo)
9179                 return *m;
9180             else
9181             {
9182                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationInYield"), "LexicalDeclarationInYield")(p);
9183                 memo[tuple(`LexicalDeclarationInYield`,p.end)] = result;
9184                 return result;
9185             }
9186         }
9187     }
9188 
9189     static TParseTree LexicalDeclarationInYield(string s)
9190     {
9191         if(__ctfe)
9192         {
9193             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationInYield")(TParseTree("", false,[], s));
9194         }
9195         else
9196         {
9197             memo = null;
9198             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, BindingListInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.LexicalDeclarationInYield"), "LexicalDeclarationInYield")(TParseTree("", false,[], s));
9199         }
9200     }
9201     static string LexicalDeclarationInYield(GetName g)
9202     {
9203         return "ES6.LexicalDeclarationInYield";
9204     }
9205 
9206     static TParseTree LetOrConst(TParseTree p)
9207     {
9208         if(__ctfe)
9209         {
9210             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("const"), Spacing)), Spacing), "ES6.LetOrConst")(p);
9211         }
9212         else
9213         {
9214             if(auto m = tuple(`LetOrConst`,p.end) in memo)
9215                 return *m;
9216             else
9217             {
9218                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("const"), Spacing)), Spacing), "ES6.LetOrConst"), "LetOrConst")(p);
9219                 memo[tuple(`LetOrConst`,p.end)] = result;
9220                 return result;
9221             }
9222         }
9223     }
9224 
9225     static TParseTree LetOrConst(string s)
9226     {
9227         if(__ctfe)
9228         {
9229             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("const"), Spacing)), Spacing), "ES6.LetOrConst")(TParseTree("", false,[], s));
9230         }
9231         else
9232         {
9233             memo = null;
9234             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("const"), Spacing)), Spacing), "ES6.LetOrConst"), "LetOrConst")(TParseTree("", false,[], s));
9235         }
9236     }
9237     static string LetOrConst(GetName g)
9238     {
9239         return "ES6.LetOrConst";
9240     }
9241 
9242     static TParseTree BindingList(TParseTree p)
9243     {
9244         if(__ctfe)
9245         {
9246             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing)), Spacing))), "ES6.BindingList")(p);
9247         }
9248         else
9249         {
9250             if(auto m = tuple(`BindingList`,p.end) in memo)
9251                 return *m;
9252             else
9253             {
9254                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing)), Spacing))), "ES6.BindingList"), "BindingList")(p);
9255                 memo[tuple(`BindingList`,p.end)] = result;
9256                 return result;
9257             }
9258         }
9259     }
9260 
9261     static TParseTree BindingList(string s)
9262     {
9263         if(__ctfe)
9264         {
9265             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing)), Spacing))), "ES6.BindingList")(TParseTree("", false,[], s));
9266         }
9267         else
9268         {
9269             memo = null;
9270             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBinding, Spacing)), Spacing))), "ES6.BindingList"), "BindingList")(TParseTree("", false,[], s));
9271         }
9272     }
9273     static string BindingList(GetName g)
9274     {
9275         return "ES6.BindingList";
9276     }
9277 
9278     static TParseTree BindingListIn(TParseTree p)
9279     {
9280         if(__ctfe)
9281         {
9282             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing)), Spacing))), "ES6.BindingListIn")(p);
9283         }
9284         else
9285         {
9286             if(auto m = tuple(`BindingListIn`,p.end) in memo)
9287                 return *m;
9288             else
9289             {
9290                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing)), Spacing))), "ES6.BindingListIn"), "BindingListIn")(p);
9291                 memo[tuple(`BindingListIn`,p.end)] = result;
9292                 return result;
9293             }
9294         }
9295     }
9296 
9297     static TParseTree BindingListIn(string s)
9298     {
9299         if(__ctfe)
9300         {
9301             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing)), Spacing))), "ES6.BindingListIn")(TParseTree("", false,[], s));
9302         }
9303         else
9304         {
9305             memo = null;
9306             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingIn, Spacing)), Spacing))), "ES6.BindingListIn"), "BindingListIn")(TParseTree("", false,[], s));
9307         }
9308     }
9309     static string BindingListIn(GetName g)
9310     {
9311         return "ES6.BindingListIn";
9312     }
9313 
9314     static TParseTree BindingListYield(TParseTree p)
9315     {
9316         if(__ctfe)
9317         {
9318             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing)), Spacing))), "ES6.BindingListYield")(p);
9319         }
9320         else
9321         {
9322             if(auto m = tuple(`BindingListYield`,p.end) in memo)
9323                 return *m;
9324             else
9325             {
9326                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing)), Spacing))), "ES6.BindingListYield"), "BindingListYield")(p);
9327                 memo[tuple(`BindingListYield`,p.end)] = result;
9328                 return result;
9329             }
9330         }
9331     }
9332 
9333     static TParseTree BindingListYield(string s)
9334     {
9335         if(__ctfe)
9336         {
9337             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing)), Spacing))), "ES6.BindingListYield")(TParseTree("", false,[], s));
9338         }
9339         else
9340         {
9341             memo = null;
9342             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingYield, Spacing)), Spacing))), "ES6.BindingListYield"), "BindingListYield")(TParseTree("", false,[], s));
9343         }
9344     }
9345     static string BindingListYield(GetName g)
9346     {
9347         return "ES6.BindingListYield";
9348     }
9349 
9350     static TParseTree BindingListInYield(TParseTree p)
9351     {
9352         if(__ctfe)
9353         {
9354             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing)), Spacing))), "ES6.BindingListInYield")(p);
9355         }
9356         else
9357         {
9358             if(auto m = tuple(`BindingListInYield`,p.end) in memo)
9359                 return *m;
9360             else
9361             {
9362                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing)), Spacing))), "ES6.BindingListInYield"), "BindingListInYield")(p);
9363                 memo[tuple(`BindingListInYield`,p.end)] = result;
9364                 return result;
9365             }
9366         }
9367     }
9368 
9369     static TParseTree BindingListInYield(string s)
9370     {
9371         if(__ctfe)
9372         {
9373             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing)), Spacing))), "ES6.BindingListInYield")(TParseTree("", false,[], s));
9374         }
9375         else
9376         {
9377             memo = null;
9378             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, LexicalBindingInYield, Spacing)), Spacing))), "ES6.BindingListInYield"), "BindingListInYield")(TParseTree("", false,[], s));
9379         }
9380     }
9381     static string BindingListInYield(GetName g)
9382     {
9383         return "ES6.BindingListInYield";
9384     }
9385 
9386     static TParseTree LexicalBinding(TParseTree p)
9387     {
9388         if(__ctfe)
9389         {
9390             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.LexicalBinding")(p);
9391         }
9392         else
9393         {
9394             if(auto m = tuple(`LexicalBinding`,p.end) in memo)
9395                 return *m;
9396             else
9397             {
9398                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.LexicalBinding"), "LexicalBinding")(p);
9399                 memo[tuple(`LexicalBinding`,p.end)] = result;
9400                 return result;
9401             }
9402         }
9403     }
9404 
9405     static TParseTree LexicalBinding(string s)
9406     {
9407         if(__ctfe)
9408         {
9409             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.LexicalBinding")(TParseTree("", false,[], s));
9410         }
9411         else
9412         {
9413             memo = null;
9414             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.LexicalBinding"), "LexicalBinding")(TParseTree("", false,[], s));
9415         }
9416     }
9417     static string LexicalBinding(GetName g)
9418     {
9419         return "ES6.LexicalBinding";
9420     }
9421 
9422     static TParseTree LexicalBindingIn(TParseTree p)
9423     {
9424         if(__ctfe)
9425         {
9426             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.LexicalBindingIn")(p);
9427         }
9428         else
9429         {
9430             if(auto m = tuple(`LexicalBindingIn`,p.end) in memo)
9431                 return *m;
9432             else
9433             {
9434                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.LexicalBindingIn"), "LexicalBindingIn")(p);
9435                 memo[tuple(`LexicalBindingIn`,p.end)] = result;
9436                 return result;
9437             }
9438         }
9439     }
9440 
9441     static TParseTree LexicalBindingIn(string s)
9442     {
9443         if(__ctfe)
9444         {
9445             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.LexicalBindingIn")(TParseTree("", false,[], s));
9446         }
9447         else
9448         {
9449             memo = null;
9450             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.LexicalBindingIn"), "LexicalBindingIn")(TParseTree("", false,[], s));
9451         }
9452     }
9453     static string LexicalBindingIn(GetName g)
9454     {
9455         return "ES6.LexicalBindingIn";
9456     }
9457 
9458     static TParseTree LexicalBindingYield(TParseTree p)
9459     {
9460         if(__ctfe)
9461         {
9462             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.LexicalBindingYield")(p);
9463         }
9464         else
9465         {
9466             if(auto m = tuple(`LexicalBindingYield`,p.end) in memo)
9467                 return *m;
9468             else
9469             {
9470                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.LexicalBindingYield"), "LexicalBindingYield")(p);
9471                 memo[tuple(`LexicalBindingYield`,p.end)] = result;
9472                 return result;
9473             }
9474         }
9475     }
9476 
9477     static TParseTree LexicalBindingYield(string s)
9478     {
9479         if(__ctfe)
9480         {
9481             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.LexicalBindingYield")(TParseTree("", false,[], s));
9482         }
9483         else
9484         {
9485             memo = null;
9486             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.LexicalBindingYield"), "LexicalBindingYield")(TParseTree("", false,[], s));
9487         }
9488     }
9489     static string LexicalBindingYield(GetName g)
9490     {
9491         return "ES6.LexicalBindingYield";
9492     }
9493 
9494     static TParseTree LexicalBindingInYield(TParseTree p)
9495     {
9496         if(__ctfe)
9497         {
9498             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.LexicalBindingInYield")(p);
9499         }
9500         else
9501         {
9502             if(auto m = tuple(`LexicalBindingInYield`,p.end) in memo)
9503                 return *m;
9504             else
9505             {
9506                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.LexicalBindingInYield"), "LexicalBindingInYield")(p);
9507                 memo[tuple(`LexicalBindingInYield`,p.end)] = result;
9508                 return result;
9509             }
9510         }
9511     }
9512 
9513     static TParseTree LexicalBindingInYield(string s)
9514     {
9515         if(__ctfe)
9516         {
9517             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.LexicalBindingInYield")(TParseTree("", false,[], s));
9518         }
9519         else
9520         {
9521             memo = null;
9522             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.LexicalBindingInYield"), "LexicalBindingInYield")(TParseTree("", false,[], s));
9523         }
9524     }
9525     static string LexicalBindingInYield(GetName g)
9526     {
9527         return "ES6.LexicalBindingInYield";
9528     }
9529 
9530     static TParseTree VariableStatement(TParseTree p)
9531     {
9532         if(__ctfe)
9533         {
9534             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListIn, Spacing)), "ES6.VariableStatement")(p);
9535         }
9536         else
9537         {
9538             if(auto m = tuple(`VariableStatement`,p.end) in memo)
9539                 return *m;
9540             else
9541             {
9542                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListIn, Spacing)), "ES6.VariableStatement"), "VariableStatement")(p);
9543                 memo[tuple(`VariableStatement`,p.end)] = result;
9544                 return result;
9545             }
9546         }
9547     }
9548 
9549     static TParseTree VariableStatement(string s)
9550     {
9551         if(__ctfe)
9552         {
9553             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListIn, Spacing)), "ES6.VariableStatement")(TParseTree("", false,[], s));
9554         }
9555         else
9556         {
9557             memo = null;
9558             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListIn, Spacing)), "ES6.VariableStatement"), "VariableStatement")(TParseTree("", false,[], s));
9559         }
9560     }
9561     static string VariableStatement(GetName g)
9562     {
9563         return "ES6.VariableStatement";
9564     }
9565 
9566     static TParseTree VariableStatementYield(TParseTree p)
9567     {
9568         if(__ctfe)
9569         {
9570             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListInYield, Spacing)), "ES6.VariableStatementYield")(p);
9571         }
9572         else
9573         {
9574             if(auto m = tuple(`VariableStatementYield`,p.end) in memo)
9575                 return *m;
9576             else
9577             {
9578                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListInYield, Spacing)), "ES6.VariableStatementYield"), "VariableStatementYield")(p);
9579                 memo[tuple(`VariableStatementYield`,p.end)] = result;
9580                 return result;
9581             }
9582         }
9583     }
9584 
9585     static TParseTree VariableStatementYield(string s)
9586     {
9587         if(__ctfe)
9588         {
9589             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListInYield, Spacing)), "ES6.VariableStatementYield")(TParseTree("", false,[], s));
9590         }
9591         else
9592         {
9593             memo = null;
9594             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationListInYield, Spacing)), "ES6.VariableStatementYield"), "VariableStatementYield")(TParseTree("", false,[], s));
9595         }
9596     }
9597     static string VariableStatementYield(GetName g)
9598     {
9599         return "ES6.VariableStatementYield";
9600     }
9601 
9602     static TParseTree VariableDeclarationList(TParseTree p)
9603     {
9604         if(__ctfe)
9605         {
9606             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing)), Spacing))), "ES6.VariableDeclarationList")(p);
9607         }
9608         else
9609         {
9610             if(auto m = tuple(`VariableDeclarationList`,p.end) in memo)
9611                 return *m;
9612             else
9613             {
9614                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing)), Spacing))), "ES6.VariableDeclarationList"), "VariableDeclarationList")(p);
9615                 memo[tuple(`VariableDeclarationList`,p.end)] = result;
9616                 return result;
9617             }
9618         }
9619     }
9620 
9621     static TParseTree VariableDeclarationList(string s)
9622     {
9623         if(__ctfe)
9624         {
9625             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing)), Spacing))), "ES6.VariableDeclarationList")(TParseTree("", false,[], s));
9626         }
9627         else
9628         {
9629             memo = null;
9630             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclaration, Spacing)), Spacing))), "ES6.VariableDeclarationList"), "VariableDeclarationList")(TParseTree("", false,[], s));
9631         }
9632     }
9633     static string VariableDeclarationList(GetName g)
9634     {
9635         return "ES6.VariableDeclarationList";
9636     }
9637 
9638     static TParseTree VariableDeclarationListIn(TParseTree p)
9639     {
9640         if(__ctfe)
9641         {
9642             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing)), Spacing))), "ES6.VariableDeclarationListIn")(p);
9643         }
9644         else
9645         {
9646             if(auto m = tuple(`VariableDeclarationListIn`,p.end) in memo)
9647                 return *m;
9648             else
9649             {
9650                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing)), Spacing))), "ES6.VariableDeclarationListIn"), "VariableDeclarationListIn")(p);
9651                 memo[tuple(`VariableDeclarationListIn`,p.end)] = result;
9652                 return result;
9653             }
9654         }
9655     }
9656 
9657     static TParseTree VariableDeclarationListIn(string s)
9658     {
9659         if(__ctfe)
9660         {
9661             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing)), Spacing))), "ES6.VariableDeclarationListIn")(TParseTree("", false,[], s));
9662         }
9663         else
9664         {
9665             memo = null;
9666             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationIn, Spacing)), Spacing))), "ES6.VariableDeclarationListIn"), "VariableDeclarationListIn")(TParseTree("", false,[], s));
9667         }
9668     }
9669     static string VariableDeclarationListIn(GetName g)
9670     {
9671         return "ES6.VariableDeclarationListIn";
9672     }
9673 
9674     static TParseTree VariableDeclarationListYield(TParseTree p)
9675     {
9676         if(__ctfe)
9677         {
9678             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing)), Spacing))), "ES6.VariableDeclarationListYield")(p);
9679         }
9680         else
9681         {
9682             if(auto m = tuple(`VariableDeclarationListYield`,p.end) in memo)
9683                 return *m;
9684             else
9685             {
9686                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing)), Spacing))), "ES6.VariableDeclarationListYield"), "VariableDeclarationListYield")(p);
9687                 memo[tuple(`VariableDeclarationListYield`,p.end)] = result;
9688                 return result;
9689             }
9690         }
9691     }
9692 
9693     static TParseTree VariableDeclarationListYield(string s)
9694     {
9695         if(__ctfe)
9696         {
9697             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing)), Spacing))), "ES6.VariableDeclarationListYield")(TParseTree("", false,[], s));
9698         }
9699         else
9700         {
9701             memo = null;
9702             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationYield, Spacing)), Spacing))), "ES6.VariableDeclarationListYield"), "VariableDeclarationListYield")(TParseTree("", false,[], s));
9703         }
9704     }
9705     static string VariableDeclarationListYield(GetName g)
9706     {
9707         return "ES6.VariableDeclarationListYield";
9708     }
9709 
9710     static TParseTree VariableDeclarationListInYield(TParseTree p)
9711     {
9712         if(__ctfe)
9713         {
9714             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing)), Spacing))), "ES6.VariableDeclarationListInYield")(p);
9715         }
9716         else
9717         {
9718             if(auto m = tuple(`VariableDeclarationListInYield`,p.end) in memo)
9719                 return *m;
9720             else
9721             {
9722                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing)), Spacing))), "ES6.VariableDeclarationListInYield"), "VariableDeclarationListInYield")(p);
9723                 memo[tuple(`VariableDeclarationListInYield`,p.end)] = result;
9724                 return result;
9725             }
9726         }
9727     }
9728 
9729     static TParseTree VariableDeclarationListInYield(string s)
9730     {
9731         if(__ctfe)
9732         {
9733             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing)), Spacing))), "ES6.VariableDeclarationListInYield")(TParseTree("", false,[], s));
9734         }
9735         else
9736         {
9737             memo = null;
9738             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, VariableDeclarationInYield, Spacing)), Spacing))), "ES6.VariableDeclarationListInYield"), "VariableDeclarationListInYield")(TParseTree("", false,[], s));
9739         }
9740     }
9741     static string VariableDeclarationListInYield(GetName g)
9742     {
9743         return "ES6.VariableDeclarationListInYield";
9744     }
9745 
9746     static TParseTree VariableDeclaration(TParseTree p)
9747     {
9748         if(__ctfe)
9749         {
9750             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.VariableDeclaration")(p);
9751         }
9752         else
9753         {
9754             if(auto m = tuple(`VariableDeclaration`,p.end) in memo)
9755                 return *m;
9756             else
9757             {
9758                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.VariableDeclaration"), "VariableDeclaration")(p);
9759                 memo[tuple(`VariableDeclaration`,p.end)] = result;
9760                 return result;
9761             }
9762         }
9763     }
9764 
9765     static TParseTree VariableDeclaration(string s)
9766     {
9767         if(__ctfe)
9768         {
9769             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.VariableDeclaration")(TParseTree("", false,[], s));
9770         }
9771         else
9772         {
9773             memo = null;
9774             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, Initializer, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Initializer, Spacing))), Spacing)), "ES6.VariableDeclaration"), "VariableDeclaration")(TParseTree("", false,[], s));
9775         }
9776     }
9777     static string VariableDeclaration(GetName g)
9778     {
9779         return "ES6.VariableDeclaration";
9780     }
9781 
9782     static TParseTree VariableDeclarationIn(TParseTree p)
9783     {
9784         if(__ctfe)
9785         {
9786             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.VariableDeclarationIn")(p);
9787         }
9788         else
9789         {
9790             if(auto m = tuple(`VariableDeclarationIn`,p.end) in memo)
9791                 return *m;
9792             else
9793             {
9794                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.VariableDeclarationIn"), "VariableDeclarationIn")(p);
9795                 memo[tuple(`VariableDeclarationIn`,p.end)] = result;
9796                 return result;
9797             }
9798         }
9799     }
9800 
9801     static TParseTree VariableDeclarationIn(string s)
9802     {
9803         if(__ctfe)
9804         {
9805             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.VariableDeclarationIn")(TParseTree("", false,[], s));
9806         }
9807         else
9808         {
9809             memo = null;
9810             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing)), "ES6.VariableDeclarationIn"), "VariableDeclarationIn")(TParseTree("", false,[], s));
9811         }
9812     }
9813     static string VariableDeclarationIn(GetName g)
9814     {
9815         return "ES6.VariableDeclarationIn";
9816     }
9817 
9818     static TParseTree VariableDeclarationYield(TParseTree p)
9819     {
9820         if(__ctfe)
9821         {
9822             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.VariableDeclarationYield")(p);
9823         }
9824         else
9825         {
9826             if(auto m = tuple(`VariableDeclarationYield`,p.end) in memo)
9827                 return *m;
9828             else
9829             {
9830                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.VariableDeclarationYield"), "VariableDeclarationYield")(p);
9831                 memo[tuple(`VariableDeclarationYield`,p.end)] = result;
9832                 return result;
9833             }
9834         }
9835     }
9836 
9837     static TParseTree VariableDeclarationYield(string s)
9838     {
9839         if(__ctfe)
9840         {
9841             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.VariableDeclarationYield")(TParseTree("", false,[], s));
9842         }
9843         else
9844         {
9845             memo = null;
9846             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerYield, Spacing))), Spacing)), "ES6.VariableDeclarationYield"), "VariableDeclarationYield")(TParseTree("", false,[], s));
9847         }
9848     }
9849     static string VariableDeclarationYield(GetName g)
9850     {
9851         return "ES6.VariableDeclarationYield";
9852     }
9853 
9854     static TParseTree VariableDeclarationInYield(TParseTree p)
9855     {
9856         if(__ctfe)
9857         {
9858             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.VariableDeclarationInYield")(p);
9859         }
9860         else
9861         {
9862             if(auto m = tuple(`VariableDeclarationInYield`,p.end) in memo)
9863                 return *m;
9864             else
9865             {
9866                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.VariableDeclarationInYield"), "VariableDeclarationInYield")(p);
9867                 memo[tuple(`VariableDeclarationInYield`,p.end)] = result;
9868                 return result;
9869             }
9870         }
9871     }
9872 
9873     static TParseTree VariableDeclarationInYield(string s)
9874     {
9875         if(__ctfe)
9876         {
9877             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.VariableDeclarationInYield")(TParseTree("", false,[], s));
9878         }
9879         else
9880         {
9881             memo = null;
9882             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing)), "ES6.VariableDeclarationInYield"), "VariableDeclarationInYield")(TParseTree("", false,[], s));
9883         }
9884     }
9885     static string VariableDeclarationInYield(GetName g)
9886     {
9887         return "ES6.VariableDeclarationInYield";
9888     }
9889 
9890     static TParseTree BindingPattern(TParseTree p)
9891     {
9892         if(__ctfe)
9893         {
9894             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPattern, Spacing)), "ES6.BindingPattern")(p);
9895         }
9896         else
9897         {
9898             if(auto m = tuple(`BindingPattern`,p.end) in memo)
9899                 return *m;
9900             else
9901             {
9902                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPattern, Spacing)), "ES6.BindingPattern"), "BindingPattern")(p);
9903                 memo[tuple(`BindingPattern`,p.end)] = result;
9904                 return result;
9905             }
9906         }
9907     }
9908 
9909     static TParseTree BindingPattern(string s)
9910     {
9911         if(__ctfe)
9912         {
9913             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPattern, Spacing)), "ES6.BindingPattern")(TParseTree("", false,[], s));
9914         }
9915         else
9916         {
9917             memo = null;
9918             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPattern, Spacing)), "ES6.BindingPattern"), "BindingPattern")(TParseTree("", false,[], s));
9919         }
9920     }
9921     static string BindingPattern(GetName g)
9922     {
9923         return "ES6.BindingPattern";
9924     }
9925 
9926     static TParseTree BindingPatternYield(TParseTree p)
9927     {
9928         if(__ctfe)
9929         {
9930             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPatternYield, Spacing)), "ES6.BindingPatternYield")(p);
9931         }
9932         else
9933         {
9934             if(auto m = tuple(`BindingPatternYield`,p.end) in memo)
9935                 return *m;
9936             else
9937             {
9938                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPatternYield, Spacing)), "ES6.BindingPatternYield"), "BindingPatternYield")(p);
9939                 memo[tuple(`BindingPatternYield`,p.end)] = result;
9940                 return result;
9941             }
9942         }
9943     }
9944 
9945     static TParseTree BindingPatternYield(string s)
9946     {
9947         if(__ctfe)
9948         {
9949             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPatternYield, Spacing)), "ES6.BindingPatternYield")(TParseTree("", false,[], s));
9950         }
9951         else
9952         {
9953             memo = null;
9954             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ObjectBindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, ArrayBindingPatternYield, Spacing)), "ES6.BindingPatternYield"), "BindingPatternYield")(TParseTree("", false,[], s));
9955         }
9956     }
9957     static string BindingPatternYield(GetName g)
9958     {
9959         return "ES6.BindingPatternYield";
9960     }
9961 
9962     static TParseTree ObjectBindingPattern(TParseTree p)
9963     {
9964         if(__ctfe)
9965         {
9966             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPattern")(p);
9967         }
9968         else
9969         {
9970             if(auto m = tuple(`ObjectBindingPattern`,p.end) in memo)
9971                 return *m;
9972             else
9973             {
9974                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPattern"), "ObjectBindingPattern")(p);
9975                 memo[tuple(`ObjectBindingPattern`,p.end)] = result;
9976                 return result;
9977             }
9978         }
9979     }
9980 
9981     static TParseTree ObjectBindingPattern(string s)
9982     {
9983         if(__ctfe)
9984         {
9985             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPattern")(TParseTree("", false,[], s));
9986         }
9987         else
9988         {
9989             memo = null;
9990             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPattern"), "ObjectBindingPattern")(TParseTree("", false,[], s));
9991         }
9992     }
9993     static string ObjectBindingPattern(GetName g)
9994     {
9995         return "ES6.ObjectBindingPattern";
9996     }
9997 
9998     static TParseTree ObjectBindingPatternYield(TParseTree p)
9999     {
10000         if(__ctfe)
10001         {
10002             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPatternYield")(p);
10003         }
10004         else
10005         {
10006             if(auto m = tuple(`ObjectBindingPatternYield`,p.end) in memo)
10007                 return *m;
10008             else
10009             {
10010                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPatternYield"), "ObjectBindingPatternYield")(p);
10011                 memo[tuple(`ObjectBindingPatternYield`,p.end)] = result;
10012                 return result;
10013             }
10014         }
10015     }
10016 
10017     static TParseTree ObjectBindingPatternYield(string s)
10018     {
10019         if(__ctfe)
10020         {
10021             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPatternYield")(TParseTree("", false,[], s));
10022         }
10023         else
10024         {
10025             memo = null;
10026             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), Spacing))), Spacing))), Spacing), "ES6.ObjectBindingPatternYield"), "ObjectBindingPatternYield")(TParseTree("", false,[], s));
10027         }
10028     }
10029     static string ObjectBindingPatternYield(GetName g)
10030     {
10031         return "ES6.ObjectBindingPatternYield";
10032     }
10033 
10034     static TParseTree ArrayBindingPattern(TParseTree p)
10035     {
10036         if(__ctfe)
10037         {
10038             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing)), Spacing)), "ES6.ArrayBindingPattern")(p);
10039         }
10040         else
10041         {
10042             if(auto m = tuple(`ArrayBindingPattern`,p.end) in memo)
10043                 return *m;
10044             else
10045             {
10046                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing)), Spacing)), "ES6.ArrayBindingPattern"), "ArrayBindingPattern")(p);
10047                 memo[tuple(`ArrayBindingPattern`,p.end)] = result;
10048                 return result;
10049             }
10050         }
10051     }
10052 
10053     static TParseTree ArrayBindingPattern(string s)
10054     {
10055         if(__ctfe)
10056         {
10057             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing)), Spacing)), "ES6.ArrayBindingPattern")(TParseTree("", false,[], s));
10058         }
10059         else
10060         {
10061             memo = null;
10062             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementList, Spacing)), Spacing)), "ES6.ArrayBindingPattern"), "ArrayBindingPattern")(TParseTree("", false,[], s));
10063         }
10064     }
10065     static string ArrayBindingPattern(GetName g)
10066     {
10067         return "ES6.ArrayBindingPattern";
10068     }
10069 
10070     static TParseTree ArrayBindingPatternYield(TParseTree p)
10071     {
10072         if(__ctfe)
10073         {
10074             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing)), Spacing)), "ES6.ArrayBindingPatternYield")(p);
10075         }
10076         else
10077         {
10078             if(auto m = tuple(`ArrayBindingPatternYield`,p.end) in memo)
10079                 return *m;
10080             else
10081             {
10082                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing)), Spacing)), "ES6.ArrayBindingPatternYield"), "ArrayBindingPatternYield")(p);
10083                 memo[tuple(`ArrayBindingPatternYield`,p.end)] = result;
10084                 return result;
10085             }
10086         }
10087     }
10088 
10089     static TParseTree ArrayBindingPatternYield(string s)
10090     {
10091         if(__ctfe)
10092         {
10093             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing)), Spacing)), "ES6.ArrayBindingPatternYield")(TParseTree("", false,[], s));
10094         }
10095         else
10096         {
10097             memo = null;
10098             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing))), Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, SquareBrackets!(pegged.peg.wrapAround!(Spacing, BindingElementListYield, Spacing)), Spacing)), "ES6.ArrayBindingPatternYield"), "ArrayBindingPatternYield")(TParseTree("", false,[], s));
10099         }
10100     }
10101     static string ArrayBindingPatternYield(GetName g)
10102     {
10103         return "ES6.ArrayBindingPatternYield";
10104     }
10105 
10106     static TParseTree BindingPropertyList(TParseTree p)
10107     {
10108         if(__ctfe)
10109         {
10110             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing)), Spacing))), "ES6.BindingPropertyList")(p);
10111         }
10112         else
10113         {
10114             if(auto m = tuple(`BindingPropertyList`,p.end) in memo)
10115                 return *m;
10116             else
10117             {
10118                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing)), Spacing))), "ES6.BindingPropertyList"), "BindingPropertyList")(p);
10119                 memo[tuple(`BindingPropertyList`,p.end)] = result;
10120                 return result;
10121             }
10122         }
10123     }
10124 
10125     static TParseTree BindingPropertyList(string s)
10126     {
10127         if(__ctfe)
10128         {
10129             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing)), Spacing))), "ES6.BindingPropertyList")(TParseTree("", false,[], s));
10130         }
10131         else
10132         {
10133             memo = null;
10134             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingProperty, Spacing)), Spacing))), "ES6.BindingPropertyList"), "BindingPropertyList")(TParseTree("", false,[], s));
10135         }
10136     }
10137     static string BindingPropertyList(GetName g)
10138     {
10139         return "ES6.BindingPropertyList";
10140     }
10141 
10142     static TParseTree BindingPropertyListYield(TParseTree p)
10143     {
10144         if(__ctfe)
10145         {
10146             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing)), Spacing))), "ES6.BindingPropertyListYield")(p);
10147         }
10148         else
10149         {
10150             if(auto m = tuple(`BindingPropertyListYield`,p.end) in memo)
10151                 return *m;
10152             else
10153             {
10154                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing)), Spacing))), "ES6.BindingPropertyListYield"), "BindingPropertyListYield")(p);
10155                 memo[tuple(`BindingPropertyListYield`,p.end)] = result;
10156                 return result;
10157             }
10158         }
10159     }
10160 
10161     static TParseTree BindingPropertyListYield(string s)
10162     {
10163         if(__ctfe)
10164         {
10165             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing)), Spacing))), "ES6.BindingPropertyListYield")(TParseTree("", false,[], s));
10166         }
10167         else
10168         {
10169             memo = null;
10170             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingPropertyYield, Spacing)), Spacing))), "ES6.BindingPropertyListYield"), "BindingPropertyListYield")(TParseTree("", false,[], s));
10171         }
10172     }
10173     static string BindingPropertyListYield(GetName g)
10174     {
10175         return "ES6.BindingPropertyListYield";
10176     }
10177 
10178     static TParseTree BindingElementList(TParseTree p)
10179     {
10180         if(__ctfe)
10181         {
10182             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing)), Spacing))), "ES6.BindingElementList")(p);
10183         }
10184         else
10185         {
10186             if(auto m = tuple(`BindingElementList`,p.end) in memo)
10187                 return *m;
10188             else
10189             {
10190                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing)), Spacing))), "ES6.BindingElementList"), "BindingElementList")(p);
10191                 memo[tuple(`BindingElementList`,p.end)] = result;
10192                 return result;
10193             }
10194         }
10195     }
10196 
10197     static TParseTree BindingElementList(string s)
10198     {
10199         if(__ctfe)
10200         {
10201             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing)), Spacing))), "ES6.BindingElementList")(TParseTree("", false,[], s));
10202         }
10203         else
10204         {
10205             memo = null;
10206             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElement, Spacing)), Spacing))), "ES6.BindingElementList"), "BindingElementList")(TParseTree("", false,[], s));
10207         }
10208     }
10209     static string BindingElementList(GetName g)
10210     {
10211         return "ES6.BindingElementList";
10212     }
10213 
10214     static TParseTree BindingElementListYield(TParseTree p)
10215     {
10216         if(__ctfe)
10217         {
10218             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing)), Spacing))), "ES6.BindingElementListYield")(p);
10219         }
10220         else
10221         {
10222             if(auto m = tuple(`BindingElementListYield`,p.end) in memo)
10223                 return *m;
10224             else
10225             {
10226                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing)), Spacing))), "ES6.BindingElementListYield"), "BindingElementListYield")(p);
10227                 memo[tuple(`BindingElementListYield`,p.end)] = result;
10228                 return result;
10229             }
10230         }
10231     }
10232 
10233     static TParseTree BindingElementListYield(string s)
10234     {
10235         if(__ctfe)
10236         {
10237             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing)), Spacing))), "ES6.BindingElementListYield")(TParseTree("", false,[], s));
10238         }
10239         else
10240         {
10241             memo = null;
10242             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, BindingElisionElementYield, Spacing)), Spacing))), "ES6.BindingElementListYield"), "BindingElementListYield")(TParseTree("", false,[], s));
10243         }
10244     }
10245     static string BindingElementListYield(GetName g)
10246     {
10247         return "ES6.BindingElementListYield";
10248     }
10249 
10250     static TParseTree BindingElisionElement(TParseTree p)
10251     {
10252         if(__ctfe)
10253         {
10254             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), "ES6.BindingElisionElement")(p);
10255         }
10256         else
10257         {
10258             if(auto m = tuple(`BindingElisionElement`,p.end) in memo)
10259                 return *m;
10260             else
10261             {
10262                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), "ES6.BindingElisionElement"), "BindingElisionElement")(p);
10263                 memo[tuple(`BindingElisionElement`,p.end)] = result;
10264                 return result;
10265             }
10266         }
10267     }
10268 
10269     static TParseTree BindingElisionElement(string s)
10270     {
10271         if(__ctfe)
10272         {
10273             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), "ES6.BindingElisionElement")(TParseTree("", false,[], s));
10274         }
10275         else
10276         {
10277             memo = null;
10278             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), "ES6.BindingElisionElement"), "BindingElisionElement")(TParseTree("", false,[], s));
10279         }
10280     }
10281     static string BindingElisionElement(GetName g)
10282     {
10283         return "ES6.BindingElisionElement";
10284     }
10285 
10286     static TParseTree BindingElisionElementYield(TParseTree p)
10287     {
10288         if(__ctfe)
10289         {
10290             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), "ES6.BindingElisionElementYield")(p);
10291         }
10292         else
10293         {
10294             if(auto m = tuple(`BindingElisionElementYield`,p.end) in memo)
10295                 return *m;
10296             else
10297             {
10298                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), "ES6.BindingElisionElementYield"), "BindingElisionElementYield")(p);
10299                 memo[tuple(`BindingElisionElementYield`,p.end)] = result;
10300                 return result;
10301             }
10302         }
10303     }
10304 
10305     static TParseTree BindingElisionElementYield(string s)
10306     {
10307         if(__ctfe)
10308         {
10309             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), "ES6.BindingElisionElementYield")(TParseTree("", false,[], s));
10310         }
10311         else
10312         {
10313             memo = null;
10314             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Elision, Spacing)), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), "ES6.BindingElisionElementYield"), "BindingElisionElementYield")(TParseTree("", false,[], s));
10315         }
10316     }
10317     static string BindingElisionElementYield(GetName g)
10318     {
10319         return "ES6.BindingElisionElementYield";
10320     }
10321 
10322     static TParseTree BindingProperty(TParseTree p)
10323     {
10324         if(__ctfe)
10325         {
10326             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingProperty")(p);
10327         }
10328         else
10329         {
10330             if(auto m = tuple(`BindingProperty`,p.end) in memo)
10331                 return *m;
10332             else
10333             {
10334                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingProperty"), "BindingProperty")(p);
10335                 memo[tuple(`BindingProperty`,p.end)] = result;
10336                 return result;
10337             }
10338         }
10339     }
10340 
10341     static TParseTree BindingProperty(string s)
10342     {
10343         if(__ctfe)
10344         {
10345             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingProperty")(TParseTree("", false,[], s));
10346         }
10347         else
10348         {
10349             memo = null;
10350             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingProperty"), "BindingProperty")(TParseTree("", false,[], s));
10351         }
10352     }
10353     static string BindingProperty(GetName g)
10354     {
10355         return "ES6.BindingProperty";
10356     }
10357 
10358     static TParseTree BindingPropertyYield(TParseTree p)
10359     {
10360         if(__ctfe)
10361         {
10362             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingPropertyYield")(p);
10363         }
10364         else
10365         {
10366             if(auto m = tuple(`BindingPropertyYield`,p.end) in memo)
10367                 return *m;
10368             else
10369             {
10370                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingPropertyYield"), "BindingPropertyYield")(p);
10371                 memo[tuple(`BindingPropertyYield`,p.end)] = result;
10372                 return result;
10373             }
10374         }
10375     }
10376 
10377     static TParseTree BindingPropertyYield(string s)
10378     {
10379         if(__ctfe)
10380         {
10381             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingPropertyYield")(TParseTree("", false,[], s));
10382         }
10383         else
10384         {
10385             memo = null;
10386             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing), pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingPropertyYield"), "BindingPropertyYield")(TParseTree("", false,[], s));
10387         }
10388     }
10389     static string BindingPropertyYield(GetName g)
10390     {
10391         return "ES6.BindingPropertyYield";
10392     }
10393 
10394     static TParseTree BindingElement(TParseTree p)
10395     {
10396         if(__ctfe)
10397         {
10398             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingElement")(p);
10399         }
10400         else
10401         {
10402             if(auto m = tuple(`BindingElement`,p.end) in memo)
10403                 return *m;
10404             else
10405             {
10406                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingElement"), "BindingElement")(p);
10407                 memo[tuple(`BindingElement`,p.end)] = result;
10408                 return result;
10409             }
10410         }
10411     }
10412 
10413     static TParseTree BindingElement(string s)
10414     {
10415         if(__ctfe)
10416         {
10417             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingElement")(TParseTree("", false,[], s));
10418         }
10419         else
10420         {
10421             memo = null;
10422             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBinding, Spacing)), "ES6.BindingElement"), "BindingElement")(TParseTree("", false,[], s));
10423         }
10424     }
10425     static string BindingElement(GetName g)
10426     {
10427         return "ES6.BindingElement";
10428     }
10429 
10430     static TParseTree BindingElementYield(TParseTree p)
10431     {
10432         if(__ctfe)
10433         {
10434             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingElementYield")(p);
10435         }
10436         else
10437         {
10438             if(auto m = tuple(`BindingElementYield`,p.end) in memo)
10439                 return *m;
10440             else
10441             {
10442                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingElementYield"), "BindingElementYield")(p);
10443                 memo[tuple(`BindingElementYield`,p.end)] = result;
10444                 return result;
10445             }
10446         }
10447     }
10448 
10449     static TParseTree BindingElementYield(string s)
10450     {
10451         if(__ctfe)
10452         {
10453             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingElementYield")(TParseTree("", false,[], s));
10454         }
10455         else
10456         {
10457             memo = null;
10458             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, SingleNameBindingYield, Spacing)), "ES6.BindingElementYield"), "BindingElementYield")(TParseTree("", false,[], s));
10459         }
10460     }
10461     static string BindingElementYield(GetName g)
10462     {
10463         return "ES6.BindingElementYield";
10464     }
10465 
10466     static TParseTree SingleNameBinding(TParseTree p)
10467     {
10468         if(__ctfe)
10469         {
10470             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), "ES6.SingleNameBinding")(p);
10471         }
10472         else
10473         {
10474             if(auto m = tuple(`SingleNameBinding`,p.end) in memo)
10475                 return *m;
10476             else
10477             {
10478                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), "ES6.SingleNameBinding"), "SingleNameBinding")(p);
10479                 memo[tuple(`SingleNameBinding`,p.end)] = result;
10480                 return result;
10481             }
10482         }
10483     }
10484 
10485     static TParseTree SingleNameBinding(string s)
10486     {
10487         if(__ctfe)
10488         {
10489             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), "ES6.SingleNameBinding")(TParseTree("", false,[], s));
10490         }
10491         else
10492         {
10493             memo = null;
10494             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerIn, Spacing))), "ES6.SingleNameBinding"), "SingleNameBinding")(TParseTree("", false,[], s));
10495         }
10496     }
10497     static string SingleNameBinding(GetName g)
10498     {
10499         return "ES6.SingleNameBinding";
10500     }
10501 
10502     static TParseTree SingleNameBindingYield(TParseTree p)
10503     {
10504         if(__ctfe)
10505         {
10506             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), "ES6.SingleNameBindingYield")(p);
10507         }
10508         else
10509         {
10510             if(auto m = tuple(`SingleNameBindingYield`,p.end) in memo)
10511                 return *m;
10512             else
10513             {
10514                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), "ES6.SingleNameBindingYield"), "SingleNameBindingYield")(p);
10515                 memo[tuple(`SingleNameBindingYield`,p.end)] = result;
10516                 return result;
10517             }
10518         }
10519     }
10520 
10521     static TParseTree SingleNameBindingYield(string s)
10522     {
10523         if(__ctfe)
10524         {
10525             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), "ES6.SingleNameBindingYield")(TParseTree("", false,[], s));
10526         }
10527         else
10528         {
10529             memo = null;
10530             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, InitializerInYield, Spacing))), "ES6.SingleNameBindingYield"), "SingleNameBindingYield")(TParseTree("", false,[], s));
10531         }
10532     }
10533     static string SingleNameBindingYield(GetName g)
10534     {
10535         return "ES6.SingleNameBindingYield";
10536     }
10537 
10538     static TParseTree BindingRestElement(TParseTree p)
10539     {
10540         if(__ctfe)
10541         {
10542             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.BindingRestElement")(p);
10543         }
10544         else
10545         {
10546             if(auto m = tuple(`BindingRestElement`,p.end) in memo)
10547                 return *m;
10548             else
10549             {
10550                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.BindingRestElement"), "BindingRestElement")(p);
10551                 memo[tuple(`BindingRestElement`,p.end)] = result;
10552                 return result;
10553             }
10554         }
10555     }
10556 
10557     static TParseTree BindingRestElement(string s)
10558     {
10559         if(__ctfe)
10560         {
10561             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.BindingRestElement")(TParseTree("", false,[], s));
10562         }
10563         else
10564         {
10565             memo = null;
10566             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.BindingRestElement"), "BindingRestElement")(TParseTree("", false,[], s));
10567         }
10568     }
10569     static string BindingRestElement(GetName g)
10570     {
10571         return "ES6.BindingRestElement";
10572     }
10573 
10574     static TParseTree BindingRestElementYield(TParseTree p)
10575     {
10576         if(__ctfe)
10577         {
10578             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.BindingRestElementYield")(p);
10579         }
10580         else
10581         {
10582             if(auto m = tuple(`BindingRestElementYield`,p.end) in memo)
10583                 return *m;
10584             else
10585             {
10586                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.BindingRestElementYield"), "BindingRestElementYield")(p);
10587                 memo[tuple(`BindingRestElementYield`,p.end)] = result;
10588                 return result;
10589             }
10590         }
10591     }
10592 
10593     static TParseTree BindingRestElementYield(string s)
10594     {
10595         if(__ctfe)
10596         {
10597             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.BindingRestElementYield")(TParseTree("", false,[], s));
10598         }
10599         else
10600         {
10601             memo = null;
10602             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("..."), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.BindingRestElementYield"), "BindingRestElementYield")(TParseTree("", false,[], s));
10603         }
10604     }
10605     static string BindingRestElementYield(GetName g)
10606     {
10607         return "ES6.BindingRestElementYield";
10608     }
10609 
10610     static TParseTree EmptyStatement(TParseTree p)
10611     {
10612         if(__ctfe)
10613         {
10614             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.EmptyStatement")(p);
10615         }
10616         else
10617         {
10618             if(auto m = tuple(`EmptyStatement`,p.end) in memo)
10619                 return *m;
10620             else
10621             {
10622                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.EmptyStatement"), "EmptyStatement")(p);
10623                 memo[tuple(`EmptyStatement`,p.end)] = result;
10624                 return result;
10625             }
10626         }
10627     }
10628 
10629     static TParseTree EmptyStatement(string s)
10630     {
10631         if(__ctfe)
10632         {
10633             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.EmptyStatement")(TParseTree("", false,[], s));
10634         }
10635         else
10636         {
10637             memo = null;
10638             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.EmptyStatement"), "EmptyStatement")(TParseTree("", false,[], s));
10639         }
10640     }
10641     static string EmptyStatement(GetName g)
10642     {
10643         return "ES6.EmptyStatement";
10644     }
10645 
10646     static TParseTree ExpressionStatement(TParseTree p)
10647     {
10648         if(__ctfe)
10649         {
10650             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.ExpressionStatement")(p);
10651         }
10652         else
10653         {
10654             if(auto m = tuple(`ExpressionStatement`,p.end) in memo)
10655                 return *m;
10656             else
10657             {
10658                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.ExpressionStatement"), "ExpressionStatement")(p);
10659                 memo[tuple(`ExpressionStatement`,p.end)] = result;
10660                 return result;
10661             }
10662         }
10663     }
10664 
10665     static TParseTree ExpressionStatement(string s)
10666     {
10667         if(__ctfe)
10668         {
10669             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.ExpressionStatement")(TParseTree("", false,[], s));
10670         }
10671         else
10672         {
10673             memo = null;
10674             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), "ES6.ExpressionStatement"), "ExpressionStatement")(TParseTree("", false,[], s));
10675         }
10676     }
10677     static string ExpressionStatement(GetName g)
10678     {
10679         return "ES6.ExpressionStatement";
10680     }
10681 
10682     static TParseTree ExpressionStatementYield(TParseTree p)
10683     {
10684         if(__ctfe)
10685         {
10686             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.ExpressionStatementYield")(p);
10687         }
10688         else
10689         {
10690             if(auto m = tuple(`ExpressionStatementYield`,p.end) in memo)
10691                 return *m;
10692             else
10693             {
10694                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.ExpressionStatementYield"), "ExpressionStatementYield")(p);
10695                 memo[tuple(`ExpressionStatementYield`,p.end)] = result;
10696                 return result;
10697             }
10698         }
10699     }
10700 
10701     static TParseTree ExpressionStatementYield(string s)
10702     {
10703         if(__ctfe)
10704         {
10705             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.ExpressionStatementYield")(TParseTree("", false,[], s));
10706         }
10707         else
10708         {
10709             memo = null;
10710             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("class"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), Spacing), pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, IdentifierStart, Spacing), pegged.peg.wrapAround!(Spacing, IdentifierPart, Spacing)), Spacing))), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), "ES6.ExpressionStatementYield"), "ExpressionStatementYield")(TParseTree("", false,[], s));
10711         }
10712     }
10713     static string ExpressionStatementYield(GetName g)
10714     {
10715         return "ES6.ExpressionStatementYield";
10716     }
10717 
10718     static TParseTree ElseKeyword(TParseTree p)
10719     {
10720         if(__ctfe)
10721         {
10722             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("else"), Spacing), "ES6.ElseKeyword")(p);
10723         }
10724         else
10725         {
10726             if(auto m = tuple(`ElseKeyword`,p.end) in memo)
10727                 return *m;
10728             else
10729             {
10730                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("else"), Spacing), "ES6.ElseKeyword"), "ElseKeyword")(p);
10731                 memo[tuple(`ElseKeyword`,p.end)] = result;
10732                 return result;
10733             }
10734         }
10735     }
10736 
10737     static TParseTree ElseKeyword(string s)
10738     {
10739         if(__ctfe)
10740         {
10741             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("else"), Spacing), "ES6.ElseKeyword")(TParseTree("", false,[], s));
10742         }
10743         else
10744         {
10745             memo = null;
10746             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("else"), Spacing), "ES6.ElseKeyword"), "ElseKeyword")(TParseTree("", false,[], s));
10747         }
10748     }
10749     static string ElseKeyword(GetName g)
10750     {
10751         return "ES6.ElseKeyword";
10752     }
10753 
10754     static TParseTree IfStatement(TParseTree p)
10755     {
10756         if(__ctfe)
10757         {
10758             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing))), "ES6.IfStatement")(p);
10759         }
10760         else
10761         {
10762             if(auto m = tuple(`IfStatement`,p.end) in memo)
10763                 return *m;
10764             else
10765             {
10766                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing))), "ES6.IfStatement"), "IfStatement")(p);
10767                 memo[tuple(`IfStatement`,p.end)] = result;
10768                 return result;
10769             }
10770         }
10771     }
10772 
10773     static TParseTree IfStatement(string s)
10774     {
10775         if(__ctfe)
10776         {
10777             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing))), "ES6.IfStatement")(TParseTree("", false,[], s));
10778         }
10779         else
10780         {
10781             memo = null;
10782             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing))), "ES6.IfStatement"), "IfStatement")(TParseTree("", false,[], s));
10783         }
10784     }
10785     static string IfStatement(GetName g)
10786     {
10787         return "ES6.IfStatement";
10788     }
10789 
10790     static TParseTree IfStatementYield(TParseTree p)
10791     {
10792         if(__ctfe)
10793         {
10794             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing))), "ES6.IfStatementYield")(p);
10795         }
10796         else
10797         {
10798             if(auto m = tuple(`IfStatementYield`,p.end) in memo)
10799                 return *m;
10800             else
10801             {
10802                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing))), "ES6.IfStatementYield"), "IfStatementYield")(p);
10803                 memo[tuple(`IfStatementYield`,p.end)] = result;
10804                 return result;
10805             }
10806         }
10807     }
10808 
10809     static TParseTree IfStatementYield(string s)
10810     {
10811         if(__ctfe)
10812         {
10813             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing))), "ES6.IfStatementYield")(TParseTree("", false,[], s));
10814         }
10815         else
10816         {
10817             memo = null;
10818             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing))), "ES6.IfStatementYield"), "IfStatementYield")(TParseTree("", false,[], s));
10819         }
10820     }
10821     static string IfStatementYield(GetName g)
10822     {
10823         return "ES6.IfStatementYield";
10824     }
10825 
10826     static TParseTree IfStatementReturn(TParseTree p)
10827     {
10828         if(__ctfe)
10829         {
10830             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing))), "ES6.IfStatementReturn")(p);
10831         }
10832         else
10833         {
10834             if(auto m = tuple(`IfStatementReturn`,p.end) in memo)
10835                 return *m;
10836             else
10837             {
10838                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing))), "ES6.IfStatementReturn"), "IfStatementReturn")(p);
10839                 memo[tuple(`IfStatementReturn`,p.end)] = result;
10840                 return result;
10841             }
10842         }
10843     }
10844 
10845     static TParseTree IfStatementReturn(string s)
10846     {
10847         if(__ctfe)
10848         {
10849             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing))), "ES6.IfStatementReturn")(TParseTree("", false,[], s));
10850         }
10851         else
10852         {
10853             memo = null;
10854             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing))), "ES6.IfStatementReturn"), "IfStatementReturn")(TParseTree("", false,[], s));
10855         }
10856     }
10857     static string IfStatementReturn(GetName g)
10858     {
10859         return "ES6.IfStatementReturn";
10860     }
10861 
10862     static TParseTree IfStatementYieldReturn(TParseTree p)
10863     {
10864         if(__ctfe)
10865         {
10866             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing))), "ES6.IfStatementYieldReturn")(p);
10867         }
10868         else
10869         {
10870             if(auto m = tuple(`IfStatementYieldReturn`,p.end) in memo)
10871                 return *m;
10872             else
10873             {
10874                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing))), "ES6.IfStatementYieldReturn"), "IfStatementYieldReturn")(p);
10875                 memo[tuple(`IfStatementYieldReturn`,p.end)] = result;
10876                 return result;
10877             }
10878         }
10879     }
10880 
10881     static TParseTree IfStatementYieldReturn(string s)
10882     {
10883         if(__ctfe)
10884         {
10885             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing))), "ES6.IfStatementYieldReturn")(TParseTree("", false,[], s));
10886         }
10887         else
10888         {
10889             memo = null;
10890             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("if"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ElseKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing))), "ES6.IfStatementYieldReturn"), "IfStatementYieldReturn")(TParseTree("", false,[], s));
10891         }
10892     }
10893     static string IfStatementYieldReturn(GetName g)
10894     {
10895         return "ES6.IfStatementYieldReturn";
10896     }
10897 
10898     static TParseTree DoKeyword(TParseTree p)
10899     {
10900         if(__ctfe)
10901         {
10902             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("do"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.DoKeyword")(p);
10903         }
10904         else
10905         {
10906             if(auto m = tuple(`DoKeyword`,p.end) in memo)
10907                 return *m;
10908             else
10909             {
10910                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("do"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.DoKeyword"), "DoKeyword")(p);
10911                 memo[tuple(`DoKeyword`,p.end)] = result;
10912                 return result;
10913             }
10914         }
10915     }
10916 
10917     static TParseTree DoKeyword(string s)
10918     {
10919         if(__ctfe)
10920         {
10921             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("do"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.DoKeyword")(TParseTree("", false,[], s));
10922         }
10923         else
10924         {
10925             memo = null;
10926             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("do"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart))), "ES6.DoKeyword"), "DoKeyword")(TParseTree("", false,[], s));
10927         }
10928     }
10929     static string DoKeyword(GetName g)
10930     {
10931         return "ES6.DoKeyword";
10932     }
10933 
10934     static TParseTree WhileKeyword(TParseTree p)
10935     {
10936         if(__ctfe)
10937         {
10938             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("while"), Spacing), "ES6.WhileKeyword")(p);
10939         }
10940         else
10941         {
10942             if(auto m = tuple(`WhileKeyword`,p.end) in memo)
10943                 return *m;
10944             else
10945             {
10946                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("while"), Spacing), "ES6.WhileKeyword"), "WhileKeyword")(p);
10947                 memo[tuple(`WhileKeyword`,p.end)] = result;
10948                 return result;
10949             }
10950         }
10951     }
10952 
10953     static TParseTree WhileKeyword(string s)
10954     {
10955         if(__ctfe)
10956         {
10957             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("while"), Spacing), "ES6.WhileKeyword")(TParseTree("", false,[], s));
10958         }
10959         else
10960         {
10961             memo = null;
10962             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("while"), Spacing), "ES6.WhileKeyword"), "WhileKeyword")(TParseTree("", false,[], s));
10963         }
10964     }
10965     static string WhileKeyword(GetName g)
10966     {
10967         return "ES6.WhileKeyword";
10968     }
10969 
10970     static TParseTree ForKeyword(TParseTree p)
10971     {
10972         if(__ctfe)
10973         {
10974             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("for"), Spacing), "ES6.ForKeyword")(p);
10975         }
10976         else
10977         {
10978             if(auto m = tuple(`ForKeyword`,p.end) in memo)
10979                 return *m;
10980             else
10981             {
10982                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("for"), Spacing), "ES6.ForKeyword"), "ForKeyword")(p);
10983                 memo[tuple(`ForKeyword`,p.end)] = result;
10984                 return result;
10985             }
10986         }
10987     }
10988 
10989     static TParseTree ForKeyword(string s)
10990     {
10991         if(__ctfe)
10992         {
10993             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("for"), Spacing), "ES6.ForKeyword")(TParseTree("", false,[], s));
10994         }
10995         else
10996         {
10997             memo = null;
10998             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("for"), Spacing), "ES6.ForKeyword"), "ForKeyword")(TParseTree("", false,[], s));
10999         }
11000     }
11001     static string ForKeyword(GetName g)
11002     {
11003         return "ES6.ForKeyword";
11004     }
11005 
11006     static TParseTree VarKeyword(TParseTree p)
11007     {
11008         if(__ctfe)
11009         {
11010             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing), "ES6.VarKeyword")(p);
11011         }
11012         else
11013         {
11014             if(auto m = tuple(`VarKeyword`,p.end) in memo)
11015                 return *m;
11016             else
11017             {
11018                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing), "ES6.VarKeyword"), "VarKeyword")(p);
11019                 memo[tuple(`VarKeyword`,p.end)] = result;
11020                 return result;
11021             }
11022         }
11023     }
11024 
11025     static TParseTree VarKeyword(string s)
11026     {
11027         if(__ctfe)
11028         {
11029             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing), "ES6.VarKeyword")(TParseTree("", false,[], s));
11030         }
11031         else
11032         {
11033             memo = null;
11034             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("var"), Spacing), "ES6.VarKeyword"), "VarKeyword")(TParseTree("", false,[], s));
11035         }
11036     }
11037     static string VarKeyword(GetName g)
11038     {
11039         return "ES6.VarKeyword";
11040     }
11041 
11042     static TParseTree InKeyword(TParseTree p)
11043     {
11044         if(__ctfe)
11045         {
11046             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing), "ES6.InKeyword")(p);
11047         }
11048         else
11049         {
11050             if(auto m = tuple(`InKeyword`,p.end) in memo)
11051                 return *m;
11052             else
11053             {
11054                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing), "ES6.InKeyword"), "InKeyword")(p);
11055                 memo[tuple(`InKeyword`,p.end)] = result;
11056                 return result;
11057             }
11058         }
11059     }
11060 
11061     static TParseTree InKeyword(string s)
11062     {
11063         if(__ctfe)
11064         {
11065             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing), "ES6.InKeyword")(TParseTree("", false,[], s));
11066         }
11067         else
11068         {
11069             memo = null;
11070             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("in"), Spacing), "ES6.InKeyword"), "InKeyword")(TParseTree("", false,[], s));
11071         }
11072     }
11073     static string InKeyword(GetName g)
11074     {
11075         return "ES6.InKeyword";
11076     }
11077 
11078     static TParseTree OfKeyword(TParseTree p)
11079     {
11080         if(__ctfe)
11081         {
11082             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("of"), Spacing), "ES6.OfKeyword")(p);
11083         }
11084         else
11085         {
11086             if(auto m = tuple(`OfKeyword`,p.end) in memo)
11087                 return *m;
11088             else
11089             {
11090                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("of"), Spacing), "ES6.OfKeyword"), "OfKeyword")(p);
11091                 memo[tuple(`OfKeyword`,p.end)] = result;
11092                 return result;
11093             }
11094         }
11095     }
11096 
11097     static TParseTree OfKeyword(string s)
11098     {
11099         if(__ctfe)
11100         {
11101             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("of"), Spacing), "ES6.OfKeyword")(TParseTree("", false,[], s));
11102         }
11103         else
11104         {
11105             memo = null;
11106             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("of"), Spacing), "ES6.OfKeyword"), "OfKeyword")(TParseTree("", false,[], s));
11107         }
11108     }
11109     static string OfKeyword(GetName g)
11110     {
11111         return "ES6.OfKeyword";
11112     }
11113 
11114     static TParseTree Semicolon(TParseTree p)
11115     {
11116         if(__ctfe)
11117         {
11118             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.Semicolon")(p);
11119         }
11120         else
11121         {
11122             if(auto m = tuple(`Semicolon`,p.end) in memo)
11123                 return *m;
11124             else
11125             {
11126                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.Semicolon"), "Semicolon")(p);
11127                 memo[tuple(`Semicolon`,p.end)] = result;
11128                 return result;
11129             }
11130         }
11131     }
11132 
11133     static TParseTree Semicolon(string s)
11134     {
11135         if(__ctfe)
11136         {
11137             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.Semicolon")(TParseTree("", false,[], s));
11138         }
11139         else
11140         {
11141             memo = null;
11142             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing), "ES6.Semicolon"), "Semicolon")(TParseTree("", false,[], s));
11143         }
11144     }
11145     static string Semicolon(GetName g)
11146     {
11147         return "ES6.Semicolon";
11148     }
11149 
11150     static TParseTree IterationStatement(TParseTree p)
11151     {
11152         if(__ctfe)
11153         {
11154             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing)), "ES6.IterationStatement")(p);
11155         }
11156         else
11157         {
11158             if(auto m = tuple(`IterationStatement`,p.end) in memo)
11159                 return *m;
11160             else
11161             {
11162                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing)), "ES6.IterationStatement"), "IterationStatement")(p);
11163                 memo[tuple(`IterationStatement`,p.end)] = result;
11164                 return result;
11165             }
11166         }
11167     }
11168 
11169     static TParseTree IterationStatement(string s)
11170     {
11171         if(__ctfe)
11172         {
11173             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing)), "ES6.IterationStatement")(TParseTree("", false,[], s));
11174         }
11175         else
11176         {
11177             memo = null;
11178             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), Spacing)), "ES6.IterationStatement"), "IterationStatement")(TParseTree("", false,[], s));
11179         }
11180     }
11181     static string IterationStatement(GetName g)
11182     {
11183         return "ES6.IterationStatement";
11184     }
11185 
11186     static TParseTree IterationStatementYield(TParseTree p)
11187     {
11188         if(__ctfe)
11189         {
11190             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing)), "ES6.IterationStatementYield")(p);
11191         }
11192         else
11193         {
11194             if(auto m = tuple(`IterationStatementYield`,p.end) in memo)
11195                 return *m;
11196             else
11197             {
11198                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing)), "ES6.IterationStatementYield"), "IterationStatementYield")(p);
11199                 memo[tuple(`IterationStatementYield`,p.end)] = result;
11200                 return result;
11201             }
11202         }
11203     }
11204 
11205     static TParseTree IterationStatementYield(string s)
11206     {
11207         if(__ctfe)
11208         {
11209             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing)), "ES6.IterationStatementYield")(TParseTree("", false,[], s));
11210         }
11211         else
11212         {
11213             memo = null;
11214             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), Spacing)), "ES6.IterationStatementYield"), "IterationStatementYield")(TParseTree("", false,[], s));
11215         }
11216     }
11217     static string IterationStatementYield(GetName g)
11218     {
11219         return "ES6.IterationStatementYield";
11220     }
11221 
11222     static TParseTree IterationStatementReturn(TParseTree p)
11223     {
11224         if(__ctfe)
11225         {
11226             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing)), "ES6.IterationStatementReturn")(p);
11227         }
11228         else
11229         {
11230             if(auto m = tuple(`IterationStatementReturn`,p.end) in memo)
11231                 return *m;
11232             else
11233             {
11234                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing)), "ES6.IterationStatementReturn"), "IterationStatementReturn")(p);
11235                 memo[tuple(`IterationStatementReturn`,p.end)] = result;
11236                 return result;
11237             }
11238         }
11239     }
11240 
11241     static TParseTree IterationStatementReturn(string s)
11242     {
11243         if(__ctfe)
11244         {
11245             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing)), "ES6.IterationStatementReturn")(TParseTree("", false,[], s));
11246         }
11247         else
11248         {
11249             memo = null;
11250             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationList, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclaration, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Expression, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), Spacing)), "ES6.IterationStatementReturn"), "IterationStatementReturn")(TParseTree("", false,[], s));
11251         }
11252     }
11253     static string IterationStatementReturn(GetName g)
11254     {
11255         return "ES6.IterationStatementReturn";
11256     }
11257 
11258     static TParseTree IterationStatementYieldReturn(TParseTree p)
11259     {
11260         if(__ctfe)
11261         {
11262             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing)), "ES6.IterationStatementYieldReturn")(p);
11263         }
11264         else
11265         {
11266             if(auto m = tuple(`IterationStatementYieldReturn`,p.end) in memo)
11267                 return *m;
11268             else
11269             {
11270                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing)), "ES6.IterationStatementYieldReturn"), "IterationStatementYieldReturn")(p);
11271                 memo[tuple(`IterationStatementYieldReturn`,p.end)] = result;
11272                 return result;
11273             }
11274         }
11275     }
11276 
11277     static TParseTree IterationStatementYieldReturn(string s)
11278     {
11279         if(__ctfe)
11280         {
11281             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing)), "ES6.IterationStatementYieldReturn")(TParseTree("", false,[], s));
11282         }
11283         else
11284         {
11285             memo = null;
11286             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, DoKeyword, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing), pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, WhileKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, VariableDeclarationListYield, Spacing), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, VarKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing)), Spacing)), Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LexicalDeclarationYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), pegged.peg.wrapAround!(Spacing, Semicolon, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing)), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, InKeyword, Spacing), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, ForKeyword, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("let"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing), pegged.peg.wrapAround!(Spacing, OfKeyword, Spacing), pegged.peg.wrapAround!(Spacing, AssignmentExpressionInYield, Spacing))), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), Spacing)), "ES6.IterationStatementYieldReturn"), "IterationStatementYieldReturn")(TParseTree("", false,[], s));
11287         }
11288     }
11289     static string IterationStatementYieldReturn(GetName g)
11290     {
11291         return "ES6.IterationStatementYieldReturn";
11292     }
11293 
11294     static TParseTree ForDeclaration(TParseTree p)
11295     {
11296         if(__ctfe)
11297         {
11298             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing)), "ES6.ForDeclaration")(p);
11299         }
11300         else
11301         {
11302             if(auto m = tuple(`ForDeclaration`,p.end) in memo)
11303                 return *m;
11304             else
11305             {
11306                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing)), "ES6.ForDeclaration"), "ForDeclaration")(p);
11307                 memo[tuple(`ForDeclaration`,p.end)] = result;
11308                 return result;
11309             }
11310         }
11311     }
11312 
11313     static TParseTree ForDeclaration(string s)
11314     {
11315         if(__ctfe)
11316         {
11317             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing)), "ES6.ForDeclaration")(TParseTree("", false,[], s));
11318         }
11319         else
11320         {
11321             memo = null;
11322             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBinding, Spacing)), "ES6.ForDeclaration"), "ForDeclaration")(TParseTree("", false,[], s));
11323         }
11324     }
11325     static string ForDeclaration(GetName g)
11326     {
11327         return "ES6.ForDeclaration";
11328     }
11329 
11330     static TParseTree ForDeclarationYield(TParseTree p)
11331     {
11332         if(__ctfe)
11333         {
11334             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing)), "ES6.ForDeclarationYield")(p);
11335         }
11336         else
11337         {
11338             if(auto m = tuple(`ForDeclarationYield`,p.end) in memo)
11339                 return *m;
11340             else
11341             {
11342                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing)), "ES6.ForDeclarationYield"), "ForDeclarationYield")(p);
11343                 memo[tuple(`ForDeclarationYield`,p.end)] = result;
11344                 return result;
11345             }
11346         }
11347     }
11348 
11349     static TParseTree ForDeclarationYield(string s)
11350     {
11351         if(__ctfe)
11352         {
11353             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing)), "ES6.ForDeclarationYield")(TParseTree("", false,[], s));
11354         }
11355         else
11356         {
11357             memo = null;
11358             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LetOrConst, Spacing), pegged.peg.wrapAround!(Spacing, ForBindingYield, Spacing)), "ES6.ForDeclarationYield"), "ForDeclarationYield")(TParseTree("", false,[], s));
11359         }
11360     }
11361     static string ForDeclarationYield(GetName g)
11362     {
11363         return "ES6.ForDeclarationYield";
11364     }
11365 
11366     static TParseTree ForBinding(TParseTree p)
11367     {
11368         if(__ctfe)
11369         {
11370             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.ForBinding")(p);
11371         }
11372         else
11373         {
11374             if(auto m = tuple(`ForBinding`,p.end) in memo)
11375                 return *m;
11376             else
11377             {
11378                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.ForBinding"), "ForBinding")(p);
11379                 memo[tuple(`ForBinding`,p.end)] = result;
11380                 return result;
11381             }
11382         }
11383     }
11384 
11385     static TParseTree ForBinding(string s)
11386     {
11387         if(__ctfe)
11388         {
11389             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.ForBinding")(TParseTree("", false,[], s));
11390         }
11391         else
11392         {
11393             memo = null;
11394             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.ForBinding"), "ForBinding")(TParseTree("", false,[], s));
11395         }
11396     }
11397     static string ForBinding(GetName g)
11398     {
11399         return "ES6.ForBinding";
11400     }
11401 
11402     static TParseTree ForBindingYield(TParseTree p)
11403     {
11404         if(__ctfe)
11405         {
11406             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.ForBindingYield")(p);
11407         }
11408         else
11409         {
11410             if(auto m = tuple(`ForBindingYield`,p.end) in memo)
11411                 return *m;
11412             else
11413             {
11414                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.ForBindingYield"), "ForBindingYield")(p);
11415                 memo[tuple(`ForBindingYield`,p.end)] = result;
11416                 return result;
11417             }
11418         }
11419     }
11420 
11421     static TParseTree ForBindingYield(string s)
11422     {
11423         if(__ctfe)
11424         {
11425             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.ForBindingYield")(TParseTree("", false,[], s));
11426         }
11427         else
11428         {
11429             memo = null;
11430             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.ForBindingYield"), "ForBindingYield")(TParseTree("", false,[], s));
11431         }
11432     }
11433     static string ForBindingYield(GetName g)
11434     {
11435         return "ES6.ForBindingYield";
11436     }
11437 
11438     static TParseTree ContinueStatement(TParseTree p)
11439     {
11440         if(__ctfe)
11441         {
11442             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatement")(p);
11443         }
11444         else
11445         {
11446             if(auto m = tuple(`ContinueStatement`,p.end) in memo)
11447                 return *m;
11448             else
11449             {
11450                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatement"), "ContinueStatement")(p);
11451                 memo[tuple(`ContinueStatement`,p.end)] = result;
11452                 return result;
11453             }
11454         }
11455     }
11456 
11457     static TParseTree ContinueStatement(string s)
11458     {
11459         if(__ctfe)
11460         {
11461             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatement")(TParseTree("", false,[], s));
11462         }
11463         else
11464         {
11465             memo = null;
11466             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatement"), "ContinueStatement")(TParseTree("", false,[], s));
11467         }
11468     }
11469     static string ContinueStatement(GetName g)
11470     {
11471         return "ES6.ContinueStatement";
11472     }
11473 
11474     static TParseTree ContinueStatementYield(TParseTree p)
11475     {
11476         if(__ctfe)
11477         {
11478             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatementYield")(p);
11479         }
11480         else
11481         {
11482             if(auto m = tuple(`ContinueStatementYield`,p.end) in memo)
11483                 return *m;
11484             else
11485             {
11486                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatementYield"), "ContinueStatementYield")(p);
11487                 memo[tuple(`ContinueStatementYield`,p.end)] = result;
11488                 return result;
11489             }
11490         }
11491     }
11492 
11493     static TParseTree ContinueStatementYield(string s)
11494     {
11495         if(__ctfe)
11496         {
11497             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatementYield")(TParseTree("", false,[], s));
11498         }
11499         else
11500         {
11501             memo = null;
11502             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("continue"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ContinueStatementYield"), "ContinueStatementYield")(TParseTree("", false,[], s));
11503         }
11504     }
11505     static string ContinueStatementYield(GetName g)
11506     {
11507         return "ES6.ContinueStatementYield";
11508     }
11509 
11510     static TParseTree BreakStatement(TParseTree p)
11511     {
11512         if(__ctfe)
11513         {
11514             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatement")(p);
11515         }
11516         else
11517         {
11518             if(auto m = tuple(`BreakStatement`,p.end) in memo)
11519                 return *m;
11520             else
11521             {
11522                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatement"), "BreakStatement")(p);
11523                 memo[tuple(`BreakStatement`,p.end)] = result;
11524                 return result;
11525             }
11526         }
11527     }
11528 
11529     static TParseTree BreakStatement(string s)
11530     {
11531         if(__ctfe)
11532         {
11533             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatement")(TParseTree("", false,[], s));
11534         }
11535         else
11536         {
11537             memo = null;
11538             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifier), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatement"), "BreakStatement")(TParseTree("", false,[], s));
11539         }
11540     }
11541     static string BreakStatement(GetName g)
11542     {
11543         return "ES6.BreakStatement";
11544     }
11545 
11546     static TParseTree BreakStatementYield(TParseTree p)
11547     {
11548         if(__ctfe)
11549         {
11550             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatementYield")(p);
11551         }
11552         else
11553         {
11554             if(auto m = tuple(`BreakStatementYield`,p.end) in memo)
11555                 return *m;
11556             else
11557             {
11558                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatementYield"), "BreakStatementYield")(p);
11559                 memo[tuple(`BreakStatementYield`,p.end)] = result;
11560                 return result;
11561             }
11562         }
11563     }
11564 
11565     static TParseTree BreakStatementYield(string s)
11566     {
11567         if(__ctfe)
11568         {
11569             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatementYield")(TParseTree("", false,[], s));
11570         }
11571         else
11572         {
11573             memo = null;
11574             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(IdentifierStart), Spaces, LabelIdentifierYield), pegged.peg.and!(pegged.peg.literal!("break"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.BreakStatementYield"), "BreakStatementYield")(TParseTree("", false,[], s));
11575         }
11576     }
11577     static string BreakStatementYield(GetName g)
11578     {
11579         return "ES6.BreakStatementYield";
11580     }
11581 
11582     static TParseTree ReturnStatement(TParseTree p)
11583     {
11584         if(__ctfe)
11585         {
11586             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatement")(p);
11587         }
11588         else
11589         {
11590             if(auto m = tuple(`ReturnStatement`,p.end) in memo)
11591                 return *m;
11592             else
11593             {
11594                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatement"), "ReturnStatement")(p);
11595                 memo[tuple(`ReturnStatement`,p.end)] = result;
11596                 return result;
11597             }
11598         }
11599     }
11600 
11601     static TParseTree ReturnStatement(string s)
11602     {
11603         if(__ctfe)
11604         {
11605             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatement")(TParseTree("", false,[], s));
11606         }
11607         else
11608         {
11609             memo = null;
11610             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatement"), "ReturnStatement")(TParseTree("", false,[], s));
11611         }
11612     }
11613     static string ReturnStatement(GetName g)
11614     {
11615         return "ES6.ReturnStatement";
11616     }
11617 
11618     static TParseTree ReturnStatementYield(TParseTree p)
11619     {
11620         if(__ctfe)
11621         {
11622             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatementYield")(p);
11623         }
11624         else
11625         {
11626             if(auto m = tuple(`ReturnStatementYield`,p.end) in memo)
11627                 return *m;
11628             else
11629             {
11630                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatementYield"), "ReturnStatementYield")(p);
11631                 memo[tuple(`ReturnStatementYield`,p.end)] = result;
11632                 return result;
11633             }
11634         }
11635     }
11636 
11637     static TParseTree ReturnStatementYield(string s)
11638     {
11639         if(__ctfe)
11640         {
11641             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatementYield")(TParseTree("", false,[], s));
11642         }
11643         else
11644         {
11645             memo = null;
11646             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield), pegged.peg.and!(pegged.peg.literal!("return"), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)))), Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ReturnStatementYield"), "ReturnStatementYield")(TParseTree("", false,[], s));
11647         }
11648     }
11649     static string ReturnStatementYield(GetName g)
11650     {
11651         return "ES6.ReturnStatementYield";
11652     }
11653 
11654     static TParseTree WithStatement(TParseTree p)
11655     {
11656         if(__ctfe)
11657         {
11658             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.WithStatement")(p);
11659         }
11660         else
11661         {
11662             if(auto m = tuple(`WithStatement`,p.end) in memo)
11663                 return *m;
11664             else
11665             {
11666                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.WithStatement"), "WithStatement")(p);
11667                 memo[tuple(`WithStatement`,p.end)] = result;
11668                 return result;
11669             }
11670         }
11671     }
11672 
11673     static TParseTree WithStatement(string s)
11674     {
11675         if(__ctfe)
11676         {
11677             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.WithStatement")(TParseTree("", false,[], s));
11678         }
11679         else
11680         {
11681             memo = null;
11682             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.WithStatement"), "WithStatement")(TParseTree("", false,[], s));
11683         }
11684     }
11685     static string WithStatement(GetName g)
11686     {
11687         return "ES6.WithStatement";
11688     }
11689 
11690     static TParseTree WithStatementYield(TParseTree p)
11691     {
11692         if(__ctfe)
11693         {
11694             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.WithStatementYield")(p);
11695         }
11696         else
11697         {
11698             if(auto m = tuple(`WithStatementYield`,p.end) in memo)
11699                 return *m;
11700             else
11701             {
11702                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.WithStatementYield"), "WithStatementYield")(p);
11703                 memo[tuple(`WithStatementYield`,p.end)] = result;
11704                 return result;
11705             }
11706         }
11707     }
11708 
11709     static TParseTree WithStatementYield(string s)
11710     {
11711         if(__ctfe)
11712         {
11713             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.WithStatementYield")(TParseTree("", false,[], s));
11714         }
11715         else
11716         {
11717             memo = null;
11718             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.WithStatementYield"), "WithStatementYield")(TParseTree("", false,[], s));
11719         }
11720     }
11721     static string WithStatementYield(GetName g)
11722     {
11723         return "ES6.WithStatementYield";
11724     }
11725 
11726     static TParseTree WithStatementReturn(TParseTree p)
11727     {
11728         if(__ctfe)
11729         {
11730             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.WithStatementReturn")(p);
11731         }
11732         else
11733         {
11734             if(auto m = tuple(`WithStatementReturn`,p.end) in memo)
11735                 return *m;
11736             else
11737             {
11738                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.WithStatementReturn"), "WithStatementReturn")(p);
11739                 memo[tuple(`WithStatementReturn`,p.end)] = result;
11740                 return result;
11741             }
11742         }
11743     }
11744 
11745     static TParseTree WithStatementReturn(string s)
11746     {
11747         if(__ctfe)
11748         {
11749             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.WithStatementReturn")(TParseTree("", false,[], s));
11750         }
11751         else
11752         {
11753             memo = null;
11754             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.WithStatementReturn"), "WithStatementReturn")(TParseTree("", false,[], s));
11755         }
11756     }
11757     static string WithStatementReturn(GetName g)
11758     {
11759         return "ES6.WithStatementReturn";
11760     }
11761 
11762     static TParseTree WithStatementYieldReturn(TParseTree p)
11763     {
11764         if(__ctfe)
11765         {
11766             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.WithStatementYieldReturn")(p);
11767         }
11768         else
11769         {
11770             if(auto m = tuple(`WithStatementYieldReturn`,p.end) in memo)
11771                 return *m;
11772             else
11773             {
11774                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.WithStatementYieldReturn"), "WithStatementYieldReturn")(p);
11775                 memo[tuple(`WithStatementYieldReturn`,p.end)] = result;
11776                 return result;
11777             }
11778         }
11779     }
11780 
11781     static TParseTree WithStatementYieldReturn(string s)
11782     {
11783         if(__ctfe)
11784         {
11785             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.WithStatementYieldReturn")(TParseTree("", false,[], s));
11786         }
11787         else
11788         {
11789             memo = null;
11790             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("with"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.WithStatementYieldReturn"), "WithStatementYieldReturn")(TParseTree("", false,[], s));
11791         }
11792     }
11793     static string WithStatementYieldReturn(GetName g)
11794     {
11795         return "ES6.WithStatementYieldReturn";
11796     }
11797 
11798     static TParseTree SwitchStatement(TParseTree p)
11799     {
11800         if(__ctfe)
11801         {
11802             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlock, Spacing)), "ES6.SwitchStatement")(p);
11803         }
11804         else
11805         {
11806             if(auto m = tuple(`SwitchStatement`,p.end) in memo)
11807                 return *m;
11808             else
11809             {
11810                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlock, Spacing)), "ES6.SwitchStatement"), "SwitchStatement")(p);
11811                 memo[tuple(`SwitchStatement`,p.end)] = result;
11812                 return result;
11813             }
11814         }
11815     }
11816 
11817     static TParseTree SwitchStatement(string s)
11818     {
11819         if(__ctfe)
11820         {
11821             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlock, Spacing)), "ES6.SwitchStatement")(TParseTree("", false,[], s));
11822         }
11823         else
11824         {
11825             memo = null;
11826             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlock, Spacing)), "ES6.SwitchStatement"), "SwitchStatement")(TParseTree("", false,[], s));
11827         }
11828     }
11829     static string SwitchStatement(GetName g)
11830     {
11831         return "ES6.SwitchStatement";
11832     }
11833 
11834     static TParseTree SwitchStatementYield(TParseTree p)
11835     {
11836         if(__ctfe)
11837         {
11838             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYield, Spacing)), "ES6.SwitchStatementYield")(p);
11839         }
11840         else
11841         {
11842             if(auto m = tuple(`SwitchStatementYield`,p.end) in memo)
11843                 return *m;
11844             else
11845             {
11846                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYield, Spacing)), "ES6.SwitchStatementYield"), "SwitchStatementYield")(p);
11847                 memo[tuple(`SwitchStatementYield`,p.end)] = result;
11848                 return result;
11849             }
11850         }
11851     }
11852 
11853     static TParseTree SwitchStatementYield(string s)
11854     {
11855         if(__ctfe)
11856         {
11857             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYield, Spacing)), "ES6.SwitchStatementYield")(TParseTree("", false,[], s));
11858         }
11859         else
11860         {
11861             memo = null;
11862             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYield, Spacing)), "ES6.SwitchStatementYield"), "SwitchStatementYield")(TParseTree("", false,[], s));
11863         }
11864     }
11865     static string SwitchStatementYield(GetName g)
11866     {
11867         return "ES6.SwitchStatementYield";
11868     }
11869 
11870     static TParseTree SwitchStatementReturn(TParseTree p)
11871     {
11872         if(__ctfe)
11873         {
11874             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockReturn, Spacing)), "ES6.SwitchStatementReturn")(p);
11875         }
11876         else
11877         {
11878             if(auto m = tuple(`SwitchStatementReturn`,p.end) in memo)
11879                 return *m;
11880             else
11881             {
11882                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockReturn, Spacing)), "ES6.SwitchStatementReturn"), "SwitchStatementReturn")(p);
11883                 memo[tuple(`SwitchStatementReturn`,p.end)] = result;
11884                 return result;
11885             }
11886         }
11887     }
11888 
11889     static TParseTree SwitchStatementReturn(string s)
11890     {
11891         if(__ctfe)
11892         {
11893             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockReturn, Spacing)), "ES6.SwitchStatementReturn")(TParseTree("", false,[], s));
11894         }
11895         else
11896         {
11897             memo = null;
11898             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockReturn, Spacing)), "ES6.SwitchStatementReturn"), "SwitchStatementReturn")(TParseTree("", false,[], s));
11899         }
11900     }
11901     static string SwitchStatementReturn(GetName g)
11902     {
11903         return "ES6.SwitchStatementReturn";
11904     }
11905 
11906     static TParseTree SwitchStatementYieldReturn(TParseTree p)
11907     {
11908         if(__ctfe)
11909         {
11910             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYieldReturn, Spacing)), "ES6.SwitchStatementYieldReturn")(p);
11911         }
11912         else
11913         {
11914             if(auto m = tuple(`SwitchStatementYieldReturn`,p.end) in memo)
11915                 return *m;
11916             else
11917             {
11918                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYieldReturn, Spacing)), "ES6.SwitchStatementYieldReturn"), "SwitchStatementYieldReturn")(p);
11919                 memo[tuple(`SwitchStatementYieldReturn`,p.end)] = result;
11920                 return result;
11921             }
11922         }
11923     }
11924 
11925     static TParseTree SwitchStatementYieldReturn(string s)
11926     {
11927         if(__ctfe)
11928         {
11929             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYieldReturn, Spacing)), "ES6.SwitchStatementYieldReturn")(TParseTree("", false,[], s));
11930         }
11931         else
11932         {
11933             memo = null;
11934             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("switch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CaseBlockYieldReturn, Spacing)), "ES6.SwitchStatementYieldReturn"), "SwitchStatementYieldReturn")(TParseTree("", false,[], s));
11935         }
11936     }
11937     static string SwitchStatementYieldReturn(GetName g)
11938     {
11939         return "ES6.SwitchStatementYieldReturn";
11940     }
11941 
11942     static TParseTree CaseBlock(TParseTree p)
11943     {
11944         if(__ctfe)
11945         {
11946             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClause, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)))), Spacing), "ES6.CaseBlock")(p);
11947         }
11948         else
11949         {
11950             if(auto m = tuple(`CaseBlock`,p.end) in memo)
11951                 return *m;
11952             else
11953             {
11954                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClause, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)))), Spacing), "ES6.CaseBlock"), "CaseBlock")(p);
11955                 memo[tuple(`CaseBlock`,p.end)] = result;
11956                 return result;
11957             }
11958         }
11959     }
11960 
11961     static TParseTree CaseBlock(string s)
11962     {
11963         if(__ctfe)
11964         {
11965             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClause, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)))), Spacing), "ES6.CaseBlock")(TParseTree("", false,[], s));
11966         }
11967         else
11968         {
11969             memo = null;
11970             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClause, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClauses, Spacing)))), Spacing), "ES6.CaseBlock"), "CaseBlock")(TParseTree("", false,[], s));
11971         }
11972     }
11973     static string CaseBlock(GetName g)
11974     {
11975         return "ES6.CaseBlock";
11976     }
11977 
11978     static TParseTree CaseBlockYield(TParseTree p)
11979     {
11980         if(__ctfe)
11981         {
11982             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)))), Spacing), "ES6.CaseBlockYield")(p);
11983         }
11984         else
11985         {
11986             if(auto m = tuple(`CaseBlockYield`,p.end) in memo)
11987                 return *m;
11988             else
11989             {
11990                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)))), Spacing), "ES6.CaseBlockYield"), "CaseBlockYield")(p);
11991                 memo[tuple(`CaseBlockYield`,p.end)] = result;
11992                 return result;
11993             }
11994         }
11995     }
11996 
11997     static TParseTree CaseBlockYield(string s)
11998     {
11999         if(__ctfe)
12000         {
12001             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)))), Spacing), "ES6.CaseBlockYield")(TParseTree("", false,[], s));
12002         }
12003         else
12004         {
12005             memo = null;
12006             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYield, Spacing)))), Spacing), "ES6.CaseBlockYield"), "CaseBlockYield")(TParseTree("", false,[], s));
12007         }
12008     }
12009     static string CaseBlockYield(GetName g)
12010     {
12011         return "ES6.CaseBlockYield";
12012     }
12013 
12014     static TParseTree CaseBlockReturn(TParseTree p)
12015     {
12016         if(__ctfe)
12017         {
12018             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)))), Spacing), "ES6.CaseBlockReturn")(p);
12019         }
12020         else
12021         {
12022             if(auto m = tuple(`CaseBlockReturn`,p.end) in memo)
12023                 return *m;
12024             else
12025             {
12026                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)))), Spacing), "ES6.CaseBlockReturn"), "CaseBlockReturn")(p);
12027                 memo[tuple(`CaseBlockReturn`,p.end)] = result;
12028                 return result;
12029             }
12030         }
12031     }
12032 
12033     static TParseTree CaseBlockReturn(string s)
12034     {
12035         if(__ctfe)
12036         {
12037             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)))), Spacing), "ES6.CaseBlockReturn")(TParseTree("", false,[], s));
12038         }
12039         else
12040         {
12041             memo = null;
12042             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesReturn, Spacing)))), Spacing), "ES6.CaseBlockReturn"), "CaseBlockReturn")(TParseTree("", false,[], s));
12043         }
12044     }
12045     static string CaseBlockReturn(GetName g)
12046     {
12047         return "ES6.CaseBlockReturn";
12048     }
12049 
12050     static TParseTree CaseBlockYieldReturn(TParseTree p)
12051     {
12052         if(__ctfe)
12053         {
12054             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)))), Spacing), "ES6.CaseBlockYieldReturn")(p);
12055         }
12056         else
12057         {
12058             if(auto m = tuple(`CaseBlockYieldReturn`,p.end) in memo)
12059                 return *m;
12060             else
12061             {
12062                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)))), Spacing), "ES6.CaseBlockYieldReturn"), "CaseBlockYieldReturn")(p);
12063                 memo[tuple(`CaseBlockYieldReturn`,p.end)] = result;
12064                 return result;
12065             }
12066         }
12067     }
12068 
12069     static TParseTree CaseBlockYieldReturn(string s)
12070     {
12071         if(__ctfe)
12072         {
12073             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)))), Spacing), "ES6.CaseBlockYieldReturn")(TParseTree("", false,[], s));
12074         }
12075         else
12076         {
12077             memo = null;
12078             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, DefaultClauseYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CaseClausesYieldReturn, Spacing)))), Spacing), "ES6.CaseBlockYieldReturn"), "CaseBlockYieldReturn")(TParseTree("", false,[], s));
12079         }
12080     }
12081     static string CaseBlockYieldReturn(GetName g)
12082     {
12083         return "ES6.CaseBlockYieldReturn";
12084     }
12085 
12086     static TParseTree CaseClauses(TParseTree p)
12087     {
12088         if(__ctfe)
12089         {
12090             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClause, Spacing)), "ES6.CaseClauses")(p);
12091         }
12092         else
12093         {
12094             if(auto m = tuple(`CaseClauses`,p.end) in memo)
12095                 return *m;
12096             else
12097             {
12098                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClause, Spacing)), "ES6.CaseClauses"), "CaseClauses")(p);
12099                 memo[tuple(`CaseClauses`,p.end)] = result;
12100                 return result;
12101             }
12102         }
12103     }
12104 
12105     static TParseTree CaseClauses(string s)
12106     {
12107         if(__ctfe)
12108         {
12109             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClause, Spacing)), "ES6.CaseClauses")(TParseTree("", false,[], s));
12110         }
12111         else
12112         {
12113             memo = null;
12114             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClause, Spacing)), "ES6.CaseClauses"), "CaseClauses")(TParseTree("", false,[], s));
12115         }
12116     }
12117     static string CaseClauses(GetName g)
12118     {
12119         return "ES6.CaseClauses";
12120     }
12121 
12122     static TParseTree CaseClausesYield(TParseTree p)
12123     {
12124         if(__ctfe)
12125         {
12126             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYield, Spacing)), "ES6.CaseClausesYield")(p);
12127         }
12128         else
12129         {
12130             if(auto m = tuple(`CaseClausesYield`,p.end) in memo)
12131                 return *m;
12132             else
12133             {
12134                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYield, Spacing)), "ES6.CaseClausesYield"), "CaseClausesYield")(p);
12135                 memo[tuple(`CaseClausesYield`,p.end)] = result;
12136                 return result;
12137             }
12138         }
12139     }
12140 
12141     static TParseTree CaseClausesYield(string s)
12142     {
12143         if(__ctfe)
12144         {
12145             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYield, Spacing)), "ES6.CaseClausesYield")(TParseTree("", false,[], s));
12146         }
12147         else
12148         {
12149             memo = null;
12150             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYield, Spacing)), "ES6.CaseClausesYield"), "CaseClausesYield")(TParseTree("", false,[], s));
12151         }
12152     }
12153     static string CaseClausesYield(GetName g)
12154     {
12155         return "ES6.CaseClausesYield";
12156     }
12157 
12158     static TParseTree CaseClausesReturn(TParseTree p)
12159     {
12160         if(__ctfe)
12161         {
12162             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseReturn, Spacing)), "ES6.CaseClausesReturn")(p);
12163         }
12164         else
12165         {
12166             if(auto m = tuple(`CaseClausesReturn`,p.end) in memo)
12167                 return *m;
12168             else
12169             {
12170                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseReturn, Spacing)), "ES6.CaseClausesReturn"), "CaseClausesReturn")(p);
12171                 memo[tuple(`CaseClausesReturn`,p.end)] = result;
12172                 return result;
12173             }
12174         }
12175     }
12176 
12177     static TParseTree CaseClausesReturn(string s)
12178     {
12179         if(__ctfe)
12180         {
12181             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseReturn, Spacing)), "ES6.CaseClausesReturn")(TParseTree("", false,[], s));
12182         }
12183         else
12184         {
12185             memo = null;
12186             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseReturn, Spacing)), "ES6.CaseClausesReturn"), "CaseClausesReturn")(TParseTree("", false,[], s));
12187         }
12188     }
12189     static string CaseClausesReturn(GetName g)
12190     {
12191         return "ES6.CaseClausesReturn";
12192     }
12193 
12194     static TParseTree CaseClausesYieldReturn(TParseTree p)
12195     {
12196         if(__ctfe)
12197         {
12198             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYieldReturn, Spacing)), "ES6.CaseClausesYieldReturn")(p);
12199         }
12200         else
12201         {
12202             if(auto m = tuple(`CaseClausesYieldReturn`,p.end) in memo)
12203                 return *m;
12204             else
12205             {
12206                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYieldReturn, Spacing)), "ES6.CaseClausesYieldReturn"), "CaseClausesYieldReturn")(p);
12207                 memo[tuple(`CaseClausesYieldReturn`,p.end)] = result;
12208                 return result;
12209             }
12210         }
12211     }
12212 
12213     static TParseTree CaseClausesYieldReturn(string s)
12214     {
12215         if(__ctfe)
12216         {
12217             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYieldReturn, Spacing)), "ES6.CaseClausesYieldReturn")(TParseTree("", false,[], s));
12218         }
12219         else
12220         {
12221             memo = null;
12222             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, CaseClauseYieldReturn, Spacing)), "ES6.CaseClausesYieldReturn"), "CaseClausesYieldReturn")(TParseTree("", false,[], s));
12223         }
12224     }
12225     static string CaseClausesYieldReturn(GetName g)
12226     {
12227         return "ES6.CaseClausesYieldReturn";
12228     }
12229 
12230     static TParseTree CaseClause(TParseTree p)
12231     {
12232         if(__ctfe)
12233         {
12234             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.CaseClause")(p);
12235         }
12236         else
12237         {
12238             if(auto m = tuple(`CaseClause`,p.end) in memo)
12239                 return *m;
12240             else
12241             {
12242                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.CaseClause"), "CaseClause")(p);
12243                 memo[tuple(`CaseClause`,p.end)] = result;
12244                 return result;
12245             }
12246         }
12247     }
12248 
12249     static TParseTree CaseClause(string s)
12250     {
12251         if(__ctfe)
12252         {
12253             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.CaseClause")(TParseTree("", false,[], s));
12254         }
12255         else
12256         {
12257             memo = null;
12258             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.CaseClause"), "CaseClause")(TParseTree("", false,[], s));
12259         }
12260     }
12261     static string CaseClause(GetName g)
12262     {
12263         return "ES6.CaseClause";
12264     }
12265 
12266     static TParseTree CaseClauseYield(TParseTree p)
12267     {
12268         if(__ctfe)
12269         {
12270             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.CaseClauseYield")(p);
12271         }
12272         else
12273         {
12274             if(auto m = tuple(`CaseClauseYield`,p.end) in memo)
12275                 return *m;
12276             else
12277             {
12278                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.CaseClauseYield"), "CaseClauseYield")(p);
12279                 memo[tuple(`CaseClauseYield`,p.end)] = result;
12280                 return result;
12281             }
12282         }
12283     }
12284 
12285     static TParseTree CaseClauseYield(string s)
12286     {
12287         if(__ctfe)
12288         {
12289             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.CaseClauseYield")(TParseTree("", false,[], s));
12290         }
12291         else
12292         {
12293             memo = null;
12294             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.CaseClauseYield"), "CaseClauseYield")(TParseTree("", false,[], s));
12295         }
12296     }
12297     static string CaseClauseYield(GetName g)
12298     {
12299         return "ES6.CaseClauseYield";
12300     }
12301 
12302     static TParseTree CaseClauseReturn(TParseTree p)
12303     {
12304         if(__ctfe)
12305         {
12306             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.CaseClauseReturn")(p);
12307         }
12308         else
12309         {
12310             if(auto m = tuple(`CaseClauseReturn`,p.end) in memo)
12311                 return *m;
12312             else
12313             {
12314                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.CaseClauseReturn"), "CaseClauseReturn")(p);
12315                 memo[tuple(`CaseClauseReturn`,p.end)] = result;
12316                 return result;
12317             }
12318         }
12319     }
12320 
12321     static TParseTree CaseClauseReturn(string s)
12322     {
12323         if(__ctfe)
12324         {
12325             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.CaseClauseReturn")(TParseTree("", false,[], s));
12326         }
12327         else
12328         {
12329             memo = null;
12330             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionIn, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.CaseClauseReturn"), "CaseClauseReturn")(TParseTree("", false,[], s));
12331         }
12332     }
12333     static string CaseClauseReturn(GetName g)
12334     {
12335         return "ES6.CaseClauseReturn";
12336     }
12337 
12338     static TParseTree CaseClauseYieldReturn(TParseTree p)
12339     {
12340         if(__ctfe)
12341         {
12342             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.CaseClauseYieldReturn")(p);
12343         }
12344         else
12345         {
12346             if(auto m = tuple(`CaseClauseYieldReturn`,p.end) in memo)
12347                 return *m;
12348             else
12349             {
12350                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.CaseClauseYieldReturn"), "CaseClauseYieldReturn")(p);
12351                 memo[tuple(`CaseClauseYieldReturn`,p.end)] = result;
12352                 return result;
12353             }
12354         }
12355     }
12356 
12357     static TParseTree CaseClauseYieldReturn(string s)
12358     {
12359         if(__ctfe)
12360         {
12361             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.CaseClauseYieldReturn")(TParseTree("", false,[], s));
12362         }
12363         else
12364         {
12365             memo = null;
12366             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("case"), Spacing)), pegged.peg.wrapAround!(Spacing, ExpressionInYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.CaseClauseYieldReturn"), "CaseClauseYieldReturn")(TParseTree("", false,[], s));
12367         }
12368     }
12369     static string CaseClauseYieldReturn(GetName g)
12370     {
12371         return "ES6.CaseClauseYieldReturn";
12372     }
12373 
12374     static TParseTree DefaultClause(TParseTree p)
12375     {
12376         if(__ctfe)
12377         {
12378             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.DefaultClause")(p);
12379         }
12380         else
12381         {
12382             if(auto m = tuple(`DefaultClause`,p.end) in memo)
12383                 return *m;
12384             else
12385             {
12386                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.DefaultClause"), "DefaultClause")(p);
12387                 memo[tuple(`DefaultClause`,p.end)] = result;
12388                 return result;
12389             }
12390         }
12391     }
12392 
12393     static TParseTree DefaultClause(string s)
12394     {
12395         if(__ctfe)
12396         {
12397             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.DefaultClause")(TParseTree("", false,[], s));
12398         }
12399         else
12400         {
12401             memo = null;
12402             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementList, Spacing))), "ES6.DefaultClause"), "DefaultClause")(TParseTree("", false,[], s));
12403         }
12404     }
12405     static string DefaultClause(GetName g)
12406     {
12407         return "ES6.DefaultClause";
12408     }
12409 
12410     static TParseTree DefaultClauseYield(TParseTree p)
12411     {
12412         if(__ctfe)
12413         {
12414             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.DefaultClauseYield")(p);
12415         }
12416         else
12417         {
12418             if(auto m = tuple(`DefaultClauseYield`,p.end) in memo)
12419                 return *m;
12420             else
12421             {
12422                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.DefaultClauseYield"), "DefaultClauseYield")(p);
12423                 memo[tuple(`DefaultClauseYield`,p.end)] = result;
12424                 return result;
12425             }
12426         }
12427     }
12428 
12429     static TParseTree DefaultClauseYield(string s)
12430     {
12431         if(__ctfe)
12432         {
12433             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.DefaultClauseYield")(TParseTree("", false,[], s));
12434         }
12435         else
12436         {
12437             memo = null;
12438             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYield, Spacing))), "ES6.DefaultClauseYield"), "DefaultClauseYield")(TParseTree("", false,[], s));
12439         }
12440     }
12441     static string DefaultClauseYield(GetName g)
12442     {
12443         return "ES6.DefaultClauseYield";
12444     }
12445 
12446     static TParseTree DefaultClauseReturn(TParseTree p)
12447     {
12448         if(__ctfe)
12449         {
12450             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.DefaultClauseReturn")(p);
12451         }
12452         else
12453         {
12454             if(auto m = tuple(`DefaultClauseReturn`,p.end) in memo)
12455                 return *m;
12456             else
12457             {
12458                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.DefaultClauseReturn"), "DefaultClauseReturn")(p);
12459                 memo[tuple(`DefaultClauseReturn`,p.end)] = result;
12460                 return result;
12461             }
12462         }
12463     }
12464 
12465     static TParseTree DefaultClauseReturn(string s)
12466     {
12467         if(__ctfe)
12468         {
12469             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.DefaultClauseReturn")(TParseTree("", false,[], s));
12470         }
12471         else
12472         {
12473             memo = null;
12474             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing))), "ES6.DefaultClauseReturn"), "DefaultClauseReturn")(TParseTree("", false,[], s));
12475         }
12476     }
12477     static string DefaultClauseReturn(GetName g)
12478     {
12479         return "ES6.DefaultClauseReturn";
12480     }
12481 
12482     static TParseTree DefaultClauseYieldReturn(TParseTree p)
12483     {
12484         if(__ctfe)
12485         {
12486             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.DefaultClauseYieldReturn")(p);
12487         }
12488         else
12489         {
12490             if(auto m = tuple(`DefaultClauseYieldReturn`,p.end) in memo)
12491                 return *m;
12492             else
12493             {
12494                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.DefaultClauseYieldReturn"), "DefaultClauseYieldReturn")(p);
12495                 memo[tuple(`DefaultClauseYieldReturn`,p.end)] = result;
12496                 return result;
12497             }
12498         }
12499     }
12500 
12501     static TParseTree DefaultClauseYieldReturn(string s)
12502     {
12503         if(__ctfe)
12504         {
12505             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.DefaultClauseYieldReturn")(TParseTree("", false,[], s));
12506         }
12507         else
12508         {
12509             memo = null;
12510             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("default"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing))), "ES6.DefaultClauseYieldReturn"), "DefaultClauseYieldReturn")(TParseTree("", false,[], s));
12511         }
12512     }
12513     static string DefaultClauseYieldReturn(GetName g)
12514     {
12515         return "ES6.DefaultClauseYieldReturn";
12516     }
12517 
12518     static TParseTree LabelledStatement(TParseTree p)
12519     {
12520         if(__ctfe)
12521         {
12522             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItem, Spacing)), "ES6.LabelledStatement")(p);
12523         }
12524         else
12525         {
12526             if(auto m = tuple(`LabelledStatement`,p.end) in memo)
12527                 return *m;
12528             else
12529             {
12530                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItem, Spacing)), "ES6.LabelledStatement"), "LabelledStatement")(p);
12531                 memo[tuple(`LabelledStatement`,p.end)] = result;
12532                 return result;
12533             }
12534         }
12535     }
12536 
12537     static TParseTree LabelledStatement(string s)
12538     {
12539         if(__ctfe)
12540         {
12541             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItem, Spacing)), "ES6.LabelledStatement")(TParseTree("", false,[], s));
12542         }
12543         else
12544         {
12545             memo = null;
12546             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItem, Spacing)), "ES6.LabelledStatement"), "LabelledStatement")(TParseTree("", false,[], s));
12547         }
12548     }
12549     static string LabelledStatement(GetName g)
12550     {
12551         return "ES6.LabelledStatement";
12552     }
12553 
12554     static TParseTree LabelledStatementYield(TParseTree p)
12555     {
12556         if(__ctfe)
12557         {
12558             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYield, Spacing)), "ES6.LabelledStatementYield")(p);
12559         }
12560         else
12561         {
12562             if(auto m = tuple(`LabelledStatementYield`,p.end) in memo)
12563                 return *m;
12564             else
12565             {
12566                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYield, Spacing)), "ES6.LabelledStatementYield"), "LabelledStatementYield")(p);
12567                 memo[tuple(`LabelledStatementYield`,p.end)] = result;
12568                 return result;
12569             }
12570         }
12571     }
12572 
12573     static TParseTree LabelledStatementYield(string s)
12574     {
12575         if(__ctfe)
12576         {
12577             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYield, Spacing)), "ES6.LabelledStatementYield")(TParseTree("", false,[], s));
12578         }
12579         else
12580         {
12581             memo = null;
12582             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYield, Spacing)), "ES6.LabelledStatementYield"), "LabelledStatementYield")(TParseTree("", false,[], s));
12583         }
12584     }
12585     static string LabelledStatementYield(GetName g)
12586     {
12587         return "ES6.LabelledStatementYield";
12588     }
12589 
12590     static TParseTree LabelledStatementReturn(TParseTree p)
12591     {
12592         if(__ctfe)
12593         {
12594             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemReturn, Spacing)), "ES6.LabelledStatementReturn")(p);
12595         }
12596         else
12597         {
12598             if(auto m = tuple(`LabelledStatementReturn`,p.end) in memo)
12599                 return *m;
12600             else
12601             {
12602                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemReturn, Spacing)), "ES6.LabelledStatementReturn"), "LabelledStatementReturn")(p);
12603                 memo[tuple(`LabelledStatementReturn`,p.end)] = result;
12604                 return result;
12605             }
12606         }
12607     }
12608 
12609     static TParseTree LabelledStatementReturn(string s)
12610     {
12611         if(__ctfe)
12612         {
12613             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemReturn, Spacing)), "ES6.LabelledStatementReturn")(TParseTree("", false,[], s));
12614         }
12615         else
12616         {
12617             memo = null;
12618             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifier, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemReturn, Spacing)), "ES6.LabelledStatementReturn"), "LabelledStatementReturn")(TParseTree("", false,[], s));
12619         }
12620     }
12621     static string LabelledStatementReturn(GetName g)
12622     {
12623         return "ES6.LabelledStatementReturn";
12624     }
12625 
12626     static TParseTree LabelledStatementYieldReturn(TParseTree p)
12627     {
12628         if(__ctfe)
12629         {
12630             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYieldReturn, Spacing)), "ES6.LabelledStatementYieldReturn")(p);
12631         }
12632         else
12633         {
12634             if(auto m = tuple(`LabelledStatementYieldReturn`,p.end) in memo)
12635                 return *m;
12636             else
12637             {
12638                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYieldReturn, Spacing)), "ES6.LabelledStatementYieldReturn"), "LabelledStatementYieldReturn")(p);
12639                 memo[tuple(`LabelledStatementYieldReturn`,p.end)] = result;
12640                 return result;
12641             }
12642         }
12643     }
12644 
12645     static TParseTree LabelledStatementYieldReturn(string s)
12646     {
12647         if(__ctfe)
12648         {
12649             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYieldReturn, Spacing)), "ES6.LabelledStatementYieldReturn")(TParseTree("", false,[], s));
12650         }
12651         else
12652         {
12653             memo = null;
12654             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, LabelIdentifierYield, Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(":"), Spacing)), pegged.peg.wrapAround!(Spacing, LabelledItemYieldReturn, Spacing)), "ES6.LabelledStatementYieldReturn"), "LabelledStatementYieldReturn")(TParseTree("", false,[], s));
12655         }
12656     }
12657     static string LabelledStatementYieldReturn(GetName g)
12658     {
12659         return "ES6.LabelledStatementYieldReturn";
12660     }
12661 
12662     static TParseTree LabelledItem(TParseTree p)
12663     {
12664         if(__ctfe)
12665         {
12666             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.LabelledItem")(p);
12667         }
12668         else
12669         {
12670             if(auto m = tuple(`LabelledItem`,p.end) in memo)
12671                 return *m;
12672             else
12673             {
12674                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.LabelledItem"), "LabelledItem")(p);
12675                 memo[tuple(`LabelledItem`,p.end)] = result;
12676                 return result;
12677             }
12678         }
12679     }
12680 
12681     static TParseTree LabelledItem(string s)
12682     {
12683         if(__ctfe)
12684         {
12685             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.LabelledItem")(TParseTree("", false,[], s));
12686         }
12687         else
12688         {
12689             memo = null;
12690             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, Statement, Spacing)), "ES6.LabelledItem"), "LabelledItem")(TParseTree("", false,[], s));
12691         }
12692     }
12693     static string LabelledItem(GetName g)
12694     {
12695         return "ES6.LabelledItem";
12696     }
12697 
12698     static TParseTree LabelledItemYield(TParseTree p)
12699     {
12700         if(__ctfe)
12701         {
12702             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.LabelledItemYield")(p);
12703         }
12704         else
12705         {
12706             if(auto m = tuple(`LabelledItemYield`,p.end) in memo)
12707                 return *m;
12708             else
12709             {
12710                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.LabelledItemYield"), "LabelledItemYield")(p);
12711                 memo[tuple(`LabelledItemYield`,p.end)] = result;
12712                 return result;
12713             }
12714         }
12715     }
12716 
12717     static TParseTree LabelledItemYield(string s)
12718     {
12719         if(__ctfe)
12720         {
12721             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.LabelledItemYield")(TParseTree("", false,[], s));
12722         }
12723         else
12724         {
12725             memo = null;
12726             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYield, Spacing)), "ES6.LabelledItemYield"), "LabelledItemYield")(TParseTree("", false,[], s));
12727         }
12728     }
12729     static string LabelledItemYield(GetName g)
12730     {
12731         return "ES6.LabelledItemYield";
12732     }
12733 
12734     static TParseTree LabelledItemReturn(TParseTree p)
12735     {
12736         if(__ctfe)
12737         {
12738             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.LabelledItemReturn")(p);
12739         }
12740         else
12741         {
12742             if(auto m = tuple(`LabelledItemReturn`,p.end) in memo)
12743                 return *m;
12744             else
12745             {
12746                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.LabelledItemReturn"), "LabelledItemReturn")(p);
12747                 memo[tuple(`LabelledItemReturn`,p.end)] = result;
12748                 return result;
12749             }
12750         }
12751     }
12752 
12753     static TParseTree LabelledItemReturn(string s)
12754     {
12755         if(__ctfe)
12756         {
12757             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.LabelledItemReturn")(TParseTree("", false,[], s));
12758         }
12759         else
12760         {
12761             memo = null;
12762             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclaration, Spacing), pegged.peg.wrapAround!(Spacing, StatementReturn, Spacing)), "ES6.LabelledItemReturn"), "LabelledItemReturn")(TParseTree("", false,[], s));
12763         }
12764     }
12765     static string LabelledItemReturn(GetName g)
12766     {
12767         return "ES6.LabelledItemReturn";
12768     }
12769 
12770     static TParseTree LabelledItemYieldReturn(TParseTree p)
12771     {
12772         if(__ctfe)
12773         {
12774             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.LabelledItemYieldReturn")(p);
12775         }
12776         else
12777         {
12778             if(auto m = tuple(`LabelledItemYieldReturn`,p.end) in memo)
12779                 return *m;
12780             else
12781             {
12782                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.LabelledItemYieldReturn"), "LabelledItemYieldReturn")(p);
12783                 memo[tuple(`LabelledItemYieldReturn`,p.end)] = result;
12784                 return result;
12785             }
12786         }
12787     }
12788 
12789     static TParseTree LabelledItemYieldReturn(string s)
12790     {
12791         if(__ctfe)
12792         {
12793             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.LabelledItemYieldReturn")(TParseTree("", false,[], s));
12794         }
12795         else
12796         {
12797             memo = null;
12798             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionDeclarationYield, Spacing), pegged.peg.wrapAround!(Spacing, StatementYieldReturn, Spacing)), "ES6.LabelledItemYieldReturn"), "LabelledItemYieldReturn")(TParseTree("", false,[], s));
12799         }
12800     }
12801     static string LabelledItemYieldReturn(GetName g)
12802     {
12803         return "ES6.LabelledItemYieldReturn";
12804     }
12805 
12806     static TParseTree ThrowStatement(TParseTree p)
12807     {
12808         if(__ctfe)
12809         {
12810             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatement")(p);
12811         }
12812         else
12813         {
12814             if(auto m = tuple(`ThrowStatement`,p.end) in memo)
12815                 return *m;
12816             else
12817             {
12818                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatement"), "ThrowStatement")(p);
12819                 memo[tuple(`ThrowStatement`,p.end)] = result;
12820                 return result;
12821             }
12822         }
12823     }
12824 
12825     static TParseTree ThrowStatement(string s)
12826     {
12827         if(__ctfe)
12828         {
12829             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatement")(TParseTree("", false,[], s));
12830         }
12831         else
12832         {
12833             memo = null;
12834             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionIn, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatement"), "ThrowStatement")(TParseTree("", false,[], s));
12835         }
12836     }
12837     static string ThrowStatement(GetName g)
12838     {
12839         return "ES6.ThrowStatement";
12840     }
12841 
12842     static TParseTree ThrowStatementYield(TParseTree p)
12843     {
12844         if(__ctfe)
12845         {
12846             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatementYield")(p);
12847         }
12848         else
12849         {
12850             if(auto m = tuple(`ThrowStatementYield`,p.end) in memo)
12851                 return *m;
12852             else
12853             {
12854                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatementYield"), "ThrowStatementYield")(p);
12855                 memo[tuple(`ThrowStatementYield`,p.end)] = result;
12856                 return result;
12857             }
12858         }
12859     }
12860 
12861     static TParseTree ThrowStatementYield(string s)
12862     {
12863         if(__ctfe)
12864         {
12865             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatementYield")(TParseTree("", false,[], s));
12866         }
12867         else
12868         {
12869             memo = null;
12870             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("throw"), pegged.peg.negLookahead!(IdentifierStart), Spaces, ExpressionInYield, Spaces, pegged.peg.discard!(pegged.peg.option!(pegged.peg.literal!(";")))), "ES6.ThrowStatementYield"), "ThrowStatementYield")(TParseTree("", false,[], s));
12871         }
12872     }
12873     static string ThrowStatementYield(GetName g)
12874     {
12875         return "ES6.ThrowStatementYield";
12876     }
12877 
12878     static TParseTree TryStatement(TParseTree p)
12879     {
12880         if(__ctfe)
12881         {
12882             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Catch, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Finally, Spacing))), "ES6.TryStatement")(p);
12883         }
12884         else
12885         {
12886             if(auto m = tuple(`TryStatement`,p.end) in memo)
12887                 return *m;
12888             else
12889             {
12890                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Catch, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Finally, Spacing))), "ES6.TryStatement"), "TryStatement")(p);
12891                 memo[tuple(`TryStatement`,p.end)] = result;
12892                 return result;
12893             }
12894         }
12895     }
12896 
12897     static TParseTree TryStatement(string s)
12898     {
12899         if(__ctfe)
12900         {
12901             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Catch, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Finally, Spacing))), "ES6.TryStatement")(TParseTree("", false,[], s));
12902         }
12903         else
12904         {
12905             memo = null;
12906             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Catch, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, Finally, Spacing))), "ES6.TryStatement"), "TryStatement")(TParseTree("", false,[], s));
12907         }
12908     }
12909     static string TryStatement(GetName g)
12910     {
12911         return "ES6.TryStatement";
12912     }
12913 
12914     static TParseTree TryStatementYield(TParseTree p)
12915     {
12916         if(__ctfe)
12917         {
12918             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYield, Spacing))), "ES6.TryStatementYield")(p);
12919         }
12920         else
12921         {
12922             if(auto m = tuple(`TryStatementYield`,p.end) in memo)
12923                 return *m;
12924             else
12925             {
12926                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYield, Spacing))), "ES6.TryStatementYield"), "TryStatementYield")(p);
12927                 memo[tuple(`TryStatementYield`,p.end)] = result;
12928                 return result;
12929             }
12930         }
12931     }
12932 
12933     static TParseTree TryStatementYield(string s)
12934     {
12935         if(__ctfe)
12936         {
12937             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYield, Spacing))), "ES6.TryStatementYield")(TParseTree("", false,[], s));
12938         }
12939         else
12940         {
12941             memo = null;
12942             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYield, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYield, Spacing))), "ES6.TryStatementYield"), "TryStatementYield")(TParseTree("", false,[], s));
12943         }
12944     }
12945     static string TryStatementYield(GetName g)
12946     {
12947         return "ES6.TryStatementYield";
12948     }
12949 
12950     static TParseTree TryStatementReturn(TParseTree p)
12951     {
12952         if(__ctfe)
12953         {
12954             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyReturn, Spacing))), "ES6.TryStatementReturn")(p);
12955         }
12956         else
12957         {
12958             if(auto m = tuple(`TryStatementReturn`,p.end) in memo)
12959                 return *m;
12960             else
12961             {
12962                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyReturn, Spacing))), "ES6.TryStatementReturn"), "TryStatementReturn")(p);
12963                 memo[tuple(`TryStatementReturn`,p.end)] = result;
12964                 return result;
12965             }
12966         }
12967     }
12968 
12969     static TParseTree TryStatementReturn(string s)
12970     {
12971         if(__ctfe)
12972         {
12973             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyReturn, Spacing))), "ES6.TryStatementReturn")(TParseTree("", false,[], s));
12974         }
12975         else
12976         {
12977             memo = null;
12978             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyReturn, Spacing))), "ES6.TryStatementReturn"), "TryStatementReturn")(TParseTree("", false,[], s));
12979         }
12980     }
12981     static string TryStatementReturn(GetName g)
12982     {
12983         return "ES6.TryStatementReturn";
12984     }
12985 
12986     static TParseTree TryStatementYieldReturn(TParseTree p)
12987     {
12988         if(__ctfe)
12989         {
12990             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYieldReturn, Spacing))), "ES6.TryStatementYieldReturn")(p);
12991         }
12992         else
12993         {
12994             if(auto m = tuple(`TryStatementYieldReturn`,p.end) in memo)
12995                 return *m;
12996             else
12997             {
12998                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYieldReturn, Spacing))), "ES6.TryStatementYieldReturn"), "TryStatementYieldReturn")(p);
12999                 memo[tuple(`TryStatementYieldReturn`,p.end)] = result;
13000                 return result;
13001             }
13002         }
13003     }
13004 
13005     static TParseTree TryStatementYieldReturn(string s)
13006     {
13007         if(__ctfe)
13008         {
13009             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYieldReturn, Spacing))), "ES6.TryStatementYieldReturn")(TParseTree("", false,[], s));
13010         }
13011         else
13012         {
13013             memo = null;
13014             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("try"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, CatchYieldReturn, Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FinallyYieldReturn, Spacing))), "ES6.TryStatementYieldReturn"), "TryStatementYieldReturn")(TParseTree("", false,[], s));
13015         }
13016     }
13017     static string TryStatementYieldReturn(GetName g)
13018     {
13019         return "ES6.TryStatementYieldReturn";
13020     }
13021 
13022     static TParseTree Catch(TParseTree p)
13023     {
13024         if(__ctfe)
13025         {
13026             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Catch")(p);
13027         }
13028         else
13029         {
13030             if(auto m = tuple(`Catch`,p.end) in memo)
13031                 return *m;
13032             else
13033             {
13034                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Catch"), "Catch")(p);
13035                 memo[tuple(`Catch`,p.end)] = result;
13036                 return result;
13037             }
13038         }
13039     }
13040 
13041     static TParseTree Catch(string s)
13042     {
13043         if(__ctfe)
13044         {
13045             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Catch")(TParseTree("", false,[], s));
13046         }
13047         else
13048         {
13049             memo = null;
13050             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Catch"), "Catch")(TParseTree("", false,[], s));
13051         }
13052     }
13053     static string Catch(GetName g)
13054     {
13055         return "ES6.Catch";
13056     }
13057 
13058     static TParseTree CatchYield(TParseTree p)
13059     {
13060         if(__ctfe)
13061         {
13062             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.CatchYield")(p);
13063         }
13064         else
13065         {
13066             if(auto m = tuple(`CatchYield`,p.end) in memo)
13067                 return *m;
13068             else
13069             {
13070                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.CatchYield"), "CatchYield")(p);
13071                 memo[tuple(`CatchYield`,p.end)] = result;
13072                 return result;
13073             }
13074         }
13075     }
13076 
13077     static TParseTree CatchYield(string s)
13078     {
13079         if(__ctfe)
13080         {
13081             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.CatchYield")(TParseTree("", false,[], s));
13082         }
13083         else
13084         {
13085             memo = null;
13086             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.CatchYield"), "CatchYield")(TParseTree("", false,[], s));
13087         }
13088     }
13089     static string CatchYield(GetName g)
13090     {
13091         return "ES6.CatchYield";
13092     }
13093 
13094     static TParseTree CatchReturn(TParseTree p)
13095     {
13096         if(__ctfe)
13097         {
13098             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.CatchReturn")(p);
13099         }
13100         else
13101         {
13102             if(auto m = tuple(`CatchReturn`,p.end) in memo)
13103                 return *m;
13104             else
13105             {
13106                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.CatchReturn"), "CatchReturn")(p);
13107                 memo[tuple(`CatchReturn`,p.end)] = result;
13108                 return result;
13109             }
13110         }
13111     }
13112 
13113     static TParseTree CatchReturn(string s)
13114     {
13115         if(__ctfe)
13116         {
13117             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.CatchReturn")(TParseTree("", false,[], s));
13118         }
13119         else
13120         {
13121             memo = null;
13122             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameter, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.CatchReturn"), "CatchReturn")(TParseTree("", false,[], s));
13123         }
13124     }
13125     static string CatchReturn(GetName g)
13126     {
13127         return "ES6.CatchReturn";
13128     }
13129 
13130     static TParseTree CatchYieldReturn(TParseTree p)
13131     {
13132         if(__ctfe)
13133         {
13134             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.CatchYieldReturn")(p);
13135         }
13136         else
13137         {
13138             if(auto m = tuple(`CatchYieldReturn`,p.end) in memo)
13139                 return *m;
13140             else
13141             {
13142                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.CatchYieldReturn"), "CatchYieldReturn")(p);
13143                 memo[tuple(`CatchYieldReturn`,p.end)] = result;
13144                 return result;
13145             }
13146         }
13147     }
13148 
13149     static TParseTree CatchYieldReturn(string s)
13150     {
13151         if(__ctfe)
13152         {
13153             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.CatchYieldReturn")(TParseTree("", false,[], s));
13154         }
13155         else
13156         {
13157             memo = null;
13158             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("catch"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, CatchParameterYield, Spacing)), Spacing), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.CatchYieldReturn"), "CatchYieldReturn")(TParseTree("", false,[], s));
13159         }
13160     }
13161     static string CatchYieldReturn(GetName g)
13162     {
13163         return "ES6.CatchYieldReturn";
13164     }
13165 
13166     static TParseTree Finally(TParseTree p)
13167     {
13168         if(__ctfe)
13169         {
13170             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Finally")(p);
13171         }
13172         else
13173         {
13174             if(auto m = tuple(`Finally`,p.end) in memo)
13175                 return *m;
13176             else
13177             {
13178                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Finally"), "Finally")(p);
13179                 memo[tuple(`Finally`,p.end)] = result;
13180                 return result;
13181             }
13182         }
13183     }
13184 
13185     static TParseTree Finally(string s)
13186     {
13187         if(__ctfe)
13188         {
13189             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Finally")(TParseTree("", false,[], s));
13190         }
13191         else
13192         {
13193             memo = null;
13194             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, Block, Spacing))), "ES6.Finally"), "Finally")(TParseTree("", false,[], s));
13195         }
13196     }
13197     static string Finally(GetName g)
13198     {
13199         return "ES6.Finally";
13200     }
13201 
13202     static TParseTree FinallyYield(TParseTree p)
13203     {
13204         if(__ctfe)
13205         {
13206             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.FinallyYield")(p);
13207         }
13208         else
13209         {
13210             if(auto m = tuple(`FinallyYield`,p.end) in memo)
13211                 return *m;
13212             else
13213             {
13214                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.FinallyYield"), "FinallyYield")(p);
13215                 memo[tuple(`FinallyYield`,p.end)] = result;
13216                 return result;
13217             }
13218         }
13219     }
13220 
13221     static TParseTree FinallyYield(string s)
13222     {
13223         if(__ctfe)
13224         {
13225             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.FinallyYield")(TParseTree("", false,[], s));
13226         }
13227         else
13228         {
13229             memo = null;
13230             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYield, Spacing))), "ES6.FinallyYield"), "FinallyYield")(TParseTree("", false,[], s));
13231         }
13232     }
13233     static string FinallyYield(GetName g)
13234     {
13235         return "ES6.FinallyYield";
13236     }
13237 
13238     static TParseTree FinallyReturn(TParseTree p)
13239     {
13240         if(__ctfe)
13241         {
13242             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.FinallyReturn")(p);
13243         }
13244         else
13245         {
13246             if(auto m = tuple(`FinallyReturn`,p.end) in memo)
13247                 return *m;
13248             else
13249             {
13250                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.FinallyReturn"), "FinallyReturn")(p);
13251                 memo[tuple(`FinallyReturn`,p.end)] = result;
13252                 return result;
13253             }
13254         }
13255     }
13256 
13257     static TParseTree FinallyReturn(string s)
13258     {
13259         if(__ctfe)
13260         {
13261             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.FinallyReturn")(TParseTree("", false,[], s));
13262         }
13263         else
13264         {
13265             memo = null;
13266             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockReturn, Spacing))), "ES6.FinallyReturn"), "FinallyReturn")(TParseTree("", false,[], s));
13267         }
13268     }
13269     static string FinallyReturn(GetName g)
13270     {
13271         return "ES6.FinallyReturn";
13272     }
13273 
13274     static TParseTree FinallyYieldReturn(TParseTree p)
13275     {
13276         if(__ctfe)
13277         {
13278             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.FinallyYieldReturn")(p);
13279         }
13280         else
13281         {
13282             if(auto m = tuple(`FinallyYieldReturn`,p.end) in memo)
13283                 return *m;
13284             else
13285             {
13286                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.FinallyYieldReturn"), "FinallyYieldReturn")(p);
13287                 memo[tuple(`FinallyYieldReturn`,p.end)] = result;
13288                 return result;
13289             }
13290         }
13291     }
13292 
13293     static TParseTree FinallyYieldReturn(string s)
13294     {
13295         if(__ctfe)
13296         {
13297             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.FinallyYieldReturn")(TParseTree("", false,[], s));
13298         }
13299         else
13300         {
13301             memo = null;
13302             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("finally"), Spacing)), pegged.peg.propagate!(pegged.peg.wrapAround!(Spacing, BlockYieldReturn, Spacing))), "ES6.FinallyYieldReturn"), "FinallyYieldReturn")(TParseTree("", false,[], s));
13303         }
13304     }
13305     static string FinallyYieldReturn(GetName g)
13306     {
13307         return "ES6.FinallyYieldReturn";
13308     }
13309 
13310     static TParseTree CatchParameter(TParseTree p)
13311     {
13312         if(__ctfe)
13313         {
13314             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.CatchParameter")(p);
13315         }
13316         else
13317         {
13318             if(auto m = tuple(`CatchParameter`,p.end) in memo)
13319                 return *m;
13320             else
13321             {
13322                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.CatchParameter"), "CatchParameter")(p);
13323                 memo[tuple(`CatchParameter`,p.end)] = result;
13324                 return result;
13325             }
13326         }
13327     }
13328 
13329     static TParseTree CatchParameter(string s)
13330     {
13331         if(__ctfe)
13332         {
13333             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.CatchParameter")(TParseTree("", false,[], s));
13334         }
13335         else
13336         {
13337             memo = null;
13338             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPattern, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), "ES6.CatchParameter"), "CatchParameter")(TParseTree("", false,[], s));
13339         }
13340     }
13341     static string CatchParameter(GetName g)
13342     {
13343         return "ES6.CatchParameter";
13344     }
13345 
13346     static TParseTree CatchParameterYield(TParseTree p)
13347     {
13348         if(__ctfe)
13349         {
13350             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.CatchParameterYield")(p);
13351         }
13352         else
13353         {
13354             if(auto m = tuple(`CatchParameterYield`,p.end) in memo)
13355                 return *m;
13356             else
13357             {
13358                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.CatchParameterYield"), "CatchParameterYield")(p);
13359                 memo[tuple(`CatchParameterYield`,p.end)] = result;
13360                 return result;
13361             }
13362         }
13363     }
13364 
13365     static TParseTree CatchParameterYield(string s)
13366     {
13367         if(__ctfe)
13368         {
13369             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.CatchParameterYield")(TParseTree("", false,[], s));
13370         }
13371         else
13372         {
13373             memo = null;
13374             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingPatternYield, Spacing), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), "ES6.CatchParameterYield"), "CatchParameterYield")(TParseTree("", false,[], s));
13375         }
13376     }
13377     static string CatchParameterYield(GetName g)
13378     {
13379         return "ES6.CatchParameterYield";
13380     }
13381 
13382     static TParseTree DebuggerStatement(TParseTree p)
13383     {
13384         if(__ctfe)
13385         {
13386             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("debugger"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.DebuggerStatement")(p);
13387         }
13388         else
13389         {
13390             if(auto m = tuple(`DebuggerStatement`,p.end) in memo)
13391                 return *m;
13392             else
13393             {
13394                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("debugger"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.DebuggerStatement"), "DebuggerStatement")(p);
13395                 memo[tuple(`DebuggerStatement`,p.end)] = result;
13396                 return result;
13397             }
13398         }
13399     }
13400 
13401     static TParseTree DebuggerStatement(string s)
13402     {
13403         if(__ctfe)
13404         {
13405             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("debugger"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.DebuggerStatement")(TParseTree("", false,[], s));
13406         }
13407         else
13408         {
13409             memo = null;
13410             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("debugger"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing))), "ES6.DebuggerStatement"), "DebuggerStatement")(TParseTree("", false,[], s));
13411         }
13412     }
13413     static string DebuggerStatement(GetName g)
13414     {
13415         return "ES6.DebuggerStatement";
13416     }
13417 
13418     template CurlyBrackets(alias Content)
13419     {
13420     static TParseTree CurlyBrackets(TParseTree p)
13421     {
13422         if(__ctfe)
13423         {
13424             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("}"), Spacing)), "ES6.CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")")(p);
13425         }
13426         else
13427         {
13428             if(auto m = tuple("CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")",p.end) in memo)
13429                 return *m;
13430             else
13431             {
13432                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("}"), Spacing)), "ES6.CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")"), "CurlyBrackets_1")(p);
13433                 memo[tuple("CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")",p.end)] = result;
13434                 return result;
13435             }
13436         }
13437     }
13438 
13439     static TParseTree CurlyBrackets(string s)
13440     {
13441         if(__ctfe)
13442         {
13443             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("}"), Spacing)), "ES6.CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")")(TParseTree("", false,[], s));
13444         }
13445         else
13446         {
13447             memo = null;
13448             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("}"), Spacing)), "ES6.CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")"), "CurlyBrackets_1")(TParseTree("", false,[], s));
13449         }
13450     }
13451     static string CurlyBrackets(GetName g)
13452     {
13453         return "ES6.CurlyBrackets!(" ~ pegged.peg.getName!(Content) ~ ")";
13454     }
13455 
13456     }
13457     template Parentheses(alias Content)
13458     {
13459     static TParseTree Parentheses(TParseTree p)
13460     {
13461         if(__ctfe)
13462         {
13463             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing)), "ES6.Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")")(p);
13464         }
13465         else
13466         {
13467             if(auto m = tuple("Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")",p.end) in memo)
13468                 return *m;
13469             else
13470             {
13471                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing)), "ES6.Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")"), "Parentheses_1")(p);
13472                 memo[tuple("Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")",p.end)] = result;
13473                 return result;
13474             }
13475         }
13476     }
13477 
13478     static TParseTree Parentheses(string s)
13479     {
13480         if(__ctfe)
13481         {
13482             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing)), "ES6.Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")")(TParseTree("", false,[], s));
13483         }
13484         else
13485         {
13486             memo = null;
13487             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing)), "ES6.Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")"), "Parentheses_1")(TParseTree("", false,[], s));
13488         }
13489     }
13490     static string Parentheses(GetName g)
13491     {
13492         return "ES6.Parentheses!(" ~ pegged.peg.getName!(Content) ~ ")";
13493     }
13494 
13495     }
13496     template SquareBrackets(alias Content)
13497     {
13498     static TParseTree SquareBrackets(TParseTree p)
13499     {
13500         if(__ctfe)
13501         {
13502             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("]"), Spacing)), "ES6.SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")")(p);
13503         }
13504         else
13505         {
13506             if(auto m = tuple("SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")",p.end) in memo)
13507                 return *m;
13508             else
13509             {
13510                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("]"), Spacing)), "ES6.SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")"), "SquareBrackets_1")(p);
13511                 memo[tuple("SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")",p.end)] = result;
13512                 return result;
13513             }
13514         }
13515     }
13516 
13517     static TParseTree SquareBrackets(string s)
13518     {
13519         if(__ctfe)
13520         {
13521             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("]"), Spacing)), "ES6.SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")")(TParseTree("", false,[], s));
13522         }
13523         else
13524         {
13525             memo = null;
13526             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("["), Spacing), pegged.peg.wrapAround!(Spacing, Content, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("]"), Spacing)), "ES6.SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")"), "SquareBrackets_1")(TParseTree("", false,[], s));
13527         }
13528     }
13529     static string SquareBrackets(GetName g)
13530     {
13531         return "ES6.SquareBrackets!(" ~ pegged.peg.getName!(Content) ~ ")";
13532     }
13533 
13534     }
13535     static TParseTree FunctionDeclaration(TParseTree p)
13536     {
13537         if(__ctfe)
13538         {
13539             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclaration")(p);
13540         }
13541         else
13542         {
13543             if(auto m = tuple(`FunctionDeclaration`,p.end) in memo)
13544                 return *m;
13545             else
13546             {
13547                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclaration"), "FunctionDeclaration")(p);
13548                 memo[tuple(`FunctionDeclaration`,p.end)] = result;
13549                 return result;
13550             }
13551         }
13552     }
13553 
13554     static TParseTree FunctionDeclaration(string s)
13555     {
13556         if(__ctfe)
13557         {
13558             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclaration")(TParseTree("", false,[], s));
13559         }
13560         else
13561         {
13562             memo = null;
13563             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclaration"), "FunctionDeclaration")(TParseTree("", false,[], s));
13564         }
13565     }
13566     static string FunctionDeclaration(GetName g)
13567     {
13568         return "ES6.FunctionDeclaration";
13569     }
13570 
13571     static TParseTree FunctionDeclarationYield(TParseTree p)
13572     {
13573         if(__ctfe)
13574         {
13575             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclarationYield")(p);
13576         }
13577         else
13578         {
13579             if(auto m = tuple(`FunctionDeclarationYield`,p.end) in memo)
13580                 return *m;
13581             else
13582             {
13583                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclarationYield"), "FunctionDeclarationYield")(p);
13584                 memo[tuple(`FunctionDeclarationYield`,p.end)] = result;
13585                 return result;
13586             }
13587         }
13588     }
13589 
13590     static TParseTree FunctionDeclarationYield(string s)
13591     {
13592         if(__ctfe)
13593         {
13594             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclarationYield")(TParseTree("", false,[], s));
13595         }
13596         else
13597         {
13598             memo = null;
13599             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), "ES6.FunctionDeclarationYield"), "FunctionDeclarationYield")(TParseTree("", false,[], s));
13600         }
13601     }
13602     static string FunctionDeclarationYield(GetName g)
13603     {
13604         return "ES6.FunctionDeclarationYield";
13605     }
13606 
13607     static TParseTree FunctionDeclarationDefault(TParseTree p)
13608     {
13609         if(__ctfe)
13610         {
13611             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationDefault")(p);
13612         }
13613         else
13614         {
13615             if(auto m = tuple(`FunctionDeclarationDefault`,p.end) in memo)
13616                 return *m;
13617             else
13618             {
13619                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationDefault"), "FunctionDeclarationDefault")(p);
13620                 memo[tuple(`FunctionDeclarationDefault`,p.end)] = result;
13621                 return result;
13622             }
13623         }
13624     }
13625 
13626     static TParseTree FunctionDeclarationDefault(string s)
13627     {
13628         if(__ctfe)
13629         {
13630             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationDefault")(TParseTree("", false,[], s));
13631         }
13632         else
13633         {
13634             memo = null;
13635             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationDefault"), "FunctionDeclarationDefault")(TParseTree("", false,[], s));
13636         }
13637     }
13638     static string FunctionDeclarationDefault(GetName g)
13639     {
13640         return "ES6.FunctionDeclarationDefault";
13641     }
13642 
13643     static TParseTree FunctionDeclarationYieldDefault(TParseTree p)
13644     {
13645         if(__ctfe)
13646         {
13647             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationYieldDefault")(p);
13648         }
13649         else
13650         {
13651             if(auto m = tuple(`FunctionDeclarationYieldDefault`,p.end) in memo)
13652                 return *m;
13653             else
13654             {
13655                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationYieldDefault"), "FunctionDeclarationYieldDefault")(p);
13656                 memo[tuple(`FunctionDeclarationYieldDefault`,p.end)] = result;
13657                 return result;
13658             }
13659         }
13660     }
13661 
13662     static TParseTree FunctionDeclarationYieldDefault(string s)
13663     {
13664         if(__ctfe)
13665         {
13666             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationYieldDefault")(TParseTree("", false,[], s));
13667         }
13668         else
13669         {
13670             memo = null;
13671             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.FunctionDeclarationYieldDefault"), "FunctionDeclarationYieldDefault")(TParseTree("", false,[], s));
13672         }
13673     }
13674     static string FunctionDeclarationYieldDefault(GetName g)
13675     {
13676         return "ES6.FunctionDeclarationYieldDefault";
13677     }
13678 
13679     static TParseTree FunctionExpression(TParseTree p)
13680     {
13681         if(__ctfe)
13682         {
13683             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.FunctionExpression")(p);
13684         }
13685         else
13686         {
13687             if(auto m = tuple(`FunctionExpression`,p.end) in memo)
13688                 return *m;
13689             else
13690             {
13691                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.FunctionExpression"), "FunctionExpression")(p);
13692                 memo[tuple(`FunctionExpression`,p.end)] = result;
13693                 return result;
13694             }
13695         }
13696     }
13697 
13698     static TParseTree FunctionExpression(string s)
13699     {
13700         if(__ctfe)
13701         {
13702             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.FunctionExpression")(TParseTree("", false,[], s));
13703         }
13704         else
13705         {
13706             memo = null;
13707             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.FunctionExpression"), "FunctionExpression")(TParseTree("", false,[], s));
13708         }
13709     }
13710     static string FunctionExpression(GetName g)
13711     {
13712         return "ES6.FunctionExpression";
13713     }
13714 
13715     static TParseTree StrictFormalParameters(TParseTree p)
13716     {
13717         if(__ctfe)
13718         {
13719             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing), "ES6.StrictFormalParameters")(p);
13720         }
13721         else
13722         {
13723             if(auto m = tuple(`StrictFormalParameters`,p.end) in memo)
13724                 return *m;
13725             else
13726             {
13727                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing), "ES6.StrictFormalParameters"), "StrictFormalParameters")(p);
13728                 memo[tuple(`StrictFormalParameters`,p.end)] = result;
13729                 return result;
13730             }
13731         }
13732     }
13733 
13734     static TParseTree StrictFormalParameters(string s)
13735     {
13736         if(__ctfe)
13737         {
13738             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing), "ES6.StrictFormalParameters")(TParseTree("", false,[], s));
13739         }
13740         else
13741         {
13742             memo = null;
13743             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing), "ES6.StrictFormalParameters"), "StrictFormalParameters")(TParseTree("", false,[], s));
13744         }
13745     }
13746     static string StrictFormalParameters(GetName g)
13747     {
13748         return "ES6.StrictFormalParameters";
13749     }
13750 
13751     static TParseTree StrictFormalParametersYield(TParseTree p)
13752     {
13753         if(__ctfe)
13754         {
13755             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing), "ES6.StrictFormalParametersYield")(p);
13756         }
13757         else
13758         {
13759             if(auto m = tuple(`StrictFormalParametersYield`,p.end) in memo)
13760                 return *m;
13761             else
13762             {
13763                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing), "ES6.StrictFormalParametersYield"), "StrictFormalParametersYield")(p);
13764                 memo[tuple(`StrictFormalParametersYield`,p.end)] = result;
13765                 return result;
13766             }
13767         }
13768     }
13769 
13770     static TParseTree StrictFormalParametersYield(string s)
13771     {
13772         if(__ctfe)
13773         {
13774             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing), "ES6.StrictFormalParametersYield")(TParseTree("", false,[], s));
13775         }
13776         else
13777         {
13778             memo = null;
13779             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing), "ES6.StrictFormalParametersYield"), "StrictFormalParametersYield")(TParseTree("", false,[], s));
13780         }
13781     }
13782     static string StrictFormalParametersYield(GetName g)
13783     {
13784         return "ES6.StrictFormalParametersYield";
13785     }
13786 
13787     static TParseTree FormalParameters(TParseTree p)
13788     {
13789         if(__ctfe)
13790         {
13791             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterList, Spacing)), "ES6.FormalParameters")(p);
13792         }
13793         else
13794         {
13795             if(auto m = tuple(`FormalParameters`,p.end) in memo)
13796                 return *m;
13797             else
13798             {
13799                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterList, Spacing)), "ES6.FormalParameters"), "FormalParameters")(p);
13800                 memo[tuple(`FormalParameters`,p.end)] = result;
13801                 return result;
13802             }
13803         }
13804     }
13805 
13806     static TParseTree FormalParameters(string s)
13807     {
13808         if(__ctfe)
13809         {
13810             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterList, Spacing)), "ES6.FormalParameters")(TParseTree("", false,[], s));
13811         }
13812         else
13813         {
13814             memo = null;
13815             return hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterList, Spacing)), "ES6.FormalParameters"), "FormalParameters")(TParseTree("", false,[], s));
13816         }
13817     }
13818     static string FormalParameters(GetName g)
13819     {
13820         return "ES6.FormalParameters";
13821     }
13822 
13823     static TParseTree FormalParametersYield(TParseTree p)
13824     {
13825         if(__ctfe)
13826         {
13827             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterListYield, Spacing)), "ES6.FormalParametersYield")(p);
13828         }
13829         else
13830         {
13831             if(auto m = tuple(`FormalParametersYield`,p.end) in memo)
13832                 return *m;
13833             else
13834             {
13835                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterListYield, Spacing)), "ES6.FormalParametersYield"), "FormalParametersYield")(p);
13836                 memo[tuple(`FormalParametersYield`,p.end)] = result;
13837                 return result;
13838             }
13839         }
13840     }
13841 
13842     static TParseTree FormalParametersYield(string s)
13843     {
13844         if(__ctfe)
13845         {
13846             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterListYield, Spacing)), "ES6.FormalParametersYield")(TParseTree("", false,[], s));
13847         }
13848         else
13849         {
13850             memo = null;
13851             return hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, FormalParameterListYield, Spacing)), "ES6.FormalParametersYield"), "FormalParametersYield")(TParseTree("", false,[], s));
13852         }
13853     }
13854     static string FormalParametersYield(GetName g)
13855     {
13856         return "ES6.FormalParametersYield";
13857     }
13858 
13859     static TParseTree FormalParameterList(TParseTree p)
13860     {
13861         if(__ctfe)
13862         {
13863             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterList")(p);
13864         }
13865         else
13866         {
13867             if(auto m = tuple(`FormalParameterList`,p.end) in memo)
13868                 return *m;
13869             else
13870             {
13871                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterList"), "FormalParameterList")(p);
13872                 memo[tuple(`FormalParameterList`,p.end)] = result;
13873                 return result;
13874             }
13875         }
13876     }
13877 
13878     static TParseTree FormalParameterList(string s)
13879     {
13880         if(__ctfe)
13881         {
13882             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterList")(TParseTree("", false,[], s));
13883         }
13884         else
13885         {
13886             memo = null;
13887             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsList, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameter, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterList"), "FormalParameterList")(TParseTree("", false,[], s));
13888         }
13889     }
13890     static string FormalParameterList(GetName g)
13891     {
13892         return "ES6.FormalParameterList";
13893     }
13894 
13895     static TParseTree FormalParameterListYield(TParseTree p)
13896     {
13897         if(__ctfe)
13898         {
13899             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterListYield")(p);
13900         }
13901         else
13902         {
13903             if(auto m = tuple(`FormalParameterListYield`,p.end) in memo)
13904                 return *m;
13905             else
13906             {
13907                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterListYield"), "FormalParameterListYield")(p);
13908                 memo[tuple(`FormalParameterListYield`,p.end)] = result;
13909                 return result;
13910             }
13911         }
13912     }
13913 
13914     static TParseTree FormalParameterListYield(string s)
13915     {
13916         if(__ctfe)
13917         {
13918             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterListYield")(TParseTree("", false,[], s));
13919         }
13920         else
13921         {
13922             memo = null;
13923             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalsListYield, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FunctionRestParameterYield, Spacing)), Spacing))), Spacing)), "ES6.FormalParameterListYield"), "FormalParameterListYield")(TParseTree("", false,[], s));
13924         }
13925     }
13926     static string FormalParameterListYield(GetName g)
13927     {
13928         return "ES6.FormalParameterListYield";
13929     }
13930 
13931     static TParseTree FormalsList(TParseTree p)
13932     {
13933         if(__ctfe)
13934         {
13935             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing)), Spacing))), "ES6.FormalsList")(p);
13936         }
13937         else
13938         {
13939             if(auto m = tuple(`FormalsList`,p.end) in memo)
13940                 return *m;
13941             else
13942             {
13943                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing)), Spacing))), "ES6.FormalsList"), "FormalsList")(p);
13944                 memo[tuple(`FormalsList`,p.end)] = result;
13945                 return result;
13946             }
13947         }
13948     }
13949 
13950     static TParseTree FormalsList(string s)
13951     {
13952         if(__ctfe)
13953         {
13954             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing)), Spacing))), "ES6.FormalsList")(TParseTree("", false,[], s));
13955         }
13956         else
13957         {
13958             memo = null;
13959             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing)), Spacing))), "ES6.FormalsList"), "FormalsList")(TParseTree("", false,[], s));
13960         }
13961     }
13962     static string FormalsList(GetName g)
13963     {
13964         return "ES6.FormalsList";
13965     }
13966 
13967     static TParseTree FormalsListYield(TParseTree p)
13968     {
13969         if(__ctfe)
13970         {
13971             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing)), Spacing))), "ES6.FormalsListYield")(p);
13972         }
13973         else
13974         {
13975             if(auto m = tuple(`FormalsListYield`,p.end) in memo)
13976                 return *m;
13977             else
13978             {
13979                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing)), Spacing))), "ES6.FormalsListYield"), "FormalsListYield")(p);
13980                 memo[tuple(`FormalsListYield`,p.end)] = result;
13981                 return result;
13982             }
13983         }
13984     }
13985 
13986     static TParseTree FormalsListYield(string s)
13987     {
13988         if(__ctfe)
13989         {
13990             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing)), Spacing))), "ES6.FormalsListYield")(TParseTree("", false,[], s));
13991         }
13992         else
13993         {
13994             memo = null;
13995             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing), pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(","), Spacing)), pegged.peg.wrapAround!(Spacing, FormalParameterYield, Spacing)), Spacing))), "ES6.FormalsListYield"), "FormalsListYield")(TParseTree("", false,[], s));
13996         }
13997     }
13998     static string FormalsListYield(GetName g)
13999     {
14000         return "ES6.FormalsListYield";
14001     }
14002 
14003     static TParseTree FunctionRestParameter(TParseTree p)
14004     {
14005         if(__ctfe)
14006         {
14007             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing), "ES6.FunctionRestParameter")(p);
14008         }
14009         else
14010         {
14011             if(auto m = tuple(`FunctionRestParameter`,p.end) in memo)
14012                 return *m;
14013             else
14014             {
14015                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing), "ES6.FunctionRestParameter"), "FunctionRestParameter")(p);
14016                 memo[tuple(`FunctionRestParameter`,p.end)] = result;
14017                 return result;
14018             }
14019         }
14020     }
14021 
14022     static TParseTree FunctionRestParameter(string s)
14023     {
14024         if(__ctfe)
14025         {
14026             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing), "ES6.FunctionRestParameter")(TParseTree("", false,[], s));
14027         }
14028         else
14029         {
14030             memo = null;
14031             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElement, Spacing), "ES6.FunctionRestParameter"), "FunctionRestParameter")(TParseTree("", false,[], s));
14032         }
14033     }
14034     static string FunctionRestParameter(GetName g)
14035     {
14036         return "ES6.FunctionRestParameter";
14037     }
14038 
14039     static TParseTree FunctionRestParameterYield(TParseTree p)
14040     {
14041         if(__ctfe)
14042         {
14043             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing), "ES6.FunctionRestParameterYield")(p);
14044         }
14045         else
14046         {
14047             if(auto m = tuple(`FunctionRestParameterYield`,p.end) in memo)
14048                 return *m;
14049             else
14050             {
14051                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing), "ES6.FunctionRestParameterYield"), "FunctionRestParameterYield")(p);
14052                 memo[tuple(`FunctionRestParameterYield`,p.end)] = result;
14053                 return result;
14054             }
14055         }
14056     }
14057 
14058     static TParseTree FunctionRestParameterYield(string s)
14059     {
14060         if(__ctfe)
14061         {
14062             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing), "ES6.FunctionRestParameterYield")(TParseTree("", false,[], s));
14063         }
14064         else
14065         {
14066             memo = null;
14067             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingRestElementYield, Spacing), "ES6.FunctionRestParameterYield"), "FunctionRestParameterYield")(TParseTree("", false,[], s));
14068         }
14069     }
14070     static string FunctionRestParameterYield(GetName g)
14071     {
14072         return "ES6.FunctionRestParameterYield";
14073     }
14074 
14075     static TParseTree FormalParameter(TParseTree p)
14076     {
14077         if(__ctfe)
14078         {
14079             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElement, Spacing), "ES6.FormalParameter")(p);
14080         }
14081         else
14082         {
14083             if(auto m = tuple(`FormalParameter`,p.end) in memo)
14084                 return *m;
14085             else
14086             {
14087                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElement, Spacing), "ES6.FormalParameter"), "FormalParameter")(p);
14088                 memo[tuple(`FormalParameter`,p.end)] = result;
14089                 return result;
14090             }
14091         }
14092     }
14093 
14094     static TParseTree FormalParameter(string s)
14095     {
14096         if(__ctfe)
14097         {
14098             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElement, Spacing), "ES6.FormalParameter")(TParseTree("", false,[], s));
14099         }
14100         else
14101         {
14102             memo = null;
14103             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElement, Spacing), "ES6.FormalParameter"), "FormalParameter")(TParseTree("", false,[], s));
14104         }
14105     }
14106     static string FormalParameter(GetName g)
14107     {
14108         return "ES6.FormalParameter";
14109     }
14110 
14111     static TParseTree FormalParameterYield(TParseTree p)
14112     {
14113         if(__ctfe)
14114         {
14115             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing), "ES6.FormalParameterYield")(p);
14116         }
14117         else
14118         {
14119             if(auto m = tuple(`FormalParameterYield`,p.end) in memo)
14120                 return *m;
14121             else
14122             {
14123                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing), "ES6.FormalParameterYield"), "FormalParameterYield")(p);
14124                 memo[tuple(`FormalParameterYield`,p.end)] = result;
14125                 return result;
14126             }
14127         }
14128     }
14129 
14130     static TParseTree FormalParameterYield(string s)
14131     {
14132         if(__ctfe)
14133         {
14134             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing), "ES6.FormalParameterYield")(TParseTree("", false,[], s));
14135         }
14136         else
14137         {
14138             memo = null;
14139             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, BindingElementYield, Spacing), "ES6.FormalParameterYield"), "FormalParameterYield")(TParseTree("", false,[], s));
14140         }
14141     }
14142     static string FormalParameterYield(GetName g)
14143     {
14144         return "ES6.FormalParameterYield";
14145     }
14146 
14147     static TParseTree FunctionBody(TParseTree p)
14148     {
14149         if(__ctfe)
14150         {
14151             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementList, Spacing), "ES6.FunctionBody")(p);
14152         }
14153         else
14154         {
14155             if(auto m = tuple(`FunctionBody`,p.end) in memo)
14156                 return *m;
14157             else
14158             {
14159                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementList, Spacing), "ES6.FunctionBody"), "FunctionBody")(p);
14160                 memo[tuple(`FunctionBody`,p.end)] = result;
14161                 return result;
14162             }
14163         }
14164     }
14165 
14166     static TParseTree FunctionBody(string s)
14167     {
14168         if(__ctfe)
14169         {
14170             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementList, Spacing), "ES6.FunctionBody")(TParseTree("", false,[], s));
14171         }
14172         else
14173         {
14174             memo = null;
14175             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementList, Spacing), "ES6.FunctionBody"), "FunctionBody")(TParseTree("", false,[], s));
14176         }
14177     }
14178     static string FunctionBody(GetName g)
14179     {
14180         return "ES6.FunctionBody";
14181     }
14182 
14183     static TParseTree FunctionBodyYield(TParseTree p)
14184     {
14185         if(__ctfe)
14186         {
14187             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementListYield, Spacing), "ES6.FunctionBodyYield")(p);
14188         }
14189         else
14190         {
14191             if(auto m = tuple(`FunctionBodyYield`,p.end) in memo)
14192                 return *m;
14193             else
14194             {
14195                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementListYield, Spacing), "ES6.FunctionBodyYield"), "FunctionBodyYield")(p);
14196                 memo[tuple(`FunctionBodyYield`,p.end)] = result;
14197                 return result;
14198             }
14199         }
14200     }
14201 
14202     static TParseTree FunctionBodyYield(string s)
14203     {
14204         if(__ctfe)
14205         {
14206             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementListYield, Spacing), "ES6.FunctionBodyYield")(TParseTree("", false,[], s));
14207         }
14208         else
14209         {
14210             memo = null;
14211             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionStatementListYield, Spacing), "ES6.FunctionBodyYield"), "FunctionBodyYield")(TParseTree("", false,[], s));
14212         }
14213     }
14214     static string FunctionBodyYield(GetName g)
14215     {
14216         return "ES6.FunctionBodyYield";
14217     }
14218 
14219     static TParseTree FunctionStatementList(TParseTree p)
14220     {
14221         if(__ctfe)
14222         {
14223             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), "ES6.FunctionStatementList")(p);
14224         }
14225         else
14226         {
14227             if(auto m = tuple(`FunctionStatementList`,p.end) in memo)
14228                 return *m;
14229             else
14230             {
14231                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), "ES6.FunctionStatementList"), "FunctionStatementList")(p);
14232                 memo[tuple(`FunctionStatementList`,p.end)] = result;
14233                 return result;
14234             }
14235         }
14236     }
14237 
14238     static TParseTree FunctionStatementList(string s)
14239     {
14240         if(__ctfe)
14241         {
14242             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), "ES6.FunctionStatementList")(TParseTree("", false,[], s));
14243         }
14244         else
14245         {
14246             memo = null;
14247             return hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListReturn, Spacing)), "ES6.FunctionStatementList"), "FunctionStatementList")(TParseTree("", false,[], s));
14248         }
14249     }
14250     static string FunctionStatementList(GetName g)
14251     {
14252         return "ES6.FunctionStatementList";
14253     }
14254 
14255     static TParseTree FunctionStatementListYield(TParseTree p)
14256     {
14257         if(__ctfe)
14258         {
14259             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), "ES6.FunctionStatementListYield")(p);
14260         }
14261         else
14262         {
14263             if(auto m = tuple(`FunctionStatementListYield`,p.end) in memo)
14264                 return *m;
14265             else
14266             {
14267                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), "ES6.FunctionStatementListYield"), "FunctionStatementListYield")(p);
14268                 memo[tuple(`FunctionStatementListYield`,p.end)] = result;
14269                 return result;
14270             }
14271         }
14272     }
14273 
14274     static TParseTree FunctionStatementListYield(string s)
14275     {
14276         if(__ctfe)
14277         {
14278             return         pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), "ES6.FunctionStatementListYield")(TParseTree("", false,[], s));
14279         }
14280         else
14281         {
14282             memo = null;
14283             return hooked!(pegged.peg.defined!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, StatementListYieldReturn, Spacing)), "ES6.FunctionStatementListYield"), "FunctionStatementListYield")(TParseTree("", false,[], s));
14284         }
14285     }
14286     static string FunctionStatementListYield(GetName g)
14287     {
14288         return "ES6.FunctionStatementListYield";
14289     }
14290 
14291     static TParseTree ArrowFunction(TParseTree p)
14292     {
14293         if(__ctfe)
14294         {
14295             return         pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunction")(p);
14296         }
14297         else
14298         {
14299             if(auto m = tuple(`ArrowFunction`,p.end) in memo)
14300                 return *m;
14301             else
14302             {
14303                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunction"), "ArrowFunction")(p);
14304                 memo[tuple(`ArrowFunction`,p.end)] = result;
14305                 return result;
14306             }
14307         }
14308     }
14309 
14310     static TParseTree ArrowFunction(string s)
14311     {
14312         if(__ctfe)
14313         {
14314             return         pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunction")(TParseTree("", false,[], s));
14315         }
14316         else
14317         {
14318             memo = null;
14319             return hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunction"), "ArrowFunction")(TParseTree("", false,[], s));
14320         }
14321     }
14322     static string ArrowFunction(GetName g)
14323     {
14324         return "ES6.ArrowFunction";
14325     }
14326 
14327     static TParseTree ArrowFunctionIn(TParseTree p)
14328     {
14329         if(__ctfe)
14330         {
14331             return         pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionIn")(p);
14332         }
14333         else
14334         {
14335             if(auto m = tuple(`ArrowFunctionIn`,p.end) in memo)
14336                 return *m;
14337             else
14338             {
14339                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionIn"), "ArrowFunctionIn")(p);
14340                 memo[tuple(`ArrowFunctionIn`,p.end)] = result;
14341                 return result;
14342             }
14343         }
14344     }
14345 
14346     static TParseTree ArrowFunctionIn(string s)
14347     {
14348         if(__ctfe)
14349         {
14350             return         pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionIn")(TParseTree("", false,[], s));
14351         }
14352         else
14353         {
14354             memo = null;
14355             return hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParameters, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionIn"), "ArrowFunctionIn")(TParseTree("", false,[], s));
14356         }
14357     }
14358     static string ArrowFunctionIn(GetName g)
14359     {
14360         return "ES6.ArrowFunctionIn";
14361     }
14362 
14363     static TParseTree ArrowFunctionYield(TParseTree p)
14364     {
14365         if(__ctfe)
14366         {
14367             return         pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunctionYield")(p);
14368         }
14369         else
14370         {
14371             if(auto m = tuple(`ArrowFunctionYield`,p.end) in memo)
14372                 return *m;
14373             else
14374             {
14375                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunctionYield"), "ArrowFunctionYield")(p);
14376                 memo[tuple(`ArrowFunctionYield`,p.end)] = result;
14377                 return result;
14378             }
14379         }
14380     }
14381 
14382     static TParseTree ArrowFunctionYield(string s)
14383     {
14384         if(__ctfe)
14385         {
14386             return         pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunctionYield")(TParseTree("", false,[], s));
14387         }
14388         else
14389         {
14390             memo = null;
14391             return hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBody), "ES6.ArrowFunctionYield"), "ArrowFunctionYield")(TParseTree("", false,[], s));
14392         }
14393     }
14394     static string ArrowFunctionYield(GetName g)
14395     {
14396         return "ES6.ArrowFunctionYield";
14397     }
14398 
14399     static TParseTree ArrowFunctionInYield(TParseTree p)
14400     {
14401         if(__ctfe)
14402         {
14403             return         pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionInYield")(p);
14404         }
14405         else
14406         {
14407             if(auto m = tuple(`ArrowFunctionInYield`,p.end) in memo)
14408                 return *m;
14409             else
14410             {
14411                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionInYield"), "ArrowFunctionInYield")(p);
14412                 memo[tuple(`ArrowFunctionInYield`,p.end)] = result;
14413                 return result;
14414             }
14415         }
14416     }
14417 
14418     static TParseTree ArrowFunctionInYield(string s)
14419     {
14420         if(__ctfe)
14421         {
14422             return         pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionInYield")(TParseTree("", false,[], s));
14423         }
14424         else
14425         {
14426             memo = null;
14427             return hooked!(pegged.peg.defined!(pegged.peg.and!(ArrowParametersYield, Spaces, pegged.peg.literal!("=>"), Spacing, ConciseBodyIn), "ES6.ArrowFunctionInYield"), "ArrowFunctionInYield")(TParseTree("", false,[], s));
14428         }
14429     }
14430     static string ArrowFunctionInYield(GetName g)
14431     {
14432         return "ES6.ArrowFunctionInYield";
14433     }
14434 
14435     static TParseTree ArrowParameters(TParseTree p)
14436     {
14437         if(__ctfe)
14438         {
14439             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing)), "ES6.ArrowParameters")(p);
14440         }
14441         else
14442         {
14443             if(auto m = tuple(`ArrowParameters`,p.end) in memo)
14444                 return *m;
14445             else
14446             {
14447                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing)), "ES6.ArrowParameters"), "ArrowParameters")(p);
14448                 memo[tuple(`ArrowParameters`,p.end)] = result;
14449                 return result;
14450             }
14451         }
14452     }
14453 
14454     static TParseTree ArrowParameters(string s)
14455     {
14456         if(__ctfe)
14457         {
14458             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing)), "ES6.ArrowParameters")(TParseTree("", false,[], s));
14459         }
14460         else
14461         {
14462             memo = null;
14463             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterList, Spacing)), "ES6.ArrowParameters"), "ArrowParameters")(TParseTree("", false,[], s));
14464         }
14465     }
14466     static string ArrowParameters(GetName g)
14467     {
14468         return "ES6.ArrowParameters";
14469     }
14470 
14471     static TParseTree ArrowParametersYield(TParseTree p)
14472     {
14473         if(__ctfe)
14474         {
14475             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing)), "ES6.ArrowParametersYield")(p);
14476         }
14477         else
14478         {
14479             if(auto m = tuple(`ArrowParametersYield`,p.end) in memo)
14480                 return *m;
14481             else
14482             {
14483                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing)), "ES6.ArrowParametersYield"), "ArrowParametersYield")(p);
14484                 memo[tuple(`ArrowParametersYield`,p.end)] = result;
14485                 return result;
14486             }
14487         }
14488     }
14489 
14490     static TParseTree ArrowParametersYield(string s)
14491     {
14492         if(__ctfe)
14493         {
14494             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing)), "ES6.ArrowParametersYield")(TParseTree("", false,[], s));
14495         }
14496         else
14497         {
14498             memo = null;
14499             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, CoverParenthesizedExpressionAndArrowParameterListYield, Spacing)), "ES6.ArrowParametersYield"), "ArrowParametersYield")(TParseTree("", false,[], s));
14500         }
14501     }
14502     static string ArrowParametersYield(GetName g)
14503     {
14504         return "ES6.ArrowParametersYield";
14505     }
14506 
14507     static TParseTree ConciseBody(TParseTree p)
14508     {
14509         if(__ctfe)
14510         {
14511             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBody")(p);
14512         }
14513         else
14514         {
14515             if(auto m = tuple(`ConciseBody`,p.end) in memo)
14516                 return *m;
14517             else
14518             {
14519                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBody"), "ConciseBody")(p);
14520                 memo[tuple(`ConciseBody`,p.end)] = result;
14521                 return result;
14522             }
14523         }
14524     }
14525 
14526     static TParseTree ConciseBody(string s)
14527     {
14528         if(__ctfe)
14529         {
14530             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBody")(TParseTree("", false,[], s));
14531         }
14532         else
14533         {
14534             memo = null;
14535             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpression, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBody"), "ConciseBody")(TParseTree("", false,[], s));
14536         }
14537     }
14538     static string ConciseBody(GetName g)
14539     {
14540         return "ES6.ConciseBody";
14541     }
14542 
14543     static TParseTree ConciseBodyIn(TParseTree p)
14544     {
14545         if(__ctfe)
14546         {
14547             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBodyIn")(p);
14548         }
14549         else
14550         {
14551             if(auto m = tuple(`ConciseBodyIn`,p.end) in memo)
14552                 return *m;
14553             else
14554             {
14555                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBodyIn"), "ConciseBodyIn")(p);
14556                 memo[tuple(`ConciseBodyIn`,p.end)] = result;
14557                 return result;
14558             }
14559         }
14560     }
14561 
14562     static TParseTree ConciseBodyIn(string s)
14563     {
14564         if(__ctfe)
14565         {
14566             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBodyIn")(TParseTree("", false,[], s));
14567         }
14568         else
14569         {
14570             memo = null;
14571             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("{"), Spacing), Spacing)), pegged.peg.wrapAround!(Spacing, AssignmentExpressionIn, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), "ES6.ConciseBodyIn"), "ConciseBodyIn")(TParseTree("", false,[], s));
14572         }
14573     }
14574     static string ConciseBodyIn(GetName g)
14575     {
14576         return "ES6.ConciseBodyIn";
14577     }
14578 
14579     static TParseTree ArrowFormalParameters(TParseTree p)
14580     {
14581         if(__ctfe)
14582         {
14583             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), "ES6.ArrowFormalParameters")(p);
14584         }
14585         else
14586         {
14587             if(auto m = tuple(`ArrowFormalParameters`,p.end) in memo)
14588                 return *m;
14589             else
14590             {
14591                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), "ES6.ArrowFormalParameters"), "ArrowFormalParameters")(p);
14592                 memo[tuple(`ArrowFormalParameters`,p.end)] = result;
14593                 return result;
14594             }
14595         }
14596     }
14597 
14598     static TParseTree ArrowFormalParameters(string s)
14599     {
14600         if(__ctfe)
14601         {
14602             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), "ES6.ArrowFormalParameters")(TParseTree("", false,[], s));
14603         }
14604         else
14605         {
14606             memo = null;
14607             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), "ES6.ArrowFormalParameters"), "ArrowFormalParameters")(TParseTree("", false,[], s));
14608         }
14609     }
14610     static string ArrowFormalParameters(GetName g)
14611     {
14612         return "ES6.ArrowFormalParameters";
14613     }
14614 
14615     static TParseTree ArrowFormalParametersYield(TParseTree p)
14616     {
14617         if(__ctfe)
14618         {
14619             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), "ES6.ArrowFormalParametersYield")(p);
14620         }
14621         else
14622         {
14623             if(auto m = tuple(`ArrowFormalParametersYield`,p.end) in memo)
14624                 return *m;
14625             else
14626             {
14627                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), "ES6.ArrowFormalParametersYield"), "ArrowFormalParametersYield")(p);
14628                 memo[tuple(`ArrowFormalParametersYield`,p.end)] = result;
14629                 return result;
14630             }
14631         }
14632     }
14633 
14634     static TParseTree ArrowFormalParametersYield(string s)
14635     {
14636         if(__ctfe)
14637         {
14638             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), "ES6.ArrowFormalParametersYield")(TParseTree("", false,[], s));
14639         }
14640         else
14641         {
14642             memo = null;
14643             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), "ES6.ArrowFormalParametersYield"), "ArrowFormalParametersYield")(TParseTree("", false,[], s));
14644         }
14645     }
14646     static string ArrowFormalParametersYield(GetName g)
14647     {
14648         return "ES6.ArrowFormalParametersYield";
14649     }
14650 
14651     static TParseTree MethodDefinition(TParseTree p)
14652     {
14653         if(__ctfe)
14654         {
14655             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethod, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinition")(p);
14656         }
14657         else
14658         {
14659             if(auto m = tuple(`MethodDefinition`,p.end) in memo)
14660                 return *m;
14661             else
14662             {
14663                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethod, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinition"), "MethodDefinition")(p);
14664                 memo[tuple(`MethodDefinition`,p.end)] = result;
14665                 return result;
14666             }
14667         }
14668     }
14669 
14670     static TParseTree MethodDefinition(string s)
14671     {
14672         if(__ctfe)
14673         {
14674             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethod, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinition")(TParseTree("", false,[], s));
14675         }
14676         else
14677         {
14678             memo = null;
14679             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethod, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinition"), "MethodDefinition")(TParseTree("", false,[], s));
14680         }
14681     }
14682     static string MethodDefinition(GetName g)
14683     {
14684         return "ES6.MethodDefinition";
14685     }
14686 
14687     static TParseTree MethodDefinitionYield(TParseTree p)
14688     {
14689         if(__ctfe)
14690         {
14691             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethodYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinitionYield")(p);
14692         }
14693         else
14694         {
14695             if(auto m = tuple(`MethodDefinitionYield`,p.end) in memo)
14696                 return *m;
14697             else
14698             {
14699                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethodYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinitionYield"), "MethodDefinitionYield")(p);
14700                 memo[tuple(`MethodDefinitionYield`,p.end)] = result;
14701                 return result;
14702             }
14703         }
14704     }
14705 
14706     static TParseTree MethodDefinitionYield(string s)
14707     {
14708         if(__ctfe)
14709         {
14710             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethodYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinitionYield")(TParseTree("", false,[], s));
14711         }
14712         else
14713         {
14714             memo = null;
14715             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, GeneratorMethodYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("get"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("("), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(")"), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("set"), Spacing), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, PropertySetParameterList, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, FunctionBody, Spacing)), Spacing)), Spacing)), "ES6.MethodDefinitionYield"), "MethodDefinitionYield")(TParseTree("", false,[], s));
14716         }
14717     }
14718     static string MethodDefinitionYield(GetName g)
14719     {
14720         return "ES6.MethodDefinitionYield";
14721     }
14722 
14723     static TParseTree PropertySetParameterList(TParseTree p)
14724     {
14725         if(__ctfe)
14726         {
14727             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), "ES6.PropertySetParameterList")(p);
14728         }
14729         else
14730         {
14731             if(auto m = tuple(`PropertySetParameterList`,p.end) in memo)
14732                 return *m;
14733             else
14734             {
14735                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), "ES6.PropertySetParameterList"), "PropertySetParameterList")(p);
14736                 memo[tuple(`PropertySetParameterList`,p.end)] = result;
14737                 return result;
14738             }
14739         }
14740     }
14741 
14742     static TParseTree PropertySetParameterList(string s)
14743     {
14744         if(__ctfe)
14745         {
14746             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), "ES6.PropertySetParameterList")(TParseTree("", false,[], s));
14747         }
14748         else
14749         {
14750             memo = null;
14751             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FormalParameter, Spacing), "ES6.PropertySetParameterList"), "PropertySetParameterList")(TParseTree("", false,[], s));
14752         }
14753     }
14754     static string PropertySetParameterList(GetName g)
14755     {
14756         return "ES6.PropertySetParameterList";
14757     }
14758 
14759     static TParseTree GeneratorMethod(TParseTree p)
14760     {
14761         if(__ctfe)
14762         {
14763             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethod")(p);
14764         }
14765         else
14766         {
14767             if(auto m = tuple(`GeneratorMethod`,p.end) in memo)
14768                 return *m;
14769             else
14770             {
14771                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethod"), "GeneratorMethod")(p);
14772                 memo[tuple(`GeneratorMethod`,p.end)] = result;
14773                 return result;
14774             }
14775         }
14776     }
14777 
14778     static TParseTree GeneratorMethod(string s)
14779     {
14780         if(__ctfe)
14781         {
14782             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethod")(TParseTree("", false,[], s));
14783         }
14784         else
14785         {
14786             memo = null;
14787             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyName, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethod"), "GeneratorMethod")(TParseTree("", false,[], s));
14788         }
14789     }
14790     static string GeneratorMethod(GetName g)
14791     {
14792         return "ES6.GeneratorMethod";
14793     }
14794 
14795     static TParseTree GeneratorMethodYield(TParseTree p)
14796     {
14797         if(__ctfe)
14798         {
14799             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethodYield")(p);
14800         }
14801         else
14802         {
14803             if(auto m = tuple(`GeneratorMethodYield`,p.end) in memo)
14804                 return *m;
14805             else
14806             {
14807                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethodYield"), "GeneratorMethodYield")(p);
14808                 memo[tuple(`GeneratorMethodYield`,p.end)] = result;
14809                 return result;
14810             }
14811         }
14812     }
14813 
14814     static TParseTree GeneratorMethodYield(string s)
14815     {
14816         if(__ctfe)
14817         {
14818             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethodYield")(TParseTree("", false,[], s));
14819         }
14820         else
14821         {
14822             memo = null;
14823             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, PropertyNameYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, StrictFormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorMethodYield"), "GeneratorMethodYield")(TParseTree("", false,[], s));
14824         }
14825     }
14826     static string GeneratorMethodYield(GetName g)
14827     {
14828         return "ES6.GeneratorMethodYield";
14829     }
14830 
14831     static TParseTree GeneratorDeclaration(TParseTree p)
14832     {
14833         if(__ctfe)
14834         {
14835             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclaration")(p);
14836         }
14837         else
14838         {
14839             if(auto m = tuple(`GeneratorDeclaration`,p.end) in memo)
14840                 return *m;
14841             else
14842             {
14843                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclaration"), "GeneratorDeclaration")(p);
14844                 memo[tuple(`GeneratorDeclaration`,p.end)] = result;
14845                 return result;
14846             }
14847         }
14848     }
14849 
14850     static TParseTree GeneratorDeclaration(string s)
14851     {
14852         if(__ctfe)
14853         {
14854             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclaration")(TParseTree("", false,[], s));
14855         }
14856         else
14857         {
14858             memo = null;
14859             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclaration"), "GeneratorDeclaration")(TParseTree("", false,[], s));
14860         }
14861     }
14862     static string GeneratorDeclaration(GetName g)
14863     {
14864         return "ES6.GeneratorDeclaration";
14865     }
14866 
14867     static TParseTree GeneratorDeclarationYield(TParseTree p)
14868     {
14869         if(__ctfe)
14870         {
14871             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYield")(p);
14872         }
14873         else
14874         {
14875             if(auto m = tuple(`GeneratorDeclarationYield`,p.end) in memo)
14876                 return *m;
14877             else
14878             {
14879                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYield"), "GeneratorDeclarationYield")(p);
14880                 memo[tuple(`GeneratorDeclarationYield`,p.end)] = result;
14881                 return result;
14882             }
14883         }
14884     }
14885 
14886     static TParseTree GeneratorDeclarationYield(string s)
14887     {
14888         if(__ctfe)
14889         {
14890             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYield")(TParseTree("", false,[], s));
14891         }
14892         else
14893         {
14894             memo = null;
14895             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYield"), "GeneratorDeclarationYield")(TParseTree("", false,[], s));
14896         }
14897     }
14898     static string GeneratorDeclarationYield(GetName g)
14899     {
14900         return "ES6.GeneratorDeclarationYield";
14901     }
14902 
14903     static TParseTree GeneratorDeclarationDefault(TParseTree p)
14904     {
14905         if(__ctfe)
14906         {
14907             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationDefault")(p);
14908         }
14909         else
14910         {
14911             if(auto m = tuple(`GeneratorDeclarationDefault`,p.end) in memo)
14912                 return *m;
14913             else
14914             {
14915                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationDefault"), "GeneratorDeclarationDefault")(p);
14916                 memo[tuple(`GeneratorDeclarationDefault`,p.end)] = result;
14917                 return result;
14918             }
14919         }
14920     }
14921 
14922     static TParseTree GeneratorDeclarationDefault(string s)
14923     {
14924         if(__ctfe)
14925         {
14926             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationDefault")(TParseTree("", false,[], s));
14927         }
14928         else
14929         {
14930             memo = null;
14931             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifier, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParameters, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationDefault"), "GeneratorDeclarationDefault")(TParseTree("", false,[], s));
14932         }
14933     }
14934     static string GeneratorDeclarationDefault(GetName g)
14935     {
14936         return "ES6.GeneratorDeclarationDefault";
14937     }
14938 
14939     static TParseTree GeneratorDeclarationYieldDefault(TParseTree p)
14940     {
14941         if(__ctfe)
14942         {
14943             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYieldDefault")(p);
14944         }
14945         else
14946         {
14947             if(auto m = tuple(`GeneratorDeclarationYieldDefault`,p.end) in memo)
14948                 return *m;
14949             else
14950             {
14951                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYieldDefault"), "GeneratorDeclarationYieldDefault")(p);
14952                 memo[tuple(`GeneratorDeclarationYieldDefault`,p.end)] = result;
14953                 return result;
14954             }
14955         }
14956     }
14957 
14958     static TParseTree GeneratorDeclarationYieldDefault(string s)
14959     {
14960         if(__ctfe)
14961         {
14962             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYieldDefault")(TParseTree("", false,[], s));
14963         }
14964         else
14965         {
14966             memo = null;
14967             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorDeclarationYieldDefault"), "GeneratorDeclarationYieldDefault")(TParseTree("", false,[], s));
14968         }
14969     }
14970     static string GeneratorDeclarationYieldDefault(GetName g)
14971     {
14972         return "ES6.GeneratorDeclarationYieldDefault";
14973     }
14974 
14975     static TParseTree GeneratorExpression(TParseTree p)
14976     {
14977         if(__ctfe)
14978         {
14979             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorExpression")(p);
14980         }
14981         else
14982         {
14983             if(auto m = tuple(`GeneratorExpression`,p.end) in memo)
14984                 return *m;
14985             else
14986             {
14987                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorExpression"), "GeneratorExpression")(p);
14988                 memo[tuple(`GeneratorExpression`,p.end)] = result;
14989                 return result;
14990             }
14991         }
14992     }
14993 
14994     static TParseTree GeneratorExpression(string s)
14995     {
14996         if(__ctfe)
14997         {
14998             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorExpression")(TParseTree("", false,[], s));
14999         }
15000         else
15001         {
15002             memo = null;
15003             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("function"), Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("*"), Spacing)), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, BindingIdentifierYield, Spacing)), pegged.peg.wrapAround!(Spacing, Parentheses!(pegged.peg.wrapAround!(Spacing, FormalParametersYield, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, GeneratorBody, Spacing)), Spacing)), "ES6.GeneratorExpression"), "GeneratorExpression")(TParseTree("", false,[], s));
15004         }
15005     }
15006     static string GeneratorExpression(GetName g)
15007     {
15008         return "ES6.GeneratorExpression";
15009     }
15010 
15011     static TParseTree GeneratorBody(TParseTree p)
15012     {
15013         if(__ctfe)
15014         {
15015             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionBodyYield, Spacing), "ES6.GeneratorBody")(p);
15016         }
15017         else
15018         {
15019             if(auto m = tuple(`GeneratorBody`,p.end) in memo)
15020                 return *m;
15021             else
15022             {
15023                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionBodyYield, Spacing), "ES6.GeneratorBody"), "GeneratorBody")(p);
15024                 memo[tuple(`GeneratorBody`,p.end)] = result;
15025                 return result;
15026             }
15027         }
15028     }
15029 
15030     static TParseTree GeneratorBody(string s)
15031     {
15032         if(__ctfe)
15033         {
15034             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionBodyYield, Spacing), "ES6.GeneratorBody")(TParseTree("", false,[], s));
15035         }
15036         else
15037         {
15038             memo = null;
15039             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, FunctionBodyYield, Spacing), "ES6.GeneratorBody"), "GeneratorBody")(TParseTree("", false,[], s));
15040         }
15041     }
15042     static string GeneratorBody(GetName g)
15043     {
15044         return "ES6.GeneratorBody";
15045     }
15046 
15047     static TParseTree YieldExpression(TParseTree p)
15048     {
15049         if(__ctfe)
15050         {
15051             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionYield), pegged.peg.literal!("yield")), "ES6.YieldExpression")(p);
15052         }
15053         else
15054         {
15055             if(auto m = tuple(`YieldExpression`,p.end) in memo)
15056                 return *m;
15057             else
15058             {
15059                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionYield), pegged.peg.literal!("yield")), "ES6.YieldExpression"), "YieldExpression")(p);
15060                 memo[tuple(`YieldExpression`,p.end)] = result;
15061                 return result;
15062             }
15063         }
15064     }
15065 
15066     static TParseTree YieldExpression(string s)
15067     {
15068         if(__ctfe)
15069         {
15070             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionYield), pegged.peg.literal!("yield")), "ES6.YieldExpression")(TParseTree("", false,[], s));
15071         }
15072         else
15073         {
15074             memo = null;
15075             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionYield), pegged.peg.literal!("yield")), "ES6.YieldExpression"), "YieldExpression")(TParseTree("", false,[], s));
15076         }
15077     }
15078     static string YieldExpression(GetName g)
15079     {
15080         return "ES6.YieldExpression";
15081     }
15082 
15083     static TParseTree YieldExpressionIn(TParseTree p)
15084     {
15085         if(__ctfe)
15086         {
15087             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionInYield), pegged.peg.literal!("yield")), "ES6.YieldExpressionIn")(p);
15088         }
15089         else
15090         {
15091             if(auto m = tuple(`YieldExpressionIn`,p.end) in memo)
15092                 return *m;
15093             else
15094             {
15095                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionInYield), pegged.peg.literal!("yield")), "ES6.YieldExpressionIn"), "YieldExpressionIn")(p);
15096                 memo[tuple(`YieldExpressionIn`,p.end)] = result;
15097                 return result;
15098             }
15099         }
15100     }
15101 
15102     static TParseTree YieldExpressionIn(string s)
15103     {
15104         if(__ctfe)
15105         {
15106             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionInYield), pegged.peg.literal!("yield")), "ES6.YieldExpressionIn")(TParseTree("", false,[], s));
15107         }
15108         else
15109         {
15110             memo = null;
15111             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("yield"), Spaces, pegged.peg.option!(pegged.peg.literal!("*")), AssignmentExpressionInYield), pegged.peg.literal!("yield")), "ES6.YieldExpressionIn"), "YieldExpressionIn")(TParseTree("", false,[], s));
15112         }
15113     }
15114     static string YieldExpressionIn(GetName g)
15115     {
15116         return "ES6.YieldExpressionIn";
15117     }
15118 
15119     static TParseTree ClassDeclaration(TParseTree p)
15120     {
15121         if(__ctfe)
15122         {
15123             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifier, Spaces, ClassTail), "ES6.ClassDeclaration")(p);
15124         }
15125         else
15126         {
15127             if(auto m = tuple(`ClassDeclaration`,p.end) in memo)
15128                 return *m;
15129             else
15130             {
15131                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifier, Spaces, ClassTail), "ES6.ClassDeclaration"), "ClassDeclaration")(p);
15132                 memo[tuple(`ClassDeclaration`,p.end)] = result;
15133                 return result;
15134             }
15135         }
15136     }
15137 
15138     static TParseTree ClassDeclaration(string s)
15139     {
15140         if(__ctfe)
15141         {
15142             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifier, Spaces, ClassTail), "ES6.ClassDeclaration")(TParseTree("", false,[], s));
15143         }
15144         else
15145         {
15146             memo = null;
15147             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifier, Spaces, ClassTail), "ES6.ClassDeclaration"), "ClassDeclaration")(TParseTree("", false,[], s));
15148         }
15149     }
15150     static string ClassDeclaration(GetName g)
15151     {
15152         return "ES6.ClassDeclaration";
15153     }
15154 
15155     static TParseTree ClassDeclarationYield(TParseTree p)
15156     {
15157         if(__ctfe)
15158         {
15159             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifierYield, Spaces, ClassTailYield), "ES6.ClassDeclarationYield")(p);
15160         }
15161         else
15162         {
15163             if(auto m = tuple(`ClassDeclarationYield`,p.end) in memo)
15164                 return *m;
15165             else
15166             {
15167                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifierYield, Spaces, ClassTailYield), "ES6.ClassDeclarationYield"), "ClassDeclarationYield")(p);
15168                 memo[tuple(`ClassDeclarationYield`,p.end)] = result;
15169                 return result;
15170             }
15171         }
15172     }
15173 
15174     static TParseTree ClassDeclarationYield(string s)
15175     {
15176         if(__ctfe)
15177         {
15178             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifierYield, Spaces, ClassTailYield), "ES6.ClassDeclarationYield")(TParseTree("", false,[], s));
15179         }
15180         else
15181         {
15182             memo = null;
15183             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, BindingIdentifierYield, Spaces, ClassTailYield), "ES6.ClassDeclarationYield"), "ClassDeclarationYield")(TParseTree("", false,[], s));
15184         }
15185     }
15186     static string ClassDeclarationYield(GetName g)
15187     {
15188         return "ES6.ClassDeclarationYield";
15189     }
15190 
15191     static TParseTree ClassDeclarationDefault(TParseTree p)
15192     {
15193         if(__ctfe)
15194         {
15195             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassDeclarationDefault")(p);
15196         }
15197         else
15198         {
15199             if(auto m = tuple(`ClassDeclarationDefault`,p.end) in memo)
15200                 return *m;
15201             else
15202             {
15203                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassDeclarationDefault"), "ClassDeclarationDefault")(p);
15204                 memo[tuple(`ClassDeclarationDefault`,p.end)] = result;
15205                 return result;
15206             }
15207         }
15208     }
15209 
15210     static TParseTree ClassDeclarationDefault(string s)
15211     {
15212         if(__ctfe)
15213         {
15214             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassDeclarationDefault")(TParseTree("", false,[], s));
15215         }
15216         else
15217         {
15218             memo = null;
15219             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassDeclarationDefault"), "ClassDeclarationDefault")(TParseTree("", false,[], s));
15220         }
15221     }
15222     static string ClassDeclarationDefault(GetName g)
15223     {
15224         return "ES6.ClassDeclarationDefault";
15225     }
15226 
15227     static TParseTree ClassDeclarationYieldDefault(TParseTree p)
15228     {
15229         if(__ctfe)
15230         {
15231             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassDeclarationYieldDefault")(p);
15232         }
15233         else
15234         {
15235             if(auto m = tuple(`ClassDeclarationYieldDefault`,p.end) in memo)
15236                 return *m;
15237             else
15238             {
15239                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassDeclarationYieldDefault"), "ClassDeclarationYieldDefault")(p);
15240                 memo[tuple(`ClassDeclarationYieldDefault`,p.end)] = result;
15241                 return result;
15242             }
15243         }
15244     }
15245 
15246     static TParseTree ClassDeclarationYieldDefault(string s)
15247     {
15248         if(__ctfe)
15249         {
15250             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassDeclarationYieldDefault")(TParseTree("", false,[], s));
15251         }
15252         else
15253         {
15254             memo = null;
15255             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassDeclarationYieldDefault"), "ClassDeclarationYieldDefault")(TParseTree("", false,[], s));
15256         }
15257     }
15258     static string ClassDeclarationYieldDefault(GetName g)
15259     {
15260         return "ES6.ClassDeclarationYieldDefault";
15261     }
15262 
15263     static TParseTree ClassExpression(TParseTree p)
15264     {
15265         if(__ctfe)
15266         {
15267             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassExpression")(p);
15268         }
15269         else
15270         {
15271             if(auto m = tuple(`ClassExpression`,p.end) in memo)
15272                 return *m;
15273             else
15274             {
15275                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassExpression"), "ClassExpression")(p);
15276                 memo[tuple(`ClassExpression`,p.end)] = result;
15277                 return result;
15278             }
15279         }
15280     }
15281 
15282     static TParseTree ClassExpression(string s)
15283     {
15284         if(__ctfe)
15285         {
15286             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassExpression")(TParseTree("", false,[], s));
15287         }
15288         else
15289         {
15290             memo = null;
15291             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifier), Spaces, ClassTail), "ES6.ClassExpression"), "ClassExpression")(TParseTree("", false,[], s));
15292         }
15293     }
15294     static string ClassExpression(GetName g)
15295     {
15296         return "ES6.ClassExpression";
15297     }
15298 
15299     static TParseTree ClassExpressionYield(TParseTree p)
15300     {
15301         if(__ctfe)
15302         {
15303             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassExpressionYield")(p);
15304         }
15305         else
15306         {
15307             if(auto m = tuple(`ClassExpressionYield`,p.end) in memo)
15308                 return *m;
15309             else
15310             {
15311                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassExpressionYield"), "ClassExpressionYield")(p);
15312                 memo[tuple(`ClassExpressionYield`,p.end)] = result;
15313                 return result;
15314             }
15315         }
15316     }
15317 
15318     static TParseTree ClassExpressionYield(string s)
15319     {
15320         if(__ctfe)
15321         {
15322             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassExpressionYield")(TParseTree("", false,[], s));
15323         }
15324         else
15325         {
15326             memo = null;
15327             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("class")), pegged.peg.negLookahead!(pegged.peg.or!(IdentifierStart, IdentifierPart)), Spaces, pegged.peg.option!(BindingIdentifierYield), Spaces, ClassTailYield), "ES6.ClassExpressionYield"), "ClassExpressionYield")(TParseTree("", false,[], s));
15328         }
15329     }
15330     static string ClassExpressionYield(GetName g)
15331     {
15332         return "ES6.ClassExpressionYield";
15333     }
15334 
15335     static TParseTree ClassTail(TParseTree p)
15336     {
15337         if(__ctfe)
15338         {
15339             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritage, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBody, Spacing))), Spacing)), "ES6.ClassTail")(p);
15340         }
15341         else
15342         {
15343             if(auto m = tuple(`ClassTail`,p.end) in memo)
15344                 return *m;
15345             else
15346             {
15347                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritage, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBody, Spacing))), Spacing)), "ES6.ClassTail"), "ClassTail")(p);
15348                 memo[tuple(`ClassTail`,p.end)] = result;
15349                 return result;
15350             }
15351         }
15352     }
15353 
15354     static TParseTree ClassTail(string s)
15355     {
15356         if(__ctfe)
15357         {
15358             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritage, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBody, Spacing))), Spacing)), "ES6.ClassTail")(TParseTree("", false,[], s));
15359         }
15360         else
15361         {
15362             memo = null;
15363             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritage, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBody, Spacing))), Spacing)), "ES6.ClassTail"), "ClassTail")(TParseTree("", false,[], s));
15364         }
15365     }
15366     static string ClassTail(GetName g)
15367     {
15368         return "ES6.ClassTail";
15369     }
15370 
15371     static TParseTree ClassTailYield(TParseTree p)
15372     {
15373         if(__ctfe)
15374         {
15375             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritageYield, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBodyYield, Spacing))), Spacing)), "ES6.ClassTailYield")(p);
15376         }
15377         else
15378         {
15379             if(auto m = tuple(`ClassTailYield`,p.end) in memo)
15380                 return *m;
15381             else
15382             {
15383                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritageYield, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBodyYield, Spacing))), Spacing)), "ES6.ClassTailYield"), "ClassTailYield")(p);
15384                 memo[tuple(`ClassTailYield`,p.end)] = result;
15385                 return result;
15386             }
15387         }
15388     }
15389 
15390     static TParseTree ClassTailYield(string s)
15391     {
15392         if(__ctfe)
15393         {
15394             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritageYield, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBodyYield, Spacing))), Spacing)), "ES6.ClassTailYield")(TParseTree("", false,[], s));
15395         }
15396         else
15397         {
15398             memo = null;
15399             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassHeritageYield, Spacing)), pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.option!(pegged.peg.wrapAround!(Spacing, ClassBodyYield, Spacing))), Spacing)), "ES6.ClassTailYield"), "ClassTailYield")(TParseTree("", false,[], s));
15400         }
15401     }
15402     static string ClassTailYield(GetName g)
15403     {
15404         return "ES6.ClassTailYield";
15405     }
15406 
15407     static TParseTree ClassHeritage(TParseTree p)
15408     {
15409         if(__ctfe)
15410         {
15411             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing)), "ES6.ClassHeritage")(p);
15412         }
15413         else
15414         {
15415             if(auto m = tuple(`ClassHeritage`,p.end) in memo)
15416                 return *m;
15417             else
15418             {
15419                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing)), "ES6.ClassHeritage"), "ClassHeritage")(p);
15420                 memo[tuple(`ClassHeritage`,p.end)] = result;
15421                 return result;
15422             }
15423         }
15424     }
15425 
15426     static TParseTree ClassHeritage(string s)
15427     {
15428         if(__ctfe)
15429         {
15430             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing)), "ES6.ClassHeritage")(TParseTree("", false,[], s));
15431         }
15432         else
15433         {
15434             memo = null;
15435             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpression, Spacing)), "ES6.ClassHeritage"), "ClassHeritage")(TParseTree("", false,[], s));
15436         }
15437     }
15438     static string ClassHeritage(GetName g)
15439     {
15440         return "ES6.ClassHeritage";
15441     }
15442 
15443     static TParseTree ClassHeritageYield(TParseTree p)
15444     {
15445         if(__ctfe)
15446         {
15447             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing)), "ES6.ClassHeritageYield")(p);
15448         }
15449         else
15450         {
15451             if(auto m = tuple(`ClassHeritageYield`,p.end) in memo)
15452                 return *m;
15453             else
15454             {
15455                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing)), "ES6.ClassHeritageYield"), "ClassHeritageYield")(p);
15456                 memo[tuple(`ClassHeritageYield`,p.end)] = result;
15457                 return result;
15458             }
15459         }
15460     }
15461 
15462     static TParseTree ClassHeritageYield(string s)
15463     {
15464         if(__ctfe)
15465         {
15466             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing)), "ES6.ClassHeritageYield")(TParseTree("", false,[], s));
15467         }
15468         else
15469         {
15470             memo = null;
15471             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("extends"), Spacing)), pegged.peg.wrapAround!(Spacing, LeftHandSideExpressionYield, Spacing)), "ES6.ClassHeritageYield"), "ClassHeritageYield")(TParseTree("", false,[], s));
15472         }
15473     }
15474     static string ClassHeritageYield(GetName g)
15475     {
15476         return "ES6.ClassHeritageYield";
15477     }
15478 
15479     static TParseTree ClassBody(TParseTree p)
15480     {
15481         if(__ctfe)
15482         {
15483             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementList, Spacing), "ES6.ClassBody")(p);
15484         }
15485         else
15486         {
15487             if(auto m = tuple(`ClassBody`,p.end) in memo)
15488                 return *m;
15489             else
15490             {
15491                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementList, Spacing), "ES6.ClassBody"), "ClassBody")(p);
15492                 memo[tuple(`ClassBody`,p.end)] = result;
15493                 return result;
15494             }
15495         }
15496     }
15497 
15498     static TParseTree ClassBody(string s)
15499     {
15500         if(__ctfe)
15501         {
15502             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementList, Spacing), "ES6.ClassBody")(TParseTree("", false,[], s));
15503         }
15504         else
15505         {
15506             memo = null;
15507             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementList, Spacing), "ES6.ClassBody"), "ClassBody")(TParseTree("", false,[], s));
15508         }
15509     }
15510     static string ClassBody(GetName g)
15511     {
15512         return "ES6.ClassBody";
15513     }
15514 
15515     static TParseTree ClassBodyYield(TParseTree p)
15516     {
15517         if(__ctfe)
15518         {
15519             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementListYield, Spacing), "ES6.ClassBodyYield")(p);
15520         }
15521         else
15522         {
15523             if(auto m = tuple(`ClassBodyYield`,p.end) in memo)
15524                 return *m;
15525             else
15526             {
15527                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementListYield, Spacing), "ES6.ClassBodyYield"), "ClassBodyYield")(p);
15528                 memo[tuple(`ClassBodyYield`,p.end)] = result;
15529                 return result;
15530             }
15531         }
15532     }
15533 
15534     static TParseTree ClassBodyYield(string s)
15535     {
15536         if(__ctfe)
15537         {
15538             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementListYield, Spacing), "ES6.ClassBodyYield")(TParseTree("", false,[], s));
15539         }
15540         else
15541         {
15542             memo = null;
15543             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, ClassElementListYield, Spacing), "ES6.ClassBodyYield"), "ClassBodyYield")(TParseTree("", false,[], s));
15544         }
15545     }
15546     static string ClassBodyYield(GetName g)
15547     {
15548         return "ES6.ClassBodyYield";
15549     }
15550 
15551     static TParseTree ClassElementList(TParseTree p)
15552     {
15553         if(__ctfe)
15554         {
15555             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElement, Spacing)), "ES6.ClassElementList")(p);
15556         }
15557         else
15558         {
15559             if(auto m = tuple(`ClassElementList`,p.end) in memo)
15560                 return *m;
15561             else
15562             {
15563                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElement, Spacing)), "ES6.ClassElementList"), "ClassElementList")(p);
15564                 memo[tuple(`ClassElementList`,p.end)] = result;
15565                 return result;
15566             }
15567         }
15568     }
15569 
15570     static TParseTree ClassElementList(string s)
15571     {
15572         if(__ctfe)
15573         {
15574             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElement, Spacing)), "ES6.ClassElementList")(TParseTree("", false,[], s));
15575         }
15576         else
15577         {
15578             memo = null;
15579             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElement, Spacing)), "ES6.ClassElementList"), "ClassElementList")(TParseTree("", false,[], s));
15580         }
15581     }
15582     static string ClassElementList(GetName g)
15583     {
15584         return "ES6.ClassElementList";
15585     }
15586 
15587     static TParseTree ClassElementListYield(TParseTree p)
15588     {
15589         if(__ctfe)
15590         {
15591             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElementYield, Spacing)), "ES6.ClassElementListYield")(p);
15592         }
15593         else
15594         {
15595             if(auto m = tuple(`ClassElementListYield`,p.end) in memo)
15596                 return *m;
15597             else
15598             {
15599                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElementYield, Spacing)), "ES6.ClassElementListYield"), "ClassElementListYield")(p);
15600                 memo[tuple(`ClassElementListYield`,p.end)] = result;
15601                 return result;
15602             }
15603         }
15604     }
15605 
15606     static TParseTree ClassElementListYield(string s)
15607     {
15608         if(__ctfe)
15609         {
15610             return         pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElementYield, Spacing)), "ES6.ClassElementListYield")(TParseTree("", false,[], s));
15611         }
15612         else
15613         {
15614             memo = null;
15615             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, ClassElementYield, Spacing)), "ES6.ClassElementListYield"), "ClassElementListYield")(TParseTree("", false,[], s));
15616         }
15617     }
15618     static string ClassElementListYield(GetName g)
15619     {
15620         return "ES6.ClassElementListYield";
15621     }
15622 
15623     static TParseTree ClassElement(TParseTree p)
15624     {
15625         if(__ctfe)
15626         {
15627             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), "ES6.ClassElement")(p);
15628         }
15629         else
15630         {
15631             if(auto m = tuple(`ClassElement`,p.end) in memo)
15632                 return *m;
15633             else
15634             {
15635                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), "ES6.ClassElement"), "ClassElement")(p);
15636                 memo[tuple(`ClassElement`,p.end)] = result;
15637                 return result;
15638             }
15639         }
15640     }
15641 
15642     static TParseTree ClassElement(string s)
15643     {
15644         if(__ctfe)
15645         {
15646             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), "ES6.ClassElement")(TParseTree("", false,[], s));
15647         }
15648         else
15649         {
15650             memo = null;
15651             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinition, Spacing)), "ES6.ClassElement"), "ClassElement")(TParseTree("", false,[], s));
15652         }
15653     }
15654     static string ClassElement(GetName g)
15655     {
15656         return "ES6.ClassElement";
15657     }
15658 
15659     static TParseTree ClassElementYield(TParseTree p)
15660     {
15661         if(__ctfe)
15662         {
15663             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), "ES6.ClassElementYield")(p);
15664         }
15665         else
15666         {
15667             if(auto m = tuple(`ClassElementYield`,p.end) in memo)
15668                 return *m;
15669             else
15670             {
15671                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), "ES6.ClassElementYield"), "ClassElementYield")(p);
15672                 memo[tuple(`ClassElementYield`,p.end)] = result;
15673                 return result;
15674             }
15675         }
15676     }
15677 
15678     static TParseTree ClassElementYield(string s)
15679     {
15680         if(__ctfe)
15681         {
15682             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), "ES6.ClassElementYield")(TParseTree("", false,[], s));
15683         }
15684         else
15685         {
15686             memo = null;
15687             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("static"), Spacing), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), Spacing), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(";"), Spacing)), pegged.peg.wrapAround!(Spacing, MethodDefinitionYield, Spacing)), "ES6.ClassElementYield"), "ClassElementYield")(TParseTree("", false,[], s));
15688         }
15689     }
15690     static string ClassElementYield(GetName g)
15691     {
15692         return "ES6.ClassElementYield";
15693     }
15694 
15695     static TParseTree JSXElement(TParseTree p)
15696     {
15697         if(__ctfe)
15698         {
15699             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, JSXAttributeSet, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, JSXContent, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("</"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing)), Spacing)), Spacing)), "ES6.JSXElement")(p);
15700         }
15701         else
15702         {
15703             if(auto m = tuple(`JSXElement`,p.end) in memo)
15704                 return *m;
15705             else
15706             {
15707                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, JSXAttributeSet, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, JSXContent, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("</"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing)), Spacing)), Spacing)), "ES6.JSXElement"), "JSXElement")(p);
15708                 memo[tuple(`JSXElement`,p.end)] = result;
15709                 return result;
15710             }
15711         }
15712     }
15713 
15714     static TParseTree JSXElement(string s)
15715     {
15716         if(__ctfe)
15717         {
15718             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, JSXAttributeSet, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, JSXContent, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("</"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing)), Spacing)), Spacing)), "ES6.JSXElement")(TParseTree("", false,[], s));
15719         }
15720         else
15721         {
15722             memo = null;
15723             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("<"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, JSXAttributeSet, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("/>"), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing), pegged.peg.wrapAround!(Spacing, JSXContent, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("</"), Spacing), pegged.peg.wrapAround!(Spacing, JSXTag, Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.literal!(">"), Spacing)), Spacing)), Spacing)), "ES6.JSXElement"), "JSXElement")(TParseTree("", false,[], s));
15724         }
15725     }
15726     static string JSXElement(GetName g)
15727     {
15728         return "ES6.JSXElement";
15729     }
15730 
15731     static TParseTree JSXAttributeSet(TParseTree p)
15732     {
15733         if(__ctfe)
15734         {
15735             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, JSXAttribute, Spacing)), "ES6.JSXAttributeSet")(p);
15736         }
15737         else
15738         {
15739             if(auto m = tuple(`JSXAttributeSet`,p.end) in memo)
15740                 return *m;
15741             else
15742             {
15743                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, JSXAttribute, Spacing)), "ES6.JSXAttributeSet"), "JSXAttributeSet")(p);
15744                 memo[tuple(`JSXAttributeSet`,p.end)] = result;
15745                 return result;
15746             }
15747         }
15748     }
15749 
15750     static TParseTree JSXAttributeSet(string s)
15751     {
15752         if(__ctfe)
15753         {
15754             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, JSXAttribute, Spacing)), "ES6.JSXAttributeSet")(TParseTree("", false,[], s));
15755         }
15756         else
15757         {
15758             memo = null;
15759             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, JSXAttribute, Spacing)), "ES6.JSXAttributeSet"), "JSXAttributeSet")(TParseTree("", false,[], s));
15760         }
15761     }
15762     static string JSXAttributeSet(GetName g)
15763     {
15764         return "ES6.JSXAttributeSet";
15765     }
15766 
15767     static TParseTree JSXAttribute(TParseTree p)
15768     {
15769         if(__ctfe)
15770         {
15771             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, JSXKey, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing), pegged.peg.wrapAround!(Spacing, JSXValue, Spacing)), Spacing))), Spacing)), "ES6.JSXAttribute")(p);
15772         }
15773         else
15774         {
15775             if(auto m = tuple(`JSXAttribute`,p.end) in memo)
15776                 return *m;
15777             else
15778             {
15779                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, JSXKey, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing), pegged.peg.wrapAround!(Spacing, JSXValue, Spacing)), Spacing))), Spacing)), "ES6.JSXAttribute"), "JSXAttribute")(p);
15780                 memo[tuple(`JSXAttribute`,p.end)] = result;
15781                 return result;
15782             }
15783         }
15784     }
15785 
15786     static TParseTree JSXAttribute(string s)
15787     {
15788         if(__ctfe)
15789         {
15790             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, JSXKey, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing), pegged.peg.wrapAround!(Spacing, JSXValue, Spacing)), Spacing))), Spacing)), "ES6.JSXAttribute")(TParseTree("", false,[], s));
15791         }
15792         else
15793         {
15794             memo = null;
15795             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, SpreadElement, Spacing)), Spacing), pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, JSXKey, Spacing), pegged.peg.option!(pegged.peg.wrapAround!(Spacing, pegged.peg.and!(pegged.peg.wrapAround!(Spacing, pegged.peg.literal!("="), Spacing), pegged.peg.wrapAround!(Spacing, JSXValue, Spacing)), Spacing))), Spacing)), "ES6.JSXAttribute"), "JSXAttribute")(TParseTree("", false,[], s));
15796         }
15797     }
15798     static string JSXAttribute(GetName g)
15799     {
15800         return "ES6.JSXAttribute";
15801     }
15802 
15803     static TParseTree JSXKey(TParseTree p)
15804     {
15805         if(__ctfe)
15806         {
15807             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("=", "/>", ">")), pegged.peg.any))), "ES6.JSXKey")(p);
15808         }
15809         else
15810         {
15811             if(auto m = tuple(`JSXKey`,p.end) in memo)
15812                 return *m;
15813             else
15814             {
15815                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("=", "/>", ">")), pegged.peg.any))), "ES6.JSXKey"), "JSXKey")(p);
15816                 memo[tuple(`JSXKey`,p.end)] = result;
15817                 return result;
15818             }
15819         }
15820     }
15821 
15822     static TParseTree JSXKey(string s)
15823     {
15824         if(__ctfe)
15825         {
15826             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("=", "/>", ">")), pegged.peg.any))), "ES6.JSXKey")(TParseTree("", false,[], s));
15827         }
15828         else
15829         {
15830             memo = null;
15831             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.keywords!("=", "/>", ">")), pegged.peg.any))), "ES6.JSXKey"), "JSXKey")(TParseTree("", false,[], s));
15832         }
15833     }
15834     static string JSXKey(GetName g)
15835     {
15836         return "ES6.JSXKey";
15837     }
15838 
15839     static TParseTree JSXInlineJS(TParseTree p)
15840     {
15841         if(__ctfe)
15842         {
15843             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), "ES6.JSXInlineJS")(p);
15844         }
15845         else
15846         {
15847             if(auto m = tuple(`JSXInlineJS`,p.end) in memo)
15848                 return *m;
15849             else
15850             {
15851                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), "ES6.JSXInlineJS"), "JSXInlineJS")(p);
15852                 memo[tuple(`JSXInlineJS`,p.end)] = result;
15853                 return result;
15854             }
15855         }
15856     }
15857 
15858     static TParseTree JSXInlineJS(string s)
15859     {
15860         if(__ctfe)
15861         {
15862             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), "ES6.JSXInlineJS")(TParseTree("", false,[], s));
15863         }
15864         else
15865         {
15866             memo = null;
15867             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, ArrowFunction, Spacing), pegged.peg.wrapAround!(Spacing, ConditionalExpression, Spacing)), "ES6.JSXInlineJS"), "JSXInlineJS")(TParseTree("", false,[], s));
15868         }
15869     }
15870     static string JSXInlineJS(GetName g)
15871     {
15872         return "ES6.JSXInlineJS";
15873     }
15874 
15875     static TParseTree JSXValue(TParseTree p)
15876     {
15877         if(__ctfe)
15878         {
15879             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing)), "ES6.JSXValue")(p);
15880         }
15881         else
15882         {
15883             if(auto m = tuple(`JSXValue`,p.end) in memo)
15884                 return *m;
15885             else
15886             {
15887                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing)), "ES6.JSXValue"), "JSXValue")(p);
15888                 memo[tuple(`JSXValue`,p.end)] = result;
15889                 return result;
15890             }
15891         }
15892     }
15893 
15894     static TParseTree JSXValue(string s)
15895     {
15896         if(__ctfe)
15897         {
15898             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing)), "ES6.JSXValue")(TParseTree("", false,[], s));
15899         }
15900         else
15901         {
15902             memo = null;
15903             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.wrapAround!(Spacing, StringLiteral, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing)), "ES6.JSXValue"), "JSXValue")(TParseTree("", false,[], s));
15904         }
15905     }
15906     static string JSXValue(GetName g)
15907     {
15908         return "ES6.JSXValue";
15909     }
15910 
15911     static TParseTree JSXCodeBlock(TParseTree p)
15912     {
15913         if(__ctfe)
15914         {
15915             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing)), Spacing), "ES6.JSXCodeBlock")(p);
15916         }
15917         else
15918         {
15919             if(auto m = tuple(`JSXCodeBlock`,p.end) in memo)
15920                 return *m;
15921             else
15922             {
15923                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing)), Spacing), "ES6.JSXCodeBlock"), "JSXCodeBlock")(p);
15924                 memo[tuple(`JSXCodeBlock`,p.end)] = result;
15925                 return result;
15926             }
15927         }
15928     }
15929 
15930     static TParseTree JSXCodeBlock(string s)
15931     {
15932         if(__ctfe)
15933         {
15934             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing)), Spacing), "ES6.JSXCodeBlock")(TParseTree("", false,[], s));
15935         }
15936         else
15937         {
15938             memo = null;
15939             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing)), Spacing), "ES6.JSXCodeBlock"), "JSXCodeBlock")(TParseTree("", false,[], s));
15940         }
15941     }
15942     static string JSXCodeBlock(GetName g)
15943     {
15944         return "ES6.JSXCodeBlock";
15945     }
15946 
15947     static TParseTree JSXJavaScriptValue(TParseTree p)
15948     {
15949         if(__ctfe)
15950         {
15951             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing)), pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing))), Spacing), "ES6.JSXJavaScriptValue")(p);
15952         }
15953         else
15954         {
15955             if(auto m = tuple(`JSXJavaScriptValue`,p.end) in memo)
15956                 return *m;
15957             else
15958             {
15959                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing)), pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing))), Spacing), "ES6.JSXJavaScriptValue"), "JSXJavaScriptValue")(p);
15960                 memo[tuple(`JSXJavaScriptValue`,p.end)] = result;
15961                 return result;
15962             }
15963         }
15964     }
15965 
15966     static TParseTree JSXJavaScriptValue(string s)
15967     {
15968         if(__ctfe)
15969         {
15970             return         pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing)), pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing))), Spacing), "ES6.JSXJavaScriptValue")(TParseTree("", false,[], s));
15971         }
15972         else
15973         {
15974             memo = null;
15975             return hooked!(pegged.peg.defined!(pegged.peg.wrapAround!(Spacing, CurlyBrackets!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing)), pegged.peg.wrapAround!(Spacing, JSXInlineJS, Spacing))), Spacing), "ES6.JSXJavaScriptValue"), "JSXJavaScriptValue")(TParseTree("", false,[], s));
15976         }
15977     }
15978     static string JSXJavaScriptValue(GetName g)
15979     {
15980         return "ES6.JSXJavaScriptValue";
15981     }
15982 
15983     static TParseTree JSXTag(TParseTree p)
15984     {
15985         if(__ctfe)
15986         {
15987             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z')), pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('0', '9'))))), "ES6.JSXTag")(p);
15988         }
15989         else
15990         {
15991             if(auto m = tuple(`JSXTag`,p.end) in memo)
15992                 return *m;
15993             else
15994             {
15995                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z')), pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('0', '9'))))), "ES6.JSXTag"), "JSXTag")(p);
15996                 memo[tuple(`JSXTag`,p.end)] = result;
15997                 return result;
15998             }
15999         }
16000     }
16001 
16002     static TParseTree JSXTag(string s)
16003     {
16004         if(__ctfe)
16005         {
16006             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z')), pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('0', '9'))))), "ES6.JSXTag")(TParseTree("", false,[], s));
16007         }
16008         else
16009         {
16010             memo = null;
16011             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.and!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z')), pegged.peg.zeroOrMore!(pegged.peg.or!(pegged.peg.charRange!('a', 'z'), pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('0', '9'))))), "ES6.JSXTag"), "JSXTag")(TParseTree("", false,[], s));
16012         }
16013     }
16014     static string JSXTag(GetName g)
16015     {
16016         return "ES6.JSXTag";
16017     }
16018 
16019     static TParseTree JSXContent(TParseTree p)
16020     {
16021         if(__ctfe)
16022         {
16023             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing), pegged.peg.wrapAround!(Spacing, JSXContentText, Spacing)), Spacing)), "ES6.JSXContent")(p);
16024         }
16025         else
16026         {
16027             if(auto m = tuple(`JSXContent`,p.end) in memo)
16028                 return *m;
16029             else
16030             {
16031                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing), pegged.peg.wrapAround!(Spacing, JSXContentText, Spacing)), Spacing)), "ES6.JSXContent"), "JSXContent")(p);
16032                 memo[tuple(`JSXContent`,p.end)] = result;
16033                 return result;
16034             }
16035         }
16036     }
16037 
16038     static TParseTree JSXContent(string s)
16039     {
16040         if(__ctfe)
16041         {
16042             return         pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing), pegged.peg.wrapAround!(Spacing, JSXContentText, Spacing)), Spacing)), "ES6.JSXContent")(TParseTree("", false,[], s));
16043         }
16044         else
16045         {
16046             memo = null;
16047             return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.wrapAround!(Spacing, pegged.peg.or!(pegged.peg.wrapAround!(Spacing, JSXElement, Spacing), pegged.peg.wrapAround!(Spacing, JSXCodeBlock, Spacing), pegged.peg.wrapAround!(Spacing, JSXContentText, Spacing)), Spacing)), "ES6.JSXContent"), "JSXContent")(TParseTree("", false,[], s));
16048         }
16049     }
16050     static string JSXContent(GetName g)
16051     {
16052         return "ES6.JSXContent";
16053     }
16054 
16055     static TParseTree JSXContentText(TParseTree p)
16056     {
16057         if(__ctfe)
16058         {
16059             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("</")), SourceCharacter))), "ES6.JSXContentText")(p);
16060         }
16061         else
16062         {
16063             if(auto m = tuple(`JSXContentText`,p.end) in memo)
16064                 return *m;
16065             else
16066             {
16067                 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("</")), SourceCharacter))), "ES6.JSXContentText"), "JSXContentText")(p);
16068                 memo[tuple(`JSXContentText`,p.end)] = result;
16069                 return result;
16070             }
16071         }
16072     }
16073 
16074     static TParseTree JSXContentText(string s)
16075     {
16076         if(__ctfe)
16077         {
16078             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("</")), SourceCharacter))), "ES6.JSXContentText")(TParseTree("", false,[], s));
16079         }
16080         else
16081         {
16082             memo = null;
16083             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("</")), SourceCharacter))), "ES6.JSXContentText"), "JSXContentText")(TParseTree("", false,[], s));
16084         }
16085     }
16086     static string JSXContentText(GetName g)
16087     {
16088         return "ES6.JSXContentText";
16089     }
16090 
16091     static TParseTree opCall(TParseTree p)
16092     {
16093         TParseTree result = decimateTree(Module(p));
16094         result.children = [result];
16095         result.name = "ES6";
16096         return result;
16097     }
16098 
16099     static TParseTree opCall(string input)
16100     {
16101         if(__ctfe)
16102         {
16103             return ES6(TParseTree(``, false, [], input, 0, 0));
16104         }
16105         else
16106         {
16107             memo = null;
16108             return ES6(TParseTree(``, false, [], input, 0, 0));
16109         }
16110     }
16111     static string opCall(GetName g)
16112     {
16113         return "ES6";
16114     }
16115 
16116     }
16117 }
16118 
16119 alias GenericES6!(ParseTree).ES6 ES6;
16120