type github.com/evanw/esbuild/internal/js_ast.Expr

906 uses

	github.com/evanw/esbuild/internal/js_ast (current package)
		js_ast.go#L271: 	TSDecorators []Expr
		js_ast.go#L272: 	Key          Expr
		js_ast.go#L275: 	Value *Expr
		js_ast.go#L286: 	Initializer *Expr
		js_ast.go#L298: 	Key          Expr
		js_ast.go#L300: 	DefaultValue *Expr
		js_ast.go#L304: 	TSDecorators []Expr
		js_ast.go#L306: 	Default      *Expr
		js_ast.go#L335: 	TSDecorators []Expr
		js_ast.go#L337: 	Extends      *Expr
		js_ast.go#L344: 	DefaultValue *Expr
		js_ast.go#L376: type Expr struct {
		js_ast.go#L386: 	Items            []Expr
		js_ast.go#L394: 	Value Expr
		js_ast.go#L398: 	Left  Expr
		js_ast.go#L399: 	Right Expr
		js_ast.go#L414: 	Target Expr
		js_ast.go#L415: 	Args   []Expr
		js_ast.go#L441: 	Target        Expr
		js_ast.go#L442: 	Args          []Expr
		js_ast.go#L464: 	Target        Expr
		js_ast.go#L486: 	Target        Expr
		js_ast.go#L487: 	Index         Expr
		js_ast.go#L564: 	Tag        *Expr
		js_ast.go#L566: 	Children   []Expr
		js_ast.go#L582: type ESpread struct{ Value Expr }
		js_ast.go#L593: 	Value   Expr
		js_ast.go#L600: 	Tag            *Expr
		js_ast.go#L610: 	Value Expr
		js_ast.go#L614: 	Value  *Expr
		js_ast.go#L619: 	Test Expr
		js_ast.go#L620: 	Yes  Expr
		js_ast.go#L621: 	No   Expr
		js_ast.go#L633: 	Expr              Expr
		js_ast.go#L682: func IsOptionalChain(value Expr) bool {
		js_ast.go#L694: func Assign(a Expr, b Expr) Expr {
		js_ast.go#L695: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpAssign, Left: a, Right: b}}
		js_ast.go#L698: func AssignStmt(a Expr, b Expr) Stmt {
		js_ast.go#L706: func Not(expr Expr) Expr {
		js_ast.go#L710: 	return Expr{Loc: expr.Loc, Data: &EUnary{Op: UnOpNot, Value: expr}}
		js_ast.go#L718: func MaybeSimplifyNot(expr Expr) (Expr, bool) {
		js_ast.go#L721: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: true}}, true
		js_ast.go#L724: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: !e.Value}}, true
		js_ast.go#L727: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: e.Value == 0 || math.IsNaN(e.Value)}}, true
		js_ast.go#L730: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: e.Value == "0"}}, true
		js_ast.go#L733: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: len(e.Value) == 0}}, true
		js_ast.go#L736: 		return Expr{Loc: expr.Loc, Data: &EBoolean{Value: false}}, true
		js_ast.go#L776: 	return Expr{}, false
		js_ast.go#L779: func IsBooleanValue(a Expr) bool {
		js_ast.go#L808: func IsNumericValue(a Expr) bool {
		js_ast.go#L844: func IsStringValue(a Expr) bool {
		js_ast.go#L877: func JoinWithLeftAssociativeOp(op OpCode, a Expr, b Expr) Expr {
		js_ast.go#L896: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: op, Left: a, Right: b}}
		js_ast.go#L899: func JoinWithComma(a Expr, b Expr) Expr {
		js_ast.go#L900: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpComma, Left: a, Right: b}}
		js_ast.go#L903: func JoinAllWithComma(all []Expr) Expr {
		js_ast.go#L912: 	Expr *Expr
		js_ast.go#L979: 	Value Expr
		js_ast.go#L985: 	Value Expr
		js_ast.go#L989: 	Value Expr
		js_ast.go#L1001: 	Value *Expr
		js_ast.go#L1034: 	Test Expr
		js_ast.go#L1041: 	Test   *Expr
		js_ast.go#L1042: 	Update *Expr
		js_ast.go#L1048: 	Value Expr
		js_ast.go#L1055: 	Value   Expr
		js_ast.go#L1061: 	Test Expr
		js_ast.go#L1065: 	Test Expr
		js_ast.go#L1070: 	Value   Expr
		js_ast.go#L1094: 	Value *Expr
		js_ast.go#L1099: 	Test    Expr
		js_ast.go#L1131: 	Value *Expr
		js_ast.go#L1135: 	Value Expr
		js_ast.go#L1227: 	Value   *Expr

	github.com/evanw/esbuild/internal/bundler
		bundler.go#L265: 		expr := js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(source.Contents)}}
		bundler.go#L275: 		expr := js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(encoded)}}
		bundler.go#L284: 		expr := js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(encoded)}}
		bundler.go#L295: 		expr := js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(url)}}
		bundler.go#L325: 		expr := js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(publicPath)}}
		bundler.go#L1075: 		expr := js_ast.Expr{Data: define.Data}
		bundler.go#L1396: 											js_parser.OptionsFromConfig(&s.options), js_ast.Expr{Data: &js_ast.EObject{}}, ""),
		linker.go#L1429: 			js_ast.Expr{Loc: lazy.Value.Loc, Data: &js_ast.EDot{
		linker.go#L1430: 				Target:  js_ast.Expr{Loc: lazy.Value.Loc, Data: &js_ast.EIdentifier{Ref: repr.ast.ModuleRef}},
		linker.go#L1450: 	generateExport := func(name string, alias string, value js_ast.Expr, prevExports []prevExport) prevExport {
		linker.go#L1502: 				clone.Properties[i].Value = &js_ast.Expr{Loc: property.Key.Loc, Data: &js_ast.EIdentifier{Ref: export.ref}}
		linker.go#L1551: 		var value js_ast.Expr
		linker.go#L1553: 			value = js_ast.Expr{Data: &js_ast.EImportIdentifier{Ref: export.ref}}
		linker.go#L1610: 						Value:   &js_ast.Expr{Data: &js_ast.EImportIdentifier{Ref: export.ref}},
		linker.go#L1620: 			value = js_ast.Expr{Data: &js_ast.EIdentifier{Ref: export.ref}}
		linker.go#L1654: 		var getter js_ast.Expr
		linker.go#L1657: 			getter = js_ast.Expr{Data: &js_ast.EFunction{Fn: js_ast.Fn{Body: body}}}
		linker.go#L1659: 			getter = js_ast.Expr{Data: &js_ast.EArrow{PreferExpr: true, Body: body}}
		linker.go#L1662: 			Key:   js_ast.Expr{Data: &js_ast.EString{Value: js_lexer.StringToUTF16(alias)}},
		linker.go#L1688: 			Value:   &js_ast.Expr{Data: &js_ast.EObject{}},
		linker.go#L1703: 		nsExportStmts = append(nsExportStmts, js_ast.Stmt{Data: &js_ast.SExpr{Value: js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1704: 			Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: markAsModuleRef}},
		linker.go#L1705: 			Args:   []js_ast.Expr{{Data: &js_ast.EIdentifier{Ref: repr.ast.ExportsRef}}},
		linker.go#L1725: 		nsExportStmts = append(nsExportStmts, js_ast.Stmt{Data: &js_ast.SExpr{Value: js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1726: 			Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: exportRef}},
		linker.go#L1727: 			Args: []js_ast.Expr{
		linker.go#L1787: 				cjsWrapStmt = js_ast.Stmt{Data: &js_ast.SExpr{Value: js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1788: 					Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.WrapperRef}},
		linker.go#L1794: 					cjsWrapStmt = js_ast.Stmt{Data: &js_ast.SReturn{Value: &js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1795: 						Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.WrapperRef}},
		linker.go#L1799: 					cjsWrapStmt = js_ast.Stmt{Data: &js_ast.SExpr{Value: js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1800: 						Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.WrapperRef}},
		linker.go#L1807: 					js_ast.Expr{Data: &js_ast.EDot{
		linker.go#L1808: 						Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: c.unboundModuleRef}},
		linker.go#L1811: 					js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1812: 						Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.WrapperRef}},
		linker.go#L1818: 				cjsWrapStmt = js_ast.Stmt{Data: &js_ast.SExportDefault{Value: js_ast.ExprOrStmt{Expr: &js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L1819: 					Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.WrapperRef}},
		linker.go#L1824: 			cjsWrapStmt = js_ast.Stmt{Data: &js_ast.SReturn{Value: &js_ast.Expr{Data: &js_ast.EIdentifier{Ref: repr.ast.ExportsRef}}}}
		linker.go#L3040: 			Value:   &js_ast.Expr{Loc: record.Range.Loc, Data: &js_ast.ERequire{ImportRecordIndex: importRecordIndex}},
		linker.go#L3087: 								Data: &js_ast.SExpr{Value: js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.ECall{
		linker.go#L3088: 									Target: js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: exportStarRef}},
		linker.go#L3089: 									Args: []js_ast.Expr{
		linker.go#L3108: 								Data: &js_ast.SExpr{Value: js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.ECall{
		linker.go#L3109: 									Target: js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: exportStarRef}},
		linker.go#L3110: 									Args: []js_ast.Expr{
		linker.go#L3405: 		var value js_ast.Expr
		linker.go#L3407: 			value = js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L3408: 				Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: commonJSRef}},
		linker.go#L3409: 				Args:   []js_ast.Expr{{Data: &js_ast.EFunction{Fn: js_ast.Fn{Args: args, Body: js_ast.FnBody{Stmts: stmts}}}}},
		linker.go#L3412: 			value = js_ast.Expr{Data: &js_ast.ECall{
		linker.go#L3413: 				Target: js_ast.Expr{Data: &js_ast.EIdentifier{Ref: commonJSRef}},
		linker.go#L3414: 				Args:   []js_ast.Expr{{Data: &js_ast.EArrow{Args: args, Body: js_ast.FnBody{Stmts: stmts}}}},

	github.com/evanw/esbuild/internal/cache
		cache_ast.go#L91: 	expr    js_ast.Expr
		cache_ast.go#L96: func (c *JSONCache) Parse(log logger.Log, source logger.Source, options js_parser.JSONOptions) (js_ast.Expr, bool) {

	github.com/evanw/esbuild/internal/js_parser
		js_parser.go#L369: 	value *js_ast.Expr
		js_parser.go#L472: 	value js_ast.Expr
		js_parser.go#L492: func (dc *duplicateCaseChecker) check(p *parser, expr js_ast.Expr) {
		js_parser.go#L530: func duplicateCaseHash(expr js_ast.Expr) (uint32, bool) {
		js_parser.go#L585: func duplicateCaseEquals(left js_ast.Expr, right js_ast.Expr) (equals bool, couldBeIncorrect bool) {
		js_parser.go#L992: func hasValueForThisInCall(expr js_ast.Expr) bool {
		js_parser.go#L1526: func (p *parser) callRuntime(loc logger.Loc, name string, args []js_ast.Expr) js_ast.Expr {
		js_parser.go#L1534: 	return js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser.go#L1535: 		Target: js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser.go#L1670: func (p *parser) keyNameForError(key js_ast.Expr) string {
		js_parser.go#L1690: func (p *parser) parseStringLiteral() js_ast.Expr {
		js_parser.go#L1696: 	value := js_ast.Expr{Loc: loc, Data: &js_ast.EString{
		js_parser.go#L1715: 	tsDecorators      []js_ast.Expr
		js_parser.go#L1719: 	var key js_ast.Expr
		js_parser.go#L1725: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.ENumber{Value: p.lexer.Number}}
		js_parser.go#L1733: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EBigInt{Value: p.lexer.Identifier}}
		js_parser.go#L1741: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EPrivateIdentifier{Ref: p.storeNameInRef(p.lexer.Identifier)}}
		js_parser.go#L1837: 		key = js_ast.Expr{Loc: nameRange.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(name)}}
		js_parser.go#L1847: 			value := js_ast.Expr{Loc: key.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L1850: 			var initializer *js_ast.Expr = nil
		js_parser.go#L1883: 		var initializer *js_ast.Expr
		js_parser.go#L1984: 		value := js_ast.Expr{Loc: loc, Data: &js_ast.EFunction{Fn: fn}}
		js_parser.go#L2069: 	var key js_ast.Expr
		js_parser.go#L2083: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.ENumber{Value: p.lexer.Number}}
		js_parser.go#L2091: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EBigInt{Value: p.lexer.Identifier}}
		js_parser.go#L2108: 		key = js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(name)}}
		js_parser.go#L2114: 			var defaultValue *js_ast.Expr
		js_parser.go#L2132: 	var defaultValue *js_ast.Expr
		js_parser.go#L2187: func (p *parser) parseAsyncPrefixExpr(asyncRange logger.Range, level js_ast.L) js_ast.Expr {
		js_parser.go#L2205: 			return js_ast.Expr{Loc: asyncRange.Loc, Data: p.parseArrowBody([]js_ast.Arg{arg}, fnOrArrowDataParse{})}
		js_parser.go#L2219: 			return js_ast.Expr{Loc: asyncRange.Loc, Data: arrow}
		js_parser.go#L2239: 	return js_ast.Expr{Loc: asyncRange.Loc, Data: &js_ast.EIdentifier{Ref: p.storeNameInRef("async")}}
		js_parser.go#L2242: func (p *parser) parseFnExpr(loc logger.Loc, isAsync bool, asyncRange logger.Range) js_ast.Expr {
		js_parser.go#L2278: 	return js_ast.Expr{Loc: loc, Data: &js_ast.EFunction{Fn: fn}}
		js_parser.go#L2288: func (p *parser) parseParenExpr(loc logger.Loc, opts parenExprOpts) js_ast.Expr {
		js_parser.go#L2289: 	items := []js_ast.Expr{}
		js_parser.go#L2331: 			item = js_ast.Expr{Loc: itemLoc, Data: &js_ast.ESpread{Value: item}}
		js_parser.go#L2417: 			return js_ast.Expr{Loc: loc, Data: arrow}
		js_parser.go#L2435: 		async := js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.storeNameInRef("async")}}
		js_parser.go#L2436: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser.go#L2456: 	return js_ast.Expr{}
		js_parser.go#L2459: func (p *parser) convertExprToBindingAndInitializer(expr js_ast.Expr, invalidLog []logger.Loc, isSpread bool) (js_ast.Binding, *js_ast.Expr, []logger.Loc) {
		js_parser.go#L2460: 	var initializer *js_ast.Expr
		js_parser.go#L2481: func (p *parser) convertExprToBinding(expr js_ast.Expr, invalidLog []logger.Loc) (js_ast.Binding, []logger.Loc) {
		js_parser.go#L2555: func (p *parser) convertBindingToExpr(binding js_ast.Binding, wrapIdentifier func(logger.Loc, js_ast.Ref) js_ast.Expr) js_ast.Expr {
		js_parser.go#L2560: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EMissing{}}
		js_parser.go#L2566: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: b.Ref}}
		js_parser.go#L2569: 		exprs := make([]js_ast.Expr, len(b.Items))
		js_parser.go#L2573: 				expr = js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ESpread{Value: expr}}
		js_parser.go#L2579: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EArray{
		js_parser.go#L2600: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EObject{
		js_parser.go#L2616: func (p *parser) parsePrefix(level js_ast.L, errors *deferredErrors, flags exprFlag) js_ast.Expr {
		js_parser.go#L2627: 				return js_ast.Expr{Loc: loc, Data: &js_ast.ESuper{}}
		js_parser.go#L2631: 			return js_ast.Expr{Loc: loc, Data: &js_ast.ESuper{}}
		js_parser.go#L2635: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ESuper{}}
		js_parser.go#L2659: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: false}}
		js_parser.go#L2663: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: true}}
		js_parser.go#L2667: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENull{}}
		js_parser.go#L2671: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser.go#L2702: 					return js_ast.Expr{Loc: loc, Data: &js_ast.EAwait{Value: value}}
		js_parser.go#L2738: 			return js_ast.Expr{Loc: loc, Data: p.parseArrowBody([]js_ast.Arg{arg}, fnOrArrowDataParse{})}
		js_parser.go#L2742: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L2758: 			var value js_ast.Expr
		js_parser.go#L2762: 				value = js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L2765: 					Right: js_ast.Expr{Loc: part.TailLoc, Data: &js_ast.EString{
		js_parser.go#L2773: 				value = js_ast.Expr{Loc: loc, Data: &js_ast.EString{
		js_parser.go#L2779: 				value = js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L2785: 					value = js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L2788: 						Right: js_ast.Expr{Loc: part.TailLoc, Data: &js_ast.EString{Value: part.Tail}},
		js_parser.go#L2794: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ETemplate{
		js_parser.go#L2801: 		value := js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: p.lexer.Number}}
		js_parser.go#L2810: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBigInt{Value: value}}
		js_parser.go#L2816: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ERegExp{Value: value}}
		js_parser.go#L2824: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpVoid, Value: value}}
		js_parser.go#L2832: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpTypeof, Value: value}}
		js_parser.go#L2847: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpDelete, Value: value}}
		js_parser.go#L2855: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpPos, Value: value}}
		js_parser.go#L2863: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpNeg, Value: value}}
		js_parser.go#L2871: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpCpl, Value: value}}
		js_parser.go#L2879: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpNot, Value: value}}
		js_parser.go#L2883: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpPreDec, Value: p.parseExpr(js_ast.LPrefix)}}
		js_parser.go#L2887: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{Op: js_ast.UnOpPreInc, Value: p.parseExpr(js_ast.LPrefix)}}
		js_parser.go#L2914: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EClass{Class: class}}
		js_parser.go#L2928: 			return js_ast.Expr{Loc: loc, Data: &js_ast.ENewTarget{}}
		js_parser.go#L2932: 		args := []js_ast.Expr{}
		js_parser.go#L2950: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENew{Target: target, Args: args}}
		js_parser.go#L2955: 		items := []js_ast.Expr{}
		js_parser.go#L2966: 				items = append(items, js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EMissing{}})
		js_parser.go#L2977: 				items = append(items, js_ast.Expr{Loc: dotsLoc, Data: &js_ast.ESpread{Value: item}})
		js_parser.go#L3017: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EArray{
		js_parser.go#L3082: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EObject{
		js_parser.go#L3180: 		return js_ast.Expr{}
		js_parser.go#L3188: 		return js_ast.Expr{}
		js_parser.go#L3192: func (p *parser) parseYieldExpr(loc logger.Loc) js_ast.Expr {
		js_parser.go#L3202: 	var value *js_ast.Expr
		js_parser.go#L3216: 	return js_ast.Expr{Loc: loc, Data: &js_ast.EYield{Value: value, IsStar: isStar}}
		js_parser.go#L3239: func (p *parser) parseImportExpr(loc logger.Loc, level js_ast.L) js_ast.Expr {
		js_parser.go#L3252: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EImportMeta{}}
		js_parser.go#L3276: 	return js_ast.Expr{Loc: loc, Data: &js_ast.EImport{Expr: value, LeadingInteriorComments: comments}}
		js_parser.go#L3279: func (p *parser) parseExprOrBindings(level js_ast.L, errors *deferredErrors) js_ast.Expr {
		js_parser.go#L3283: func (p *parser) parseExpr(level js_ast.L) js_ast.Expr {
		js_parser.go#L3287: func (p *parser) parseExprWithFlags(level js_ast.L, flags exprFlag) js_ast.Expr {
		js_parser.go#L3291: func (p *parser) parseExprCommon(level js_ast.L, errors *deferredErrors, flags exprFlag) js_ast.Expr {
		js_parser.go#L3312: func (p *parser) parseSuffix(left js_ast.Expr, level js_ast.L, errors *deferredErrors, flags exprFlag) js_ast.Expr {
		js_parser.go#L3324: 					left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpComma, Left: left, Right: p.parseExpr(js_ast.LComma)}}
		js_parser.go#L3356: 				left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EIndex{
		js_parser.go#L3358: 					Index:         js_ast.Expr{Loc: nameLoc, Data: &js_ast.EPrivateIdentifier{Ref: ref}},
		js_parser.go#L3370: 				left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EDot{
		js_parser.go#L3397: 				left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EIndex{
		js_parser.go#L3408: 				left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.ECall{
		js_parser.go#L3426: 				left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.ECall{
		js_parser.go#L3439: 					left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EIndex{
		js_parser.go#L3441: 						Index:         js_ast.Expr{Loc: nameLoc, Data: &js_ast.EPrivateIdentifier{Ref: ref}},
		js_parser.go#L3452: 					left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EDot{
		js_parser.go#L3472: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.ETemplate{Tag: &tag, Head: head, HeadRaw: headRaw}}
		js_parser.go#L3483: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.ETemplate{Tag: &tag, Head: head, HeadRaw: headRaw, Parts: parts}}
		js_parser.go#L3509: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EIndex{
		js_parser.go#L3520: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.ECall{
		js_parser.go#L3556: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EIf{Test: left, Yes: yes, No: no}}
		js_parser.go#L3577: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EUnary{Op: js_ast.UnOpPostDec, Value: left}}
		js_parser.go#L3584: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EUnary{Op: js_ast.UnOpPostInc, Value: left}}
		js_parser.go#L3591: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpComma, Left: left, Right: p.parseExpr(js_ast.LComma)}}
		js_parser.go#L3598: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpAdd, Left: left, Right: p.parseExpr(js_ast.LAdd)}}
		js_parser.go#L3605: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpAddAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3612: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpSub, Left: left, Right: p.parseExpr(js_ast.LAdd)}}
		js_parser.go#L3619: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpSubAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3626: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpMul, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3633: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpPow, Left: left, Right: p.parseExpr(js_ast.LExponentiation - 1)}}
		js_parser.go#L3640: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpPowAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3647: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpMulAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3654: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpRem, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3661: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpRemAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3668: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpDiv, Left: left, Right: p.parseExpr(js_ast.LMultiply)}}
		js_parser.go#L3675: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpDivAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3682: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLooseEq, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3689: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLooseNe, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3696: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpStrictEq, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3703: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpStrictNe, Left: left, Right: p.parseExpr(js_ast.LEquals)}}
		js_parser.go#L3718: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLt, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3725: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLe, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3732: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpGt, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3739: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpGe, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3746: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShl, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3753: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShlAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3760: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShr, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3767: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpShrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3774: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpUShr, Left: left, Right: p.parseExpr(js_ast.LShift)}}
		js_parser.go#L3781: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpUShrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3788: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpNullishCoalescing, Left: left, Right: p.parseExpr(js_ast.LNullishCoalescing)}}
		js_parser.go#L3795: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpNullishCoalescingAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3809: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalOr, Left: left, Right: right}}
		js_parser.go#L3824: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalOrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3837: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: left, Right: p.parseExpr(js_ast.LLogicalAnd)}}
		js_parser.go#L3852: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAndAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3859: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseOr, Left: left, Right: p.parseExpr(js_ast.LBitwiseOr)}}
		js_parser.go#L3866: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseOrAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3873: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseAnd, Left: left, Right: p.parseExpr(js_ast.LBitwiseAnd)}}
		js_parser.go#L3880: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseAndAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3887: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseXor, Left: left, Right: p.parseExpr(js_ast.LBitwiseXor)}}
		js_parser.go#L3894: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpBitwiseXorAssign, Left: left, Right: p.parseExpr(js_ast.LAssign - 1)}}
		js_parser.go#L3917: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpIn, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3934: 			left = js_ast.Expr{Loc: left.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpInstanceof, Left: left, Right: p.parseExpr(js_ast.LCompare)}}
		js_parser.go#L3967: func (p *parser) parseExprOrLetStmt(opts parseStmtOpts) (js_ast.Expr, js_ast.Stmt, []js_ast.Decl) {
		js_parser.go#L3985: 			return js_ast.Expr{}, js_ast.Stmt{Loc: letRange.Loc, Data: &js_ast.SLocal{
		js_parser.go#L3994: 	expr := js_ast.Expr{Loc: letRange.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L3998: func (p *parser) parseCallArgs() []js_ast.Expr {
		js_parser.go#L4003: 	args := []js_ast.Expr{}
		js_parser.go#L4015: 			arg = js_ast.Expr{Loc: loc, Data: &js_ast.ESpread{Value: arg}}
		js_parser.go#L4029: func (p *parser) parseJSXTag() (logger.Range, string, *js_ast.Expr) {
		js_parser.go#L4044: 		return tagRange, name, &js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(name)}}
		js_parser.go#L4048: 	tag := &js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.storeNameInRef(name)}}
		js_parser.go#L4065: 		tag = &js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser.go#L4076: func (p *parser) parseJSXElement(loc logger.Loc) js_ast.Expr {
		js_parser.go#L4098: 				key := js_ast.Expr{Loc: keyRange.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(p.lexer.Identifier)}}
		js_parser.go#L4102: 				var value js_ast.Expr
		js_parser.go#L4105: 					value = js_ast.Expr{Loc: logger.Loc{Start: keyRange.Loc.Start + keyRange.Len}, Data: &js_ast.EBoolean{Value: true}}
		js_parser.go#L4110: 						value = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EString{Value: p.lexer.StringLiteral}}
		js_parser.go#L4152: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EJSXElement{Tag: startTag, Properties: properties}}
		js_parser.go#L4159: 	children := []js_ast.Expr{}
		js_parser.go#L4163: 			children = append(children, js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EString{Value: p.lexer.StringLiteral}})
		js_parser.go#L4210: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EJSXElement{Tag: startTag, Properties: properties, Children: children}}
		js_parser.go#L4256: 		var value *js_ast.Expr
		js_parser.go#L4503: 				var defaultValue *js_ast.Expr
		js_parser.go#L4627: 		var tsDecorators []js_ast.Expr
		js_parser.go#L4679: 		var defaultValue *js_ast.Expr
		js_parser.go#L4789: 	tsDecorators        []js_ast.Expr
		js_parser.go#L4797: 	var extends *js_ast.Expr
		js_parser.go#L5009: 	values []js_ast.Expr
		js_parser.go#L5497: 			var value *js_ast.Expr = nil
		js_parser.go#L5634: 		var test *js_ast.Expr = nil
		js_parser.go#L5635: 		var update *js_ast.Expr = nil
		js_parser.go#L5663: 			var expr js_ast.Expr
		js_parser.go#L5929: 		var value *js_ast.Expr
		js_parser.go#L5973: 		var expr js_ast.Expr
		js_parser.go#L6487: 				value: &js_ast.Expr{Loc: *opts.fnBodyLoc, Data: &js_ast.EThis{}},
		js_parser.go#L6496: 				value: &js_ast.Expr{Loc: *opts.fnBodyLoc, Data: &js_ast.EIdentifier{Ref: *p.fnOnlyDataVisit.argumentsRef}},
		js_parser.go#L6588: 						Value:   &js_ast.Expr{Loc: s.Fn.Name.Loc, Data: &js_ast.EIdentifier{Ref: s.Fn.Name.Ref}},
		js_parser.go#L6595: 			letDecls[index].Value = &js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EFunction{Fn: s.Fn}}
		js_parser.go#L7016: 						left = &js_ast.Expr{Loc: prevS.Yes.Loc, Data: &js_ast.EUndefined{}}
		js_parser.go#L7020: 						right = &js_ast.Expr{Loc: lastStmt.Loc, Data: &js_ast.EUndefined{}}
		js_parser.go#L7115: func (p *parser) substituteSingleUseSymbolInStmt(stmt js_ast.Stmt, ref js_ast.Ref, replacement js_ast.Expr) bool {
		js_parser.go#L7116: 	var expr *js_ast.Expr
		js_parser.go#L7175: 	expr js_ast.Expr,
		js_parser.go#L7177: 	replacement js_ast.Expr,
		js_parser.go#L7179: ) (js_ast.Expr, substituteStatus) {
		js_parser.go#L7571: 			var not js_ast.Expr
		js_parser.go#L7578: 				s.Test = &js_ast.Expr{Loc: s.Test.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: *s.Test, Right: not}}
		js_parser.go#L7591: 					s.Test = &js_ast.Expr{Loc: s.Test.Loc, Data: &js_ast.EBinary{Op: js_ast.BinOpLogicalAnd, Left: *s.Test, Right: ifS.Test}}
		js_parser.go#L7737: func (p *parser) mangleIfExpr(loc logger.Loc, e *js_ast.EIf) js_ast.Expr {
		js_parser.go#L7792: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7799: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7821: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L7831: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L7862: 						y.Args[0] = js_ast.Expr{Loc: loc, Data: &js_ast.ESpread{Value: p.mangleIfExpr(loc, e)}}
		js_parser.go#L7863: 						return js_ast.Expr{Loc: loc, Data: y}
		js_parser.go#L7871: 						return js_ast.Expr{Loc: loc, Data: y}
		js_parser.go#L7907: 	return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7910: func (p *parser) isAnonymousNamedExpr(expr js_ast.Expr) bool {
		js_parser.go#L7922: func (p *parser) maybeKeepExprSymbolName(value js_ast.Expr, name string, wasAnonymousNamedExpr bool) js_ast.Expr {
		js_parser.go#L7929: func (p *parser) keepExprSymbolName(value js_ast.Expr, name string) js_ast.Expr {
		js_parser.go#L7930: 	value = p.callRuntime(value.Loc, "__name", []js_ast.Expr{value,
		js_parser.go#L7941: 		Value: p.callRuntime(loc, "__name", []js_ast.Expr{
		js_parser.go#L8104: 				classStmts, _ := p.lowerClass(stmt, js_ast.Expr{}, shadowRef)
		js_parser.go#L8115: 			js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EDot{
		js_parser.go#L8116: 				Target:  js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: p.moduleRef}},
		js_parser.go#L8199: 			wrapIdentifier := func(loc logger.Loc, ref js_ast.Ref) js_ast.Expr {
		js_parser.go#L8201: 				return js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser.go#L8202: 					Target:  js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: *p.enclosingNamespaceArgRef}},
		js_parser.go#L8420: 					js_ast.Expr{Loc: decl.Binding.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}},
		js_parser.go#L8507: 				js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EDot{
		js_parser.go#L8508: 					Target:  js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: *p.enclosingNamespaceArgRef}},
		js_parser.go#L8512: 				js_ast.Expr{Loc: s.Fn.Name.Loc, Data: &js_ast.EIdentifier{Ref: s.Fn.Name.Ref}},
		js_parser.go#L8534: 		classStmts, _ := p.lowerClass(stmt, js_ast.Expr{}, shadowRef)
		js_parser.go#L8540: 				js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EDot{
		js_parser.go#L8541: 					Target:  js_ast.Expr{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: *p.enclosingNamespaceArgRef}},
		js_parser.go#L8545: 				js_ast.Expr{Loc: s.Class.Name.Loc, Data: &js_ast.EIdentifier{Ref: s.Class.Name.Ref}},
		js_parser.go#L8572: 		valueExprs := []js_ast.Expr{}
		js_parser.go#L8589: 			var assignTarget js_ast.Expr
		js_parser.go#L8605: 				value.Value = &js_ast.Expr{Loc: value.Loc, Data: &js_ast.ENumber{Value: nextNumericValue}}
		js_parser.go#L8608: 				value.Value = &js_ast.Expr{Loc: value.Loc, Data: &js_ast.EUndefined{}}
		js_parser.go#L8614: 					js_ast.Expr{Loc: value.Loc, Data: &js_ast.EDot{
		js_parser.go#L8615: 						Target:  js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIdentifier{Ref: s.Arg}},
		js_parser.go#L8624: 					js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIndex{
		js_parser.go#L8625: 						Target: js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIdentifier{Ref: s.Arg}},
		js_parser.go#L8626: 						Index:  js_ast.Expr{Loc: value.Loc, Data: &js_ast.EString{Value: value.Name}},
		js_parser.go#L8639: 					js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIndex{
		js_parser.go#L8640: 						Target: js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIdentifier{Ref: s.Arg}},
		js_parser.go#L8643: 					js_ast.Expr{Loc: value.Loc, Data: &js_ast.EString{Value: value.Name}},
		js_parser.go#L8737: 	wrapIdentifier := func(loc logger.Loc, ref js_ast.Ref) js_ast.Expr {
		js_parser.go#L8740: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L8742: 	var value js_ast.Expr
		js_parser.go#L8758: func (p *parser) markExprAsParenthesized(value js_ast.Expr) {
		js_parser.go#L8795: func (p *parser) maybeTransposeIfExprChain(expr js_ast.Expr, visit func(js_ast.Expr) js_ast.Expr) js_ast.Expr {
		js_parser.go#L8804: func maybeJoinWithComma(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser.go#L8836: 	value js_ast.Expr, // The value that might have side effects
		js_parser.go#L8838: 	func() js_ast.Expr, // Generates reference expressions "_a"
		js_parser.go#L8839: 	func(js_ast.Expr) js_ast.Expr, // Call this on the final expression
		js_parser.go#L8841: 	wrapFunc := func(expr js_ast.Expr) js_ast.Expr {
		js_parser.go#L8851: 	var valueFunc func() js_ast.Expr
		js_parser.go#L8854: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.ENull{}} }
		js_parser.go#L8856: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EUndefined{}} }
		js_parser.go#L8858: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}} }
		js_parser.go#L8860: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: e.Value}} }
		js_parser.go#L8862: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: e.Value}} }
		js_parser.go#L8864: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EBigInt{Value: e.Value}} }
		js_parser.go#L8866: 		valueFunc = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: e.Value}} }
		js_parser.go#L8868: 		valueFunc = func() js_ast.Expr {
		js_parser.go#L8875: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: e.Ref}}
		js_parser.go#L8886: 		return func() js_ast.Expr {
		js_parser.go#L8906: 		return func() js_ast.Expr {
		js_parser.go#L8912: 					return js_ast.Assign(js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}, value)
		js_parser.go#L8915: 				return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}
		js_parser.go#L8916: 			}, func(expr js_ast.Expr) js_ast.Expr {
		js_parser.go#L8923: 				return js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser.go#L8924: 					Target: js_ast.Expr{Loc: loc, Data: &js_ast.EArrow{
		js_parser.go#L8929: 					Args: []js_ast.Expr{},
		js_parser.go#L8934: 	return func() js_ast.Expr {
		js_parser.go#L8938: 			return js_ast.Assign(js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}, value)
		js_parser.go#L8941: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}
		js_parser.go#L8945: func (p *parser) visitTSDecorators(tsDecorators []js_ast.Expr) []js_ast.Expr {
		js_parser.go#L9163: func (p *parser) isDotDefineMatch(expr js_ast.Expr, parts []string) bool {
		js_parser.go#L9201: func (p *parser) jsxStringsToMemberExpression(loc logger.Loc, parts []string) js_ast.Expr {
		js_parser.go#L9238: 			value = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser.go#L9267: func (p *parser) warnAboutTypeofAndString(a js_ast.Expr, b js_ast.Expr) {
		js_parser.go#L9286: func canChangeStrictToLoose(a js_ast.Expr, b js_ast.Expr) bool {
		js_parser.go#L9292: func maybeSimplifyEqualityComparison(e *js_ast.EBinary, isNotEqual bool) (js_ast.Expr, bool) {
		js_parser.go#L9305: 	return js_ast.Expr{}, false
		js_parser.go#L9308: func (p *parser) warnAboutEqualityCheck(op string, value js_ast.Expr, afterOpLoc logger.Loc) bool {
		js_parser.go#L9381: 	target js_ast.Expr,
		js_parser.go#L9385: ) (js_ast.Expr, bool) {
		js_parser.go#L9446: 				return js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: p.requireRef}}, true
		js_parser.go#L9454: 					return js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: number}}, true
		js_parser.go#L9460: 	return js_ast.Expr{}, false
		js_parser.go#L9470: func foldStringAddition(left js_ast.Expr, right js_ast.Expr) *js_ast.Expr {
		js_parser.go#L9475: 			return &js_ast.Expr{Loc: left.Loc, Data: &js_ast.EString{
		js_parser.go#L9482: 				return &js_ast.Expr{Loc: left.Loc, Data: &js_ast.ETemplate{Head: joinStrings(l.Value, r.Head), Parts: r.Parts}}
		js_parser.go#L9499: 				return &js_ast.Expr{Loc: left.Loc, Data: &js_ast.ETemplate{Head: head, Parts: parts}}
		js_parser.go#L9513: 					return &js_ast.Expr{Loc: left.Loc, Data: &js_ast.ETemplate{Head: head, Parts: parts}}
		js_parser.go#L9523: func (p *parser) simplifyBooleanExpr(expr js_ast.Expr) js_ast.Expr {
		js_parser.go#L9668: 	thisArgFunc     func() js_ast.Expr
		js_parser.go#L9669: 	thisArgWrapFunc func(js_ast.Expr) js_ast.Expr
		js_parser.go#L9672: func (p *parser) visitExpr(expr js_ast.Expr) js_ast.Expr {
		js_parser.go#L9677: func (p *parser) valueForThis(loc logger.Loc) (js_ast.Expr, bool) {
		js_parser.go#L9681: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: *p.fnOnlyDataVisit.thisClassStaticRef}}, true
		js_parser.go#L9689: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EUndefined{}}, true
		js_parser.go#L9695: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.exportsRef}}, true
		js_parser.go#L9699: 	return js_ast.Expr{}, false
		js_parser.go#L9702: func isBinaryNullAndUndefined(left js_ast.Expr, right js_ast.Expr, op js_ast.OpCode) (js_ast.Expr, js_ast.Expr, bool) {
		js_parser.go#L9725: 	return js_ast.Expr{}, js_ast.Expr{}, false
		js_parser.go#L9728: func inlineSpreadsOfArrayLiterals(values []js_ast.Expr) (results []js_ast.Expr) {
		js_parser.go#L9734: 						results = append(results, js_ast.Expr{Loc: item.Loc, Data: &js_ast.EUndefined{}})
		js_parser.go#L9756: func canBeDeleted(expr js_ast.Expr) bool {
		js_parser.go#L9771: func (p *parser) isValidAssignmentTarget(expr js_ast.Expr) bool {
		js_parser.go#L9796: func (p *parser) mangleTemplate(loc logger.Loc, e *js_ast.ETemplate) js_ast.Expr {
		js_parser.go#L9817: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EString{
		js_parser.go#L9823: 	return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L9828: func (p *parser) visitExprInOut(expr js_ast.Expr, in exprIn) (js_ast.Expr, exprOut) {
		js_parser.go#L9863: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EIdentifier{Ref: p.captureThis()}}, exprOut{}
		js_parser.go#L9884: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EIdentifier{Ref: p.importMetaRef}}, exprOut{}
		js_parser.go#L9976: 		args := []js_ast.Expr{*tag}
		js_parser.go#L9982: 			args = append(args, js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENull{}})
		js_parser.go#L9991: 		return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ECall{
		js_parser.go#L10086: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10104: 				return js_ast.Expr{Loc: expr.Loc, Data: data}, exprOut{}
		js_parser.go#L10125: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: result}}, exprOut{}
		js_parser.go#L10146: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: !result}}, exprOut{}
		js_parser.go#L10167: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: !result}}, exprOut{}
		js_parser.go#L10195: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10223: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10253: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Left.Loc, Data: &js_ast.ENumber{}}, e.Right), exprOut{}
		js_parser.go#L10277: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: left + right}}, exprOut{}
		js_parser.go#L10289: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBinary{Op: left.Op, Left: left.Left, Right: *result}}, exprOut{}
		js_parser.go#L10296: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: left - right}}, exprOut{}
		js_parser.go#L10303: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: left * right}}, exprOut{}
		js_parser.go#L10310: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: left / right}}, exprOut{}
		js_parser.go#L10317: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: math.Mod(left, right)}}, exprOut{}
		js_parser.go#L10324: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: math.Pow(left, right)}}, exprOut{}
		js_parser.go#L10330: 				return p.callRuntime(expr.Loc, "__pow", []js_ast.Expr{e.Left, e.Right}), exprOut{}
		js_parser.go#L10336: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toInt32(left) << (toUint32(right) & 31))}}, exprOut{}
		js_parser.go#L10343: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toInt32(left) >> (toUint32(right) & 31))}}, exprOut{}
		js_parser.go#L10350: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toUint32(left) >> (toUint32(right) & 31))}}, exprOut{}
		js_parser.go#L10357: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toInt32(left) & toInt32(right))}}, exprOut{}
		js_parser.go#L10364: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toInt32(left) | toInt32(right))}}, exprOut{}
		js_parser.go#L10371: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: float64(toInt32(left) ^ toInt32(right))}}, exprOut{}
		js_parser.go#L10482: 				return js_ast.JoinWithComma(comma.Left, js_ast.Expr{
		js_parser.go#L10497: 				return p.visitExprInOut(js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EDot{
		js_parser.go#L10586: 		return js_ast.Expr{Loc: expr.Loc, Data: e}, out
		js_parser.go#L10600: 				e.Value = js_ast.JoinWithComma(js_ast.Expr{Loc: e.Value.Loc, Data: &js_ast.ENumber{}}, e.Value)
		js_parser.go#L10608: 					return js_ast.Expr{Loc: expr.Loc, Data: p.typeofRequire}, exprOut{}
		js_parser.go#L10613: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(typeof)}}, exprOut{}
		js_parser.go#L10665: 				e.Value = js_ast.JoinWithComma(js_ast.Expr{Loc: e.Value.Loc, Data: &js_ast.ENumber{}}, e.Value)
		js_parser.go#L10679: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: !boolean}}, exprOut{}
		js_parser.go#L10690: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EUndefined{}}, exprOut{}
		js_parser.go#L10695: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: number}}, exprOut{}
		js_parser.go#L10700: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: -number}}, exprOut{}
		js_parser.go#L10731: 				return js_ast.JoinWithComma(comma.Left, js_ast.Expr{
		js_parser.go#L10798: 			key := js_ast.Expr{Loc: e.NameLoc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(e.Name)}}
		js_parser.go#L10821: 		return js_ast.Expr{Loc: expr.Loc, Data: e}, out
		js_parser.go#L10855: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Test.Loc, Data: &js_ast.ENumber{}}, e.Yes), exprOut{}
		js_parser.go#L10878: 						return js_ast.JoinWithComma(js_ast.Expr{Loc: e.Test.Loc, Data: &js_ast.ENumber{}}, e.No), exprOut{}
		js_parser.go#L10896: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EYield{Value: &e.Value}}, exprOut{}
		js_parser.go#L11090: 		return p.maybeTransposeIfExprChain(e.Expr, func(arg js_ast.Expr) js_ast.Expr {
		js_parser.go#L11097: 					return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ENull{}}
		js_parser.go#L11102: 				return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EImport{
		js_parser.go#L11145: 				var then js_ast.Expr
		js_parser.go#L11146: 				value := p.callRuntime(arg.Loc, "__toModule", []js_ast.Expr{{Loc: arg.Loc, Data: &js_ast.ECall{
		js_parser.go#L11147: 					Target: js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EIdentifier{Ref: p.requireRef}},
		js_parser.go#L11148: 					Args:   []js_ast.Expr{arg},
		js_parser.go#L11152: 					then = js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EFunction{Fn: js_ast.Fn{Body: body}}}
		js_parser.go#L11154: 					then = js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EArrow{Body: body, PreferExpr: true}}
		js_parser.go#L11156: 				return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ECall{
		js_parser.go#L11157: 					Target: js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EDot{
		js_parser.go#L11158: 						Target: js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ECall{
		js_parser.go#L11159: 							Target: js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EDot{
		js_parser.go#L11160: 								Target:  js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EIdentifier{Ref: p.makePromiseRef()}},
		js_parser.go#L11168: 					Args: []js_ast.Expr{then},
		js_parser.go#L11172: 			return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EImport{
		js_parser.go#L11222: 					return p.maybeTransposeIfExprChain(e.Args[0], func(arg js_ast.Expr) js_ast.Expr {
		js_parser.go#L11228: 								return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ENull{}}
		js_parser.go#L11237: 							return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ERequireResolve{ImportRecordIndex: importRecordIndex}}
		js_parser.go#L11241: 						return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ECall{
		js_parser.go#L11242: 							Target: js_ast.Expr{Loc: e.Target.Loc, Data: &js_ast.EDot{
		js_parser.go#L11243: 								Target:  js_ast.Expr{Loc: dot.Target.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}},
		js_parser.go#L11247: 							Args: []js_ast.Expr{arg},
		js_parser.go#L11317: 				return targetWrapFunc(js_ast.Expr{Loc: target.Loc, Data: &js_ast.ECall{
		js_parser.go#L11318: 					Target: js_ast.Expr{Loc: target.Loc, Data: &js_ast.EDot{
		js_parser.go#L11323: 					Args:                   append([]js_ast.Expr{targetFunc()}, e.Args...),
		js_parser.go#L11341: 						return p.maybeTransposeIfExprChain(e.Args[0], func(arg js_ast.Expr) js_ast.Expr {
		js_parser.go#L11348: 									return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ENull{}}
		js_parser.go#L11357: 								return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ERequire{ImportRecordIndex: importRecordIndex}}
		js_parser.go#L11367: 							return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.ECall{
		js_parser.go#L11368: 								Target: js_ast.Expr{Loc: e.Target.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}},
		js_parser.go#L11369: 								Args:   []js_ast.Expr{arg},
		js_parser.go#L11448: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EFunction{Fn: js_ast.Fn{
		js_parser.go#L11484: func (p *parser) warnAboutImportNamespaceCallOrConstruct(target js_ast.Expr, isConstruct bool) {
		js_parser.go#L11523: func (p *parser) valueForDefine(loc logger.Loc, assignTarget js_ast.AssignTarget, isDeleteTarget bool, defineFunc config.DefineFunc) js_ast.Expr {
		js_parser.go#L11524: 	expr := js_ast.Expr{Loc: loc, Data: defineFunc(config.DefineArgs{
		js_parser.go#L11545: func (p *parser) handleIdentifier(loc logger.Loc, e *js_ast.EIdentifier, opts identifierOpts) js_ast.Expr {
		js_parser.go#L11553: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.captureArguments()}}
		js_parser.go#L11572: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EImportIdentifier{
		js_parser.go#L11586: 					return js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: number}}
		js_parser.go#L11592: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser.go#L11593: 				Target:  js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: nsRef}},
		js_parser.go#L11609: 				return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: false}}
		js_parser.go#L11618: 	return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L11621: func extractNumericValues(left js_ast.Expr, right js_ast.Expr) (float64, float64, bool) {
		js_parser.go#L12262: func (p *parser) exprCanBeRemovedIfUnused(expr js_ast.Expr) bool {
		js_parser.go#L12391: func (p *parser) simplifyUnusedExpr(expr js_ast.Expr) js_ast.Expr {
		js_parser.go#L12395: 		return js_ast.Expr{}
		js_parser.go#L12399: 			return js_ast.Expr{}
		js_parser.go#L12407: 			return js_ast.Expr{}
		js_parser.go#L12412: 			var result js_ast.Expr
		js_parser.go#L12416: 					result = js_ast.Expr{Loc: part.Value.Loc, Data: &js_ast.EString{}}
		js_parser.go#L12418: 				result = js_ast.Expr{Loc: part.Value.Loc, Data: &js_ast.EBinary{
		js_parser.go#L12448: 		var result js_ast.Expr
		js_parser.go#L12486: 		var result js_ast.Expr
		js_parser.go#L12490: 				result = maybeJoinWithComma(result, js_ast.Expr{Loc: property.Key.Loc, Data: &js_ast.EBinary{
		js_parser.go#L12493: 					Right: js_ast.Expr{Loc: property.Key.Loc, Data: &js_ast.EString{}},
		js_parser.go#L12531: 				return js_ast.Expr{}
		js_parser.go#L12571: 			expr = js_ast.Expr{}
		js_parser.go#L12581: 			expr = js_ast.Expr{}
		js_parser.go#L12591: func simplifyUnusedStringAdditionChain(expr js_ast.Expr) (js_ast.Expr, bool) {
		js_parser.go#L12595: 		return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EString{}}, true
		js_parser.go#L12747: 				Value:   &js_ast.Expr{Data: &js_ast.EObject{}},
		js_parser.go#L12826: func LazyExportAST(log logger.Log, source logger.Source, options Options, expr js_ast.Expr, apiCall string) js_ast.AST {
		js_parser.go#L12836: 		expr = p.callRuntime(expr.Loc, apiCall, []js_ast.Expr{expr})
		js_parser_lower.go#L269: 				init := js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser_lower.go#L298: 			thisValue = js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L320: 		var forwardedArgs js_ast.Expr
		js_parser_lower.go#L325: 			forwardedArgs = js_ast.Expr{Loc: bodyLoc, Data: &js_ast.ENull{}}
		js_parser_lower.go#L373: 				forwardedArgs = js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EIdentifier{Ref: *p.fnOnlyDataVisit.argumentsRef}}
		js_parser_lower.go#L397: 				items := make([]js_ast.Expr, 0, len(*args))
		js_parser_lower.go#L400: 					item := js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}}
		js_parser_lower.go#L406: 				forwardedArgs = js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EArray{Items: items, IsSingleLine: true}}
		js_parser_lower.go#L412: 		callAsync := p.callRuntime(bodyLoc, "__async", []js_ast.Expr{
		js_parser_lower.go#L426: 					Value: &js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EArrow{
		js_parser_lower.go#L433: 								Value: &js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EIndex{
		js_parser_lower.go#L434: 									Target: js_ast.Expr{Loc: bodyLoc, Data: &js_ast.ESuper{}},
		js_parser_lower.go#L435: 									Index:  js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EIdentifier{Ref: argRef}},
		js_parser_lower.go#L451: func (p *parser) lowerOptionalChain(expr js_ast.Expr, in exprIn, childOut exprOut) (js_ast.Expr, exprOut) {
		js_parser_lower.go#L452: 	valueWhenUndefined := js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EUndefined{}}
		js_parser_lower.go#L457: 	chain := []js_ast.Expr{}
		js_parser_lower.go#L502: 			valueWhenUndefined = js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: true}}
		js_parser_lower.go#L532: 	var thisArg js_ast.Expr
		js_parser_lower.go#L533: 	var targetWrapFunc func(js_ast.Expr) js_ast.Expr
		js_parser_lower.go#L550: 						key := js_ast.Expr{Loc: e.NameLoc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(e.Name)}}
		js_parser_lower.go#L563: 					thisArg = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L566: 					expr = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L583: 					thisArg = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L597: 					expr = js_ast.Expr{Loc: loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L618: 	var parentThisArgFunc func() js_ast.Expr
		js_parser_lower.go#L619: 	var parentThisArgWrapFunc func(js_ast.Expr) js_ast.Expr
		js_parser_lower.go#L620: 	var privateThisFunc func() js_ast.Expr
		js_parser_lower.go#L621: 	var privateThisWrapFunc func(js_ast.Expr) js_ast.Expr
		js_parser_lower.go#L631: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L654: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L664: 				result = js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L665: 					Target: js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L670: 					Args:                   append([]js_ast.Expr{thisArg}, e.Args...),
		js_parser_lower.go#L681: 				result = privateThisWrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L682: 					Target: js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L687: 					Args:                   append([]js_ast.Expr{privateThisFunc()}, e.Args...),
		js_parser_lower.go#L694: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L702: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.EUnary{
		js_parser_lower.go#L717: 	result = js_ast.Expr{Loc: loc, Data: &js_ast.EIf{
		js_parser_lower.go#L718: 		Test: js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L721: 			Right: js_ast.Expr{Loc: loc, Data: &js_ast.ENull{}},
		js_parser_lower.go#L741: func (p *parser) lowerAssignmentOperator(value js_ast.Expr, callback func(js_ast.Expr, js_ast.Expr) js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L747: 				js_ast.Expr{Loc: value.Loc, Data: &js_ast.EDot{
		js_parser_lower.go#L752: 				js_ast.Expr{Loc: value.Loc, Data: &js_ast.EDot{
		js_parser_lower.go#L765: 				js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L769: 				js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L778: 			js_ast.Expr{Loc: value.Loc, Data: &js_ast.EIdentifier{Ref: left.Ref}},
		js_parser_lower.go#L789: func (p *parser) lowerExponentiationAssignmentOperator(loc logger.Loc, e *js_ast.EBinary) js_ast.Expr {
		js_parser_lower.go#L794: 			p.callRuntime(loc, "__pow", []js_ast.Expr{
		js_parser_lower.go#L800: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L802: 		return js_ast.Assign(a, p.callRuntime(loc, "__pow", []js_ast.Expr{b, e.Right}))
		js_parser_lower.go#L806: func (p *parser) lowerNullishCoalescingAssignmentOperator(loc logger.Loc, e *js_ast.EBinary) js_ast.Expr {
		js_parser_lower.go#L818: 		return targetWrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L825: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L832: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L840: func (p *parser) lowerLogicalAssignmentOperator(loc logger.Loc, e *js_ast.EBinary, op js_ast.OpCode) js_ast.Expr {
		js_parser_lower.go#L845: 		return targetWrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L852: 	return p.lowerAssignmentOperator(e.Left, func(a js_ast.Expr, b js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L855: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L863: func (p *parser) lowerNullishCoalescing(loc logger.Loc, left js_ast.Expr, right js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L867: 	return wrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.EIf{
		js_parser_lower.go#L868: 		Test: js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L871: 			Right: js_ast.Expr{Loc: loc, Data: &js_ast.ENull{}},
		js_parser_lower.go#L902: func (p *parser) lowerObjectSpread(loc logger.Loc, e *js_ast.EObject) js_ast.Expr {
		js_parser_lower.go#L915: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser_lower.go#L918: 	var result js_ast.Expr
		js_parser_lower.go#L930: 				result = js_ast.Expr{Loc: loc, Data: &js_ast.EObject{
		js_parser_lower.go#L937: 					[]js_ast.Expr{result, {Loc: loc, Data: &js_ast.EObject{
		js_parser_lower.go#L946: 		result = p.callRuntime(loc, "__assign", []js_ast.Expr{result, *property.Value})
		js_parser_lower.go#L951: 		result = p.callRuntime(loc, "__assign", []js_ast.Expr{result, {Loc: loc, Data: &js_ast.EObject{
		js_parser_lower.go#L960: func (p *parser) lowerPrivateGet(target js_ast.Expr, loc logger.Loc, private *js_ast.EPrivateIdentifier) js_ast.Expr {
		js_parser_lower.go#L966: 		return p.callRuntime(target.Loc, "__privateMethod", []js_ast.Expr{
		js_parser_lower.go#L977: 		return p.callRuntime(target.Loc, "__privateGet", []js_ast.Expr{
		js_parser_lower.go#L985: 		return p.callRuntime(target.Loc, "__privateGet", []js_ast.Expr{
		js_parser_lower.go#L993: 	target js_ast.Expr,
		js_parser_lower.go#L996: 	value js_ast.Expr,
		js_parser_lower.go#L997: ) js_ast.Expr {
		js_parser_lower.go#L1004: 		return p.callRuntime(target.Loc, "__privateSet", []js_ast.Expr{
		js_parser_lower.go#L1013: 		return p.callRuntime(target.Loc, "__privateSet", []js_ast.Expr{
		js_parser_lower.go#L1021: func (p *parser) lowerPrivateSetUnOp(target js_ast.Expr, loc logger.Loc, private *js_ast.EPrivateIdentifier, op js_ast.OpCode, isSuffix bool) js_ast.Expr {
		js_parser_lower.go#L1028: 	value := js_ast.Expr{Loc: target.Loc, Data: &js_ast.EUnary{
		js_parser_lower.go#L1036: 		assign := valueWrapFunc(targetWrapFunc(p.lowerPrivateSet(target, loc, private, js_ast.Expr{Loc: target.Loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L1039: 			Right: js_ast.Expr{Loc: target.Loc, Data: &js_ast.ENumber{Value: 1}},
		js_parser_lower.go#L1045: 	return targetWrapFunc(p.lowerPrivateSet(target, loc, private, js_ast.Expr{Loc: target.Loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L1048: 		Right: js_ast.Expr{Loc: target.Loc, Data: &js_ast.ENumber{Value: 1}},
		js_parser_lower.go#L1052: func (p *parser) lowerPrivateSetBinOp(target js_ast.Expr, loc logger.Loc, private *js_ast.EPrivateIdentifier, op js_ast.OpCode, value js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L1055: 	return targetWrapFunc(p.lowerPrivateSet(targetFunc(), loc, private, js_ast.Expr{Loc: value.Loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L1064: func (p *parser) extractPrivateIndex(target js_ast.Expr) (js_ast.Expr, logger.Loc, *js_ast.EPrivateIdentifier) {
		js_parser_lower.go#L1070: 	return js_ast.Expr{}, logger.Loc{}, nil
		js_parser_lower.go#L1091: func exprHasObjectRest(expr js_ast.Expr) bool {
		js_parser_lower.go#L1154: 			if expr, ok := p.lowerObjectRestInAssign(s.Value, js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}}); ok {
		js_parser_lower.go#L1165: 			decl := js_ast.Decl{Binding: s.Decls[0].Binding, Value: &js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}}}
		js_parser_lower.go#L1192: 		decl := js_ast.Decl{Binding: *catch.Binding, Value: &js_ast.Expr{Loc: catch.Binding.Loc, Data: &js_ast.EIdentifier{Ref: ref}}}
		js_parser_lower.go#L1202: func (p *parser) lowerObjectRestInAssign(rootExpr js_ast.Expr, rootInit js_ast.Expr) (js_ast.Expr, bool) {
		js_parser_lower.go#L1203: 	var expr js_ast.Expr
		js_parser_lower.go#L1205: 	assign := func(left js_ast.Expr, right js_ast.Expr) {
		js_parser_lower.go#L1213: 	return js_ast.Expr{}, false
		js_parser_lower.go#L1216: func (p *parser) lowerObjectRestToDecls(rootExpr js_ast.Expr, rootInit js_ast.Expr, decls []js_ast.Decl) ([]js_ast.Decl, bool) {
		js_parser_lower.go#L1217: 	assign := func(left js_ast.Expr, right js_ast.Expr) {
		js_parser_lower.go#L1233: 	rootExpr js_ast.Expr,
		js_parser_lower.go#L1234: 	rootInit js_ast.Expr,
		js_parser_lower.go#L1235: 	assign func(js_ast.Expr, js_ast.Expr),
		js_parser_lower.go#L1251: 	var findRestBindings func(js_ast.Expr) bool
		js_parser_lower.go#L1252: 	findRestBindings = func(expr js_ast.Expr) bool {
		js_parser_lower.go#L1283: 	var visit func(js_ast.Expr, js_ast.Expr, []func() js_ast.Expr)
		js_parser_lower.go#L1285: 	captureIntoRef := func(expr js_ast.Expr) js_ast.Ref {
		js_parser_lower.go#L1294: 		assign(js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EIdentifier{Ref: ref}}, expr)
		js_parser_lower.go#L1301: 		binding js_ast.Expr,
		js_parser_lower.go#L1302: 		init js_ast.Expr,
		js_parser_lower.go#L1303: 		capturedKeys []func() js_ast.Expr,
		js_parser_lower.go#L1312: 			assign(js_ast.Expr{Loc: before[0].Key.Loc, Data: &js_ast.EObject{Properties: before, IsSingleLine: isSingleLine}},
		js_parser_lower.go#L1313: 				js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}})
		js_parser_lower.go#L1314: 			init = js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser_lower.go#L1321: 		keysToExclude := make([]js_ast.Expr, len(capturedKeys))
		js_parser_lower.go#L1325: 		assign(binding, p.callRuntime(binding.Loc, "__rest", []js_ast.Expr{init,
		js_parser_lower.go#L1330: 		before []js_ast.Expr,
		js_parser_lower.go#L1331: 		split js_ast.Expr,
		js_parser_lower.go#L1332: 		after []js_ast.Expr,
		js_parser_lower.go#L1333: 		init js_ast.Expr,
		js_parser_lower.go#L1349: 		var tailExpr js_ast.Expr
		js_parser_lower.go#L1350: 		var tailInit js_ast.Expr
		js_parser_lower.go#L1354: 			tailExpr = js_ast.Expr{Loc: loc, Data: &js_ast.EArray{Items: after, IsSingleLine: isSingleLine}}
		js_parser_lower.go#L1355: 			tailInit = js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tailRef}}
		js_parser_lower.go#L1356: 			items = append(items, js_ast.Expr{Loc: loc, Data: &js_ast.ESpread{Value: js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tailRef}}}})
		js_parser_lower.go#L1362: 		assign(js_ast.Expr{Loc: split.Loc, Data: &js_ast.EArray{Items: items, IsSingleLine: isSingleLine}}, init)
		js_parser_lower.go#L1365: 		visit(deferredBinding, js_ast.Expr{Loc: split.Loc, Data: &js_ast.EIdentifier{Ref: splitRef}}, nil)
		js_parser_lower.go#L1377: 		init js_ast.Expr,
		js_parser_lower.go#L1378: 		capturedKeys []func() js_ast.Expr,
		js_parser_lower.go#L1383: 		var afterSplitInit js_ast.Expr
		js_parser_lower.go#L1386: 			init = js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser_lower.go#L1387: 			afterSplitInit = js_ast.Expr{Loc: init.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser_lower.go#L1401: 		assign(js_ast.Expr{Loc: binding.Loc, Data: &js_ast.EObject{Properties: upToSplit, IsSingleLine: isSingleLine}}, init)
		js_parser_lower.go#L1404: 		visit(deferredBinding, js_ast.Expr{Loc: binding.Loc, Data: &js_ast.EIdentifier{Ref: splitRef}}, nil)
		js_parser_lower.go#L1409: 			visit(js_ast.Expr{Loc: binding.Loc, Data: &js_ast.EObject{
		js_parser_lower.go#L1433: 	visit = func(expr js_ast.Expr, init js_ast.Expr, capturedKeys []func() js_ast.Expr) {
		js_parser_lower.go#L1440: 					splitArrayPattern(e.Items[:i], item, append([]js_ast.Expr{}, e.Items[i+1:]...), init, e.IsSingleLine)
		js_parser_lower.go#L1483: func (p *parser) captureKeyForObjectRest(originalKey js_ast.Expr) (finalKey js_ast.Expr, capturedKey func() js_ast.Expr) {
		js_parser_lower.go#L1489: 		capturedKey = func() js_ast.Expr { return js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: k.Value}} }
		js_parser_lower.go#L1497: 		capturedKey = func() js_ast.Expr {
		js_parser_lower.go#L1498: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L1500: 				Left:  js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: k.Value}},
		js_parser_lower.go#L1501: 				Right: js_ast.Expr{Loc: loc, Data: &js_ast.EString{}},
		js_parser_lower.go#L1506: 		capturedKey = func() js_ast.Expr {
		js_parser_lower.go#L1508: 			return p.callRuntime(loc, "__restKey", []js_ast.Expr{{Loc: loc, Data: &js_ast.EIdentifier{Ref: k.Ref}}})
		js_parser_lower.go#L1515: 		finalKey = js_ast.Assign(js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}, originalKey)
		js_parser_lower.go#L1516: 		capturedKey = func() js_ast.Expr {
		js_parser_lower.go#L1518: 			return p.callRuntime(loc, "__restKey", []js_ast.Expr{{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}})
		js_parser_lower.go#L1527: func (p *parser) lowerClass(stmt js_ast.Stmt, expr js_ast.Expr, shadowRef js_ast.Ref) ([]js_ast.Stmt, js_ast.Expr) {
		js_parser_lower.go#L1595: 	var computedPropertyCache js_ast.Expr
		js_parser_lower.go#L1596: 	var privateMembers []js_ast.Expr
		js_parser_lower.go#L1597: 	var staticMembers []js_ast.Expr
		js_parser_lower.go#L1598: 	var staticPrivateMethods []js_ast.Expr
		js_parser_lower.go#L1599: 	var instanceDecorators []js_ast.Expr
		js_parser_lower.go#L1600: 	var staticDecorators []js_ast.Expr
		js_parser_lower.go#L1603: 	var nameFunc func() js_ast.Expr
		js_parser_lower.go#L1604: 	var wrapFunc func(js_ast.Expr) js_ast.Expr
		js_parser_lower.go#L1614: 	nameFunc = func() js_ast.Expr {
		js_parser_lower.go#L1621: 			nameFunc, wrapFunc = p.captureValueWithPossibleSideEffects(classLoc, 2, js_ast.Expr{Loc: classLoc, Data: classExpr})
		js_parser_lower.go#L1658: 			return js_ast.Expr{Loc: classLoc, Data: &js_ast.EIdentifier{Ref: class.Name.Ref}}
		js_parser_lower.go#L1676: 						var decorators *[]js_ast.Expr = &prop.TSDecorators
		js_parser_lower.go#L1681: 							p.callRuntime(decorator.Loc, "__param", []js_ast.Expr{
		js_parser_lower.go#L1729: 					js_ast.Assign(js_ast.Expr{Loc: prop.Key.Loc, Data: &js_ast.EIdentifier{Ref: ref}}, prop.Key))
		js_parser_lower.go#L1730: 				prop.Key = js_ast.Expr{Loc: prop.Key.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser_lower.go#L1739: 				computedPropertyCache = js_ast.Expr{}
		js_parser_lower.go#L1750: 				var descriptorKey js_ast.Expr
		js_parser_lower.go#L1753: 					descriptorKey = js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: k.Value}}
		js_parser_lower.go#L1755: 					descriptorKey = js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: k.Value}}
		js_parser_lower.go#L1757: 					descriptorKey = js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: k.Ref}}
		js_parser_lower.go#L1769: 				var target js_ast.Expr
		js_parser_lower.go#L1773: 					target = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{Target: nameFunc(), Name: "prototype", NameLoc: loc}}
		js_parser_lower.go#L1776: 				decorator := p.callRuntime(loc, "__decorate", []js_ast.Expr{
		js_parser_lower.go#L1804: 				var target js_ast.Expr
		js_parser_lower.go#L1808: 					target = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L1812: 				var init js_ast.Expr
		js_parser_lower.go#L1816: 					init = js_ast.Expr{Loc: loc, Data: &js_ast.EUndefined{}}
		js_parser_lower.go#L1820: 				var expr js_ast.Expr
		js_parser_lower.go#L1832: 						js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser_lower.go#L1833: 						js_ast.Expr{Loc: loc, Data: &js_ast.ENew{Target: js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.weakMapRef}}}},
		js_parser_lower.go#L1838: 					expr = js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L1839: 						Target: js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L1840: 							Target:  js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser_lower.go#L1844: 						Args: []js_ast.Expr{
		js_parser_lower.go#L1852: 						expr = p.callRuntime(loc, "__publicField", []js_ast.Expr{target, prop.Key})
		js_parser_lower.go#L1854: 						expr = p.callRuntime(loc, "__publicField", []js_ast.Expr{target, prop.Key, init})
		js_parser_lower.go#L1858: 						target = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L1864: 						target = js_ast.Expr{Loc: loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L1908: 						js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser_lower.go#L1909: 						js_ast.Expr{Loc: loc, Data: &js_ast.ENew{Target: js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: p.weakSetRef}}}},
		js_parser_lower.go#L1914: 					var target js_ast.Expr
		js_parser_lower.go#L1918: 						target = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L1922: 					expr := js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L1923: 						Target: js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L1924: 							Target:  js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser_lower.go#L1928: 						Args: []js_ast.Expr{
		js_parser_lower.go#L1959: 					js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: methodRef}},
		js_parser_lower.go#L1973: 										js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EDot{
		js_parser_lower.go#L1974: 											Target:  js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EThis{}},
		js_parser_lower.go#L1978: 										js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}},
		js_parser_lower.go#L2005: 				Key:      js_ast.Expr{Loc: classLoc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16("constructor")}},
		js_parser_lower.go#L2006: 				Value:    &js_ast.Expr{Loc: classLoc, Data: ctor},
		js_parser_lower.go#L2013: 				ctor.Fn.Body.Stmts = append(ctor.Fn.Body.Stmts, js_ast.Stmt{Loc: classLoc, Data: &js_ast.SExpr{Value: js_ast.Expr{Loc: classLoc, Data: &js_ast.ECall{
		js_parser_lower.go#L2014: 					Target: js_ast.Expr{Loc: classLoc, Data: &js_ast.ESuper{}},
		js_parser_lower.go#L2015: 					Args:   []js_ast.Expr{{Loc: classLoc, Data: &js_ast.ESpread{Value: js_ast.Expr{Loc: classLoc, Data: &js_ast.EIdentifier{Ref: argumentsRef}}}}},
		js_parser_lower.go#L2053: 		var nameToJoin js_ast.Expr
		js_parser_lower.go#L2120: 		init := &js_ast.Expr{Loc: classLoc, Data: &classExpr}
		js_parser_lower.go#L2166: 			init = &js_ast.Expr{Loc: classLoc, Data: &js_ast.EIdentifier{Ref: captureRef}}
		js_parser_lower.go#L2230: 			js_ast.Expr{Loc: nameForClassDecorators.Loc, Data: &js_ast.EIdentifier{Ref: nameForClassDecorators.Ref}},
		js_parser_lower.go#L2231: 			p.callRuntime(classLoc, "__decorate", []js_ast.Expr{
		js_parser_lower.go#L2264: 	return stmts, js_ast.Expr{}
		js_parser_lower.go#L2267: func (p *parser) shouldLowerSuperPropertyAccess(expr js_ast.Expr) bool {
		js_parser_lower.go#L2275: func (p *parser) lowerSuperPropertyAccess(loc logger.Loc, key js_ast.Expr) js_ast.Expr {
		js_parser_lower.go#L2281: 	return js_ast.Expr{Loc: loc, Data: &js_ast.ECall{
		js_parser_lower.go#L2282: 		Target: js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: *p.fnOrArrowDataVisit.superIndexRef}},
		js_parser_lower.go#L2283: 		Args:   []js_ast.Expr{key},
		js_parser_lower.go#L2288: 	var key js_ast.Expr
		js_parser_lower.go#L2296: 		key = js_ast.Expr{Loc: e.NameLoc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(e.Name)}}
		js_parser_lower.go#L2315: 	thisExpr := js_ast.Expr{Loc: call.Target.Loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L2316: 	call.Args = append([]js_ast.Expr{thisExpr}, call.Args...)
		json_parser.go#L32: func (p *jsonParser) parseExpr() js_ast.Expr {
		json_parser.go#L38: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: false}}
		json_parser.go#L42: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: true}}
		json_parser.go#L46: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENull{}}
		json_parser.go#L51: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EString{Value: value}}
		json_parser.go#L56: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: value}}
		json_parser.go#L62: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENumber{Value: -value}}
		json_parser.go#L67: 		items := []js_ast.Expr{}
		json_parser.go#L90: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EArray{
		json_parser.go#L116: 			key := js_ast.Expr{Loc: keyRange.Loc, Data: &js_ast.EString{Value: keyString}}
		json_parser.go#L142: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EObject{
		json_parser.go#L149: 		return js_ast.Expr{}
		json_parser.go#L158: func ParseJSON(log logger.Log, source logger.Source, options JSONOptions) (result js_ast.Expr, ok bool) {
		ts_parser.go#L747: func (p *parser) parseTypeScriptDecorators() []js_ast.Expr {
		ts_parser.go#L748: 	var tsDecorators []js_ast.Expr
		ts_parser.go#L838: 	value := js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EIdentifier{Ref: p.storeNameInRef(name)}}
		ts_parser.go#L844: 		path := js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.EString{Value: p.lexer.StringLiteral}}
		ts_parser.go#L849: 			Args:   []js_ast.Expr{path},
		ts_parser.go#L1005: 	var argExpr js_ast.Expr
		ts_parser.go#L1010: 			js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: nameRef}},
		ts_parser.go#L1011: 			js_ast.Expr{Loc: nameLoc, Data: &js_ast.EBinary{
		ts_parser.go#L1013: 				Left: js_ast.Expr{Loc: nameLoc, Data: &js_ast.EDot{
		ts_parser.go#L1014: 					Target:  js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: *p.enclosingNamespaceArgRef}},
		ts_parser.go#L1019: 					js_ast.Expr{Loc: nameLoc, Data: &js_ast.EDot{
		ts_parser.go#L1020: 						Target:  js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: *p.enclosingNamespaceArgRef}},
		ts_parser.go#L1024: 					js_ast.Expr{Loc: nameLoc, Data: &js_ast.EObject{}},
		ts_parser.go#L1033: 		argExpr = js_ast.Expr{Loc: nameLoc, Data: &js_ast.EBinary{
		ts_parser.go#L1035: 			Left: js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: nameRef}},
		ts_parser.go#L1037: 				js_ast.Expr{Loc: nameLoc, Data: &js_ast.EIdentifier{Ref: nameRef}},
		ts_parser.go#L1038: 				js_ast.Expr{Loc: nameLoc, Data: &js_ast.EObject{}},
		ts_parser.go#L1046: 	stmts = append(stmts, js_ast.Stmt{Loc: stmtLoc, Data: &js_ast.SExpr{Value: js_ast.Expr{Loc: stmtLoc, Data: &js_ast.ECall{
		ts_parser.go#L1047: 		Target: js_ast.Expr{Loc: stmtLoc, Data: &js_ast.EFunction{Fn: js_ast.Fn{
		ts_parser.go#L1051: 		Args: []js_ast.Expr{argExpr},

	github.com/evanw/esbuild/internal/js_printer
		js_printer.go#L1369: func (p *printer) printExpr(expr js_ast.Expr, level js_ast.L, flags int) {
		js_printer.go#L2119: func (p *printer) isUnboundEvalIdentifier(value js_ast.Expr) bool {

	github.com/evanw/esbuild/internal/resolver
		resolver.go#L1160: func getProperty(json js_ast.Expr, name string) (js_ast.Expr, logger.Loc, bool) {
		resolver.go#L1169: 	return js_ast.Expr{}, logger.Loc{}, false
		resolver.go#L1172: func getString(json js_ast.Expr) (string, bool) {
		resolver.go#L1179: func getBool(json js_ast.Expr) (bool, bool) {