github.com/evanw/esbuild/internal/js_ast.Expr.Data (field)

892 uses

	github.com/evanw/esbuild/internal/js_ast (current package)
		js_ast.go#L378: 	Data E
		js_ast.go#L683: 	switch e := value.Data.(type) {
		js_ast.go#L695: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpAssign, Left: a, Right: b}}
		js_ast.go#L710: 	return Expr{Loc: expr.Loc, Data: &EUnary{Op: UnOpNot, Value: expr}}
		js_ast.go#L719: 	switch e := expr.Data.(type) {
		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#L780: 	switch e := a.Data.(type) {
		js_ast.go#L809: 	switch e := a.Data.(type) {
		js_ast.go#L845: 	switch e := a.Data.(type) {
		js_ast.go#L879: 	if comma, ok := a.Data.(*EBinary); ok && comma.Op == BinOpComma {
		js_ast.go#L886: 	if binary, ok := b.Data.(*EBinary); ok && binary.Op == op {
		js_ast.go#L896: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: op, Left: a, Right: b}}
		js_ast.go#L900: 	return Expr{Loc: a.Loc, Data: &EBinary{Op: BinOpComma, Left: a, Right: b}}
		js_ast.go#L1200: 		if call, ok := expr.Value.Data.(*ECall); ok {
		js_ast.go#L1201: 			if _, ok := call.Target.Data.(*ESuper); ok {

	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#L1494: 	if object, ok := jsonValue.Data.(*js_ast.EObject); ok {
		linker.go#L1498: 			if str, ok := property.Key.Data.(*js_ast.EString); ok && (!file.isEntryPoint || js_lexer.IsIdentifierUTF16(str.Value)) {
		linker.go#L1502: 				clone.Properties[i].Value = &js_ast.Expr{Loc: property.Key.Loc, Data: &js_ast.EIdentifier{Ref: export.ref}}
		linker.go#L1505: 		jsonValue.Data = &clone
		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#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#L1728: 				{Data: &js_ast.EIdentifier{Ref: repr.ast.ExportsRef}},
		linker.go#L1729: 				{Data: &js_ast.EObject{
		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#L3090: 										{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: repr.ast.ExportsRef}},
		linker.go#L3091: 										{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: s.NamespaceRef}},
		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#L3111: 										{Loc: stmt.Loc, Data: &js_ast.EIdentifier{Ref: repr.ast.ExportsRef}},
		linker.go#L3112: 										{Loc: record.Range.Loc, Data: &js_ast.ERequire{ImportRecordIndex: s.ImportRecordIndex}},
		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/js_parser
		js_parser.go#L531: 	switch e := expr.Data.(type) {
		js_parser.go#L586: 	switch a := left.Data.(type) {
		js_parser.go#L588: 		_, ok := right.Data.(*js_ast.ENull)
		js_parser.go#L592: 		_, ok := right.Data.(*js_ast.EUndefined)
		js_parser.go#L596: 		b, ok := right.Data.(*js_ast.EBoolean)
		js_parser.go#L600: 		b, ok := right.Data.(*js_ast.ENumber)
		js_parser.go#L604: 		b, ok := right.Data.(*js_ast.EString)
		js_parser.go#L608: 		b, ok := right.Data.(*js_ast.EBigInt)
		js_parser.go#L612: 		b, ok := right.Data.(*js_ast.EIdentifier)
		js_parser.go#L616: 		if b, ok := right.Data.(*js_ast.EDot); ok && a.OptionalChain == b.OptionalChain && a.Name == b.Name {
		js_parser.go#L622: 		if b, ok := right.Data.(*js_ast.EIndex); ok && a.OptionalChain == b.OptionalChain {
		js_parser.go#L705: 			if isNullOrUndefined, _, ok := toNullOrUndefinedWithSideEffects(e.Right.Data); ok {
		js_parser.go#L747: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Value.Data); ok {
		js_parser.go#L756: 			if boolean, _, ok := toBooleanWithSideEffects(e.Right.Data); ok && boolean {
		js_parser.go#L762: 			if boolean, _, ok := toBooleanWithSideEffects(e.Right.Data); ok && !boolean {
		js_parser.go#L768: 			if boolean, _, ok := toBooleanWithSideEffects(e.Right.Data); ok {
		js_parser.go#L872: 			return isPrimitiveWithSideEffects(e.Left.Data) && isPrimitiveWithSideEffects(e.Right.Data)
		js_parser.go#L875: 			return isPrimitiveWithSideEffects(e.Right.Data)
		js_parser.go#L879: 		return isPrimitiveWithSideEffects(e.Yes.Data) && isPrimitiveWithSideEffects(e.No.Data)
		js_parser.go#L927: 			a.Name == b.Name && valuesLookTheSame(a.Target.Data, b.Target.Data) {
		js_parser.go#L933: 			valuesLookTheSame(a.Target.Data, b.Target.Data) && valuesLookTheSame(a.Index.Data, b.Index.Data) {
		js_parser.go#L938: 		if b, ok := right.(*js_ast.EIf); ok && valuesLookTheSame(a.Test.Data, b.Test.Data) &&
		js_parser.go#L939: 			valuesLookTheSame(a.Yes.Data, b.Yes.Data) && valuesLookTheSame(a.No.Data, b.No.Data) {
		js_parser.go#L944: 		if b, ok := right.(*js_ast.EUnary); ok && a.Op == b.Op && valuesLookTheSame(a.Value.Data, b.Value.Data) {
		js_parser.go#L949: 		if b, ok := right.(*js_ast.EBinary); ok && a.Op == b.Op && valuesLookTheSame(a.Left.Data, b.Left.Data) &&
		js_parser.go#L950: 			valuesLookTheSame(a.Right.Data, b.Right.Data) {
		js_parser.go#L956: 			len(a.Args) == len(b.Args) && valuesLookTheSame(a.Target.Data, b.Target.Data) {
		js_parser.go#L958: 				if !valuesLookTheSame(a.Args[i].Data, b.Args[i].Data) {
		js_parser.go#L982: 		return ok && (a.Value == nil) == (b.Value == nil) && (a.Value == nil || valuesLookTheSame(a.Value.Data, b.Value.Data))
		js_parser.go#L986: 		return ok && valuesLookTheSame(a.Value.Data, b.Value.Data)
		js_parser.go#L993: 	switch expr.Data.(type) {
		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#L1671: 	switch k := key.Data.(type) {
		js_parser.go#L1696: 	value := js_ast.Expr{Loc: loc, Data: &js_ast.EString{
		js_parser.go#L1725: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.ENumber{Value: p.lexer.Number}}
		js_parser.go#L1726: 		p.checkForLegacyOctalLiteral(key.Data)
		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#L1753: 			if _, ok := expr.Data.(*js_ast.EIdentifier); ok {
		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#L1887: 			if str, ok := key.Data.(*js_ast.EString); ok && (js_lexer.UTF16EqualsString(str.Value, "constructor") ||
		js_parser.go#L1906: 		if private, ok := key.Data.(*js_ast.EPrivateIdentifier); ok {
		js_parser.go#L1943: 			if str, ok := key.Data.(*js_ast.EString); ok {
		js_parser.go#L1984: 		value := js_ast.Expr{Loc: loc, Data: &js_ast.EFunction{Fn: fn}}
		js_parser.go#L2005: 		if private, ok := key.Data.(*js_ast.EPrivateIdentifier); ok {
		js_parser.go#L2083: 		key = js_ast.Expr{Loc: p.lexer.Loc(), Data: &js_ast.ENumber{Value: p.lexer.Number}}
		js_parser.go#L2084: 		p.checkForLegacyOctalLiteral(key.Data)
		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#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#L2278: 	return js_ast.Expr{Loc: loc, Data: &js_ast.EFunction{Fn: fn}}
		js_parser.go#L2331: 			item = js_ast.Expr{Loc: itemLoc, Data: &js_ast.ESpread{Value: item}}
		js_parser.go#L2383: 			if spread, ok := item.Data.(*js_ast.ESpread); ok {
		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#L2461: 	if assign, ok := expr.Data.(*js_ast.EBinary); ok && assign.Op == js_ast.BinOpAssign {
		js_parser.go#L2482: 	switch e := expr.Data.(type) {
		js_parser.go#L2500: 			if i, ok := item.Data.(*js_ast.ESpread); ok {
		js_parser.go#L2503: 				if _, ok := item.Data.(*js_ast.EIdentifier); !ok {
		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#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#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#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#L2802: 		p.checkForLegacyOctalLiteral(value.Data)
		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#L2840: 		if index, ok := value.Data.(*js_ast.EIndex); ok {
		js_parser.go#L2841: 			if private, ok := index.Index.Data.(*js_ast.EPrivateIdentifier); ok {
		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#L2950: 		return js_ast.Expr{Loc: loc, Data: &js_ast.ENew{Target: target, Args: args}}
		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#L3216: 	return js_ast.Expr{Loc: loc, Data: &js_ast.EYield{Value: value, IsStar: isStar}}
		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#L3301: 		switch e := expr.Data.(type) {
		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#L3349: 				if _, ok := left.Data.(*js_ast.ESuper); ok {
		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#L3910: 				if e, ok := left.Data.(*js_ast.EUnary); ok && e.Op == js_ast.UnOpNot {
		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#L3927: 				if e, ok := left.Data.(*js_ast.EUnary); ok && e.Op == js_ast.UnOpNot {
		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#L3994: 	expr := js_ast.Expr{Loc: letRange.Loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L4015: 			arg = js_ast.Expr{Loc: loc, Data: &js_ast.ESpread{Value: arg}}
		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#L4098: 				key := js_ast.Expr{Loc: keyRange.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(p.lexer.Identifier)}}
		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#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#L4866: 				if key, ok := property.Key.Data.(*js_ast.EString); ok && js_lexer.UTF16EqualsString(key.Value, "constructor") {
		js_parser.go#L5238: 				if _, ok := expr.Data.(*js_ast.EIdentifier); ok && (p.lexer.Token == js_lexer.TClass || opts.tsDecorators != nil) {
		js_parser.go#L5992: 			if ident, ok := expr.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L6211: 				if str, ok := expr.Value.Data.(*js_ast.EString); ok && !str.PreferTemplate {
		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#L7024: 					if not, ok := prevS.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7030: 					if boolean, ok := checkEqualityIfNoSideEffects(left.Data, right.Data); ok && boolean {
		js_parser.go#L7035: 						if comma, ok := prevS.Test.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L7088: 					if not, ok := prevS.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7094: 					if comma, ok := prevS.Test.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L7180: 	switch e := expr.Data.(type) {
		js_parser.go#L7369: 				if _, ok := value.Data.(*js_ast.EString); ok {
		js_parser.go#L7572: 			if unary, ok := ifS.Test.Data.(*js_ast.EUnary); ok && unary.Op == js_ast.UnOpNot {
		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#L7625: 	if boolean, sideEffects, ok := toBooleanWithSideEffects(s.Test.Data); ok {
		js_parser.go#L7632: 					if test := p.simplifyUnusedExpr(s.Test); test.Data != nil {
		js_parser.go#L7646: 					if test := p.simplifyUnusedExpr(s.Test); test.Data != nil {
		js_parser.go#L7663: 			if not, ok := s.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7692: 			if not, ok := s.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7703: 			if not, ok := s.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7719: 			if not, ok := s.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7739: 	if comma, ok := e.Test.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L7748: 	if not, ok := e.Test.Data.(*js_ast.EUnary); ok && not.Op == js_ast.UnOpNot {
		js_parser.go#L7753: 	if valuesLookTheSame(e.Yes.Data, e.No.Data) {
		js_parser.go#L7765: 	if yes, ok := e.Yes.Data.(*js_ast.EBoolean); ok {
		js_parser.go#L7766: 		if no, ok := e.No.Data.(*js_ast.EBoolean); ok {
		js_parser.go#L7776: 	if id, ok := e.Test.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L7778: 		if id2, ok := e.Yes.Data.(*js_ast.EIdentifier); ok && id.Ref == id2.Ref {
		js_parser.go#L7783: 		if id2, ok := e.No.Data.(*js_ast.EIdentifier); ok && id.Ref == id2.Ref {
		js_parser.go#L7789: 	if yesIf, ok := e.Yes.Data.(*js_ast.EIf); ok && valuesLookTheSame(yesIf.No.Data, e.No.Data) {
		js_parser.go#L7792: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7796: 	if noIf, ok := e.No.Data.(*js_ast.EIf); ok && valuesLookTheSame(e.Yes.Data, noIf.Yes.Data) {
		js_parser.go#L7799: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7803: 	if comma, ok := e.No.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma && valuesLookTheSame(e.Yes.Data, comma.Right.Data) {
		js_parser.go#L7811: 	if comma, ok := e.Yes.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma && valuesLookTheSame(comma.Right.Data, e.No.Data) {
		js_parser.go#L7819: 	if binary, ok := e.Yes.Data.(*js_ast.EBinary); ok && binary.Op == js_ast.BinOpLogicalOr &&
		js_parser.go#L7820: 		valuesLookTheSame(binary.Right.Data, e.No.Data) {
		js_parser.go#L7821: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L7829: 	if binary, ok := e.No.Data.(*js_ast.EBinary); ok && binary.Op == js_ast.BinOpLogicalAnd &&
		js_parser.go#L7830: 		valuesLookTheSame(e.Yes.Data, binary.Right.Data) {
		js_parser.go#L7831: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser.go#L7839: 	if y, ok := e.Yes.Data.(*js_ast.ECall); ok && len(y.Args) > 0 {
		js_parser.go#L7840: 		if n, ok := e.No.Data.(*js_ast.ECall); ok && len(n.Args) == len(y.Args) &&
		js_parser.go#L7841: 			y.HasSameFlagsAs(n) && valuesLookTheSame(y.Target.Data, n.Target.Data) {
		js_parser.go#L7849: 					if !valuesLookTheSame(y.Args[i].Data, n.Args[i].Data) {
		js_parser.go#L7855: 					yesSpread, yesIsSpread := y.Args[0].Data.(*js_ast.ESpread)
		js_parser.go#L7856: 					noSpread, noIsSpread := n.Args[0].Data.(*js_ast.ESpread)
		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#L7880: 		if binary, ok := e.Test.Data.(*js_ast.EBinary); ok {
		js_parser.go#L7884: 				if _, ok := binary.Right.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Left) && valuesLookTheSame(binary.Left.Data, e.No.Data) {
		js_parser.go#L7889: 				if _, ok := binary.Left.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Right) && valuesLookTheSame(binary.Right.Data, e.No.Data) {
		js_parser.go#L7895: 				if _, ok := binary.Right.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Left) && valuesLookTheSame(binary.Left.Data, e.Yes.Data) {
		js_parser.go#L7900: 				if _, ok := binary.Left.Data.(*js_ast.ENull); ok && p.exprCanBeRemovedIfUnused(binary.Right) && valuesLookTheSame(binary.Right.Data, e.Yes.Data) {
		js_parser.go#L7907: 	return js_ast.Expr{Loc: loc, Data: e}
		js_parser.go#L7911: 	switch e := expr.Data.(type) {
		js_parser.go#L7931: 		{Loc: value.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(name)}},
		js_parser.go#L7935: 	value.Data.(*js_ast.ECall).CanBeUnwrappedIfUnused = true
		js_parser.go#L7942: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}},
		js_parser.go#L7943: 			{Loc: loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(name)}},
		js_parser.go#L8067: 				if id, ok := (*s.Value.Expr).Data.(*js_ast.EIdentifier); ok {
		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#L8189: 						if _, ok := d.Value.Data.(*js_ast.EUndefined); ok {
		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#L8240: 			if s.Value.Data == nil {
		js_parser.go#L8254: 				if _, ok := s.Value.Data.(*js_ast.EUndefined); ok {
		js_parser.go#L8300: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(s.Test.Data); ok && boolean && sideEffects == noSideEffects {
		js_parser.go#L8326: 		boolean, _, ok := toBooleanWithSideEffects(s.Test.Data)
		js_parser.go#L8375: 				if boolean, sideEffects, ok := toBooleanWithSideEffects(s.Test.Data); ok && boolean && sideEffects == noSideEffects {
		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#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#L8595: 				switch e := value.Value.Data.(type) {
		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#L8740: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: ref}}
		js_parser.go#L8751: 	if value.Data == nil {
		js_parser.go#L8759: 	switch e := value.Data.(type) {
		js_parser.go#L8796: 	if e, ok := expr.Data.(*js_ast.EIf); ok {
		js_parser.go#L8805: 	if a.Data == nil {
		js_parser.go#L8808: 	if b.Data == nil {
		js_parser.go#L8843: 		if expr.Data == nil {
		js_parser.go#L8852: 	switch e := value.Data.(type) {
		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#L8875: 			return js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: e.Ref}}
		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#L8918: 				if expr.Data == nil {
		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#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#L9006: 		private, isPrivate := property.Key.Data.(*js_ast.EPrivateIdentifier)
		js_parser.go#L9017: 				if str, ok := key.Data.(*js_ast.EString); ok && js_lexer.IsIdentifierUTF16(str.Value) {
		js_parser.go#L9040: 			if str, ok := property.Key.Data.(*js_ast.EString); ok {
		js_parser.go#L9164: 	switch e := expr.Data.(type) {
		js_parser.go#L9238: 			value = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser.go#L9268: 	if typeof, ok := a.Data.(*js_ast.EUnary); ok && typeof.Op == js_ast.UnOpTypeof {
		js_parser.go#L9269: 		if str, ok := b.Data.(*js_ast.EString); ok {
		js_parser.go#L9297: 	if boolean, ok := e.Right.Data.(*js_ast.EBoolean); ok && js_ast.IsBooleanValue(e.Left) {
		js_parser.go#L9313: 	switch e := value.Data.(type) {
		js_parser.go#L9386: 	if id, ok := target.Data.(*js_ast.EIdentifier); ok {
		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#L9471: 	switch l := left.Data.(type) {
		js_parser.go#L9473: 		switch r := right.Data.(type) {
		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#L9488: 			switch r := right.Data.(type) {
		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#L9524: 	switch e := expr.Data.(type) {
		js_parser.go#L9528: 			if e2, ok2 := e.Value.Data.(*js_ast.EUnary); ok2 && e2.Op == js_ast.UnOpNot {
		js_parser.go#L9538: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Right.Data); ok {
		js_parser.go#L9549: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Right.Data); ok {
		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#L9703: 	if a, ok := left.Data.(*js_ast.EBinary); ok && a.Op == op {
		js_parser.go#L9704: 		if b, ok := right.Data.(*js_ast.EBinary); ok && b.Op == op {
		js_parser.go#L9705: 			if idA, ok := a.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L9706: 				if idB, ok := b.Left.Data.(*js_ast.EIdentifier); ok && idA.Ref == idB.Ref {
		js_parser.go#L9708: 					if _, ok := a.Right.Data.(*js_ast.ENull); ok {
		js_parser.go#L9709: 						if _, ok := b.Right.Data.(*js_ast.EUndefined); ok {
		js_parser.go#L9715: 					if _, ok := a.Right.Data.(*js_ast.EUndefined); ok {
		js_parser.go#L9716: 						if _, ok := b.Right.Data.(*js_ast.ENull); ok {
		js_parser.go#L9730: 		if spread, ok := value.Data.(*js_ast.ESpread); ok {
		js_parser.go#L9731: 			if array, ok := spread.Value.Data.(*js_ast.EArray); ok {
		js_parser.go#L9733: 					if _, ok := item.Data.(*js_ast.EMissing); ok {
		js_parser.go#L9734: 						results = append(results, js_ast.Expr{Loc: item.Loc, Data: &js_ast.EUndefined{}})
		js_parser.go#L9757: 	switch e := expr.Data.(type) {
		js_parser.go#L9772: 	switch e := expr.Data.(type) {
		js_parser.go#L9801: 			if str, ok := part.Value.Data.(*js_ast.EString); ok {
		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#L9833: 	switch e := expr.Data.(type) {
		js_parser.go#L9850: 			if r, ok := p.legacyOctalLiterals[expr.Data]; ok {
		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#L9923: 					if _, ok := new.Data.(*js_ast.EIdentifier); in.assignTarget == js_ast.AssignTargetNone || ok {
		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#L10021: 		if e.Op == js_ast.BinOpLogicalAnd && e.Left.Data == p.typeofRequireEqualsFn {
		js_parser.go#L10022: 			p.typeofRequireEqualsFnTarget = e.Right.Data
		js_parser.go#L10028: 			if boolean, _, ok := toBooleanWithSideEffects(e.Left.Data); ok && boolean {
		js_parser.go#L10039: 			if boolean, _, ok := toBooleanWithSideEffects(e.Left.Data); ok && !boolean {
		js_parser.go#L10050: 			if isNullOrUndefined, _, ok := toNullOrUndefinedWithSideEffects(e.Left.Data); ok && !isNullOrUndefined {
		js_parser.go#L10069: 			if isPrimitiveToReorder(e.Left.Data) && !isPrimitiveToReorder(e.Right.Data) {
		js_parser.go#L10081: 				if e.Left.Data == nil {
		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#L10093: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10100: 				if result && (e.Left.Data == p.typeofRequire || e.Right.Data == p.typeofRequire) {
		js_parser.go#L10104: 				return js_ast.Expr{Loc: expr.Loc, Data: data}, exprOut{}
		js_parser.go#L10114: 				if _, ok := e.Right.Data.(*js_ast.EUndefined); ok {
		js_parser.go#L10115: 					e.Right.Data = &js_ast.ENull{}
		js_parser.go#L10124: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10125: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: result}}, exprOut{}
		js_parser.go#L10145: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10146: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: !result}}, exprOut{}
		js_parser.go#L10156: 				if _, ok := e.Right.Data.(*js_ast.EUndefined); ok {
		js_parser.go#L10157: 					e.Right.Data = &js_ast.ENull{}
		js_parser.go#L10166: 			if result, ok := checkEqualityIfNoSideEffects(e.Left.Data, e.Right.Data); ok {
		js_parser.go#L10167: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EBoolean{Value: !result}}, exprOut{}
		js_parser.go#L10187: 			if isNullOrUndefined, sideEffects, ok := toNullOrUndefinedWithSideEffects(e.Left.Data); ok {
		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#L10204: 				if right, ok := e.Right.Data.(*js_ast.EBinary); ok && right.Op == js_ast.BinOpNullishCoalescing {
		js_parser.go#L10215: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Left.Data); ok {
		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#L10231: 				if right, ok := e.Right.Data.(*js_ast.EBinary); ok && right.Op == js_ast.BinOpLogicalOr {
		js_parser.go#L10245: 			if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Left.Data); ok {
		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#L10261: 				if right, ok := e.Right.Data.(*js_ast.EBinary); ok && right.Op == js_ast.BinOpLogicalAnd {
		js_parser.go#L10277: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: left + right}}, exprOut{}
		js_parser.go#L10286: 			if left, ok := e.Left.Data.(*js_ast.EBinary); ok && left.Op == js_ast.BinOpAdd {
		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#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#L10380: 			if id, ok := e.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L10481: 			if comma, ok := e.Left.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L10484: 					Data: &js_ast.EBinary{
		js_parser.go#L10496: 			if str, ok := e.Index.Data.(*js_ast.EString); ok && js_lexer.IsIdentifierUTF16(str.Value) {
		js_parser.go#L10497: 				return p.visitExprInOut(js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EDot{
		js_parser.go#L10514: 		if private, ok := e.Index.Data.(*js_ast.EPrivateIdentifier); ok {
		js_parser.go#L10567: 		if str, ok := e.Index.Data.(*js_ast.EString); ok {
		js_parser.go#L10580: 			if id, ok := e.Target.Data.(*js_ast.EIdentifier); ok && p.symbols[id.Ref.InnerIndex].Kind == js_ast.SymbolImport {
		js_parser.go#L10586: 		return js_ast.Expr{Loc: expr.Loc, Data: e}, out
		js_parser.go#L10591: 			p.typeofTarget = e.Value.Data
		js_parser.go#L10593: 			_, idBefore := e.Value.Data.(*js_ast.EIdentifier)
		js_parser.go#L10595: 			id, idAfter := e.Value.Data.(*js_ast.EIdentifier)
		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#L10605: 				if id, ok := e.Value.Data.(*js_ast.EIdentifier); ok && id.Ref == p.requireRef {
		js_parser.go#L10608: 					return js_ast.Expr{Loc: expr.Loc, Data: p.typeofRequire}, exprOut{}
		js_parser.go#L10612: 			if typeof, ok := typeofWithoutSideEffects(e.Value.Data); ok {
		js_parser.go#L10613: 				return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EString{Value: js_lexer.StringToUTF16(typeof)}}, exprOut{}
		js_parser.go#L10619: 			switch e2 := e.Value.Data.(type) {
		js_parser.go#L10621: 				if _, ok := e2.Target.Data.(*js_ast.ESuper); ok {
		js_parser.go#L10625: 				if _, ok := e2.Target.Data.(*js_ast.ESuper); ok {
		js_parser.go#L10636: 			p.deleteTarget = e.Value.Data
		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#L10678: 				if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Value.Data); ok && sideEffects == noSideEffects {
		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#L10694: 				if number, ok := toNumberWithoutSideEffects(e.Value.Data); ok {
		js_parser.go#L10695: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: number}}, exprOut{}
		js_parser.go#L10699: 				if number, ok := toNumberWithoutSideEffects(e.Value.Data); ok {
		js_parser.go#L10700: 					return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.ENumber{Value: -number}}, exprOut{}
		js_parser.go#L10730: 			if comma, ok := e.Value.Data.(*js_ast.EBinary); ok && comma.Op == js_ast.BinOpComma {
		js_parser.go#L10733: 					Data: &js_ast.EUnary{
		js_parser.go#L10773: 			p.cjsDotTarget = e.Target.Data
		js_parser.go#L10780: 					nextTarget: e.Target.Data,
		js_parser.go#L10785: 					nextTarget: e.Target.Data,
		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#L10832: 		if boolean, sideEffects, ok := toBooleanWithSideEffects(e.Test.Data); !ok {
		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#L10891: 		p.awaitTarget = e.Value.Data
		js_parser.go#L10896: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EYield{Value: &e.Value}}, exprOut{}
		js_parser.go#L10913: 			switch e2 := item.Data.(type) {
		js_parser.go#L10925: 					if id, ok := e2.Left.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L10961: 					if str, ok := key.Data.(*js_ast.EString); ok && js_lexer.UTF16EqualsString(str.Value, "__proto__") {
		js_parser.go#L10972: 					if str, ok := key.Data.(*js_ast.EString); ok && js_lexer.IsIdentifierUTF16(str.Value) {
		js_parser.go#L10982: 				if binary, ok := property.Value.Data.(*js_ast.EBinary); ok && binary.Op == js_ast.BinOpAssign {
		js_parser.go#L10997: 					if id, ok := property.Value.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L11022: 					if str, ok := property.Key.Data.(*js_ast.EString); ok {
		js_parser.go#L11053: 						switch v := property.Value.Data.(type) {
		js_parser.go#L11092: 			if str, ok := arg.Data.(*js_ast.EString); ok {
		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#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#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#L11172: 			return js_ast.Expr{Loc: arg.Loc, Data: &js_ast.EImport{
		js_parser.go#L11179: 		p.callTarget = e.Target.Data
		js_parser.go#L11183: 			nextTarget:      e.Target.Data,
		js_parser.go#L11191: 			if dot, ok := e.Target.Data.(*js_ast.EDot); ok && dot.OptionalChain == js_ast.OptionalChainNone && dot.Name == "resolve" {
		js_parser.go#L11192: 				p.resolveCallTarget = dot.Target.Data
		js_parser.go#L11197: 		_, wasIdentifierBeforeVisit := e.Target.Data.(*js_ast.EIdentifier)
		js_parser.go#L11212: 			if _, ok := arg.Data.(*js_ast.ESpread); ok {
		js_parser.go#L11220: 			if dot, ok := e.Target.Data.(*js_ast.EDot); ok {
		js_parser.go#L11221: 				if id, ok := dot.Target.Data.(*js_ast.EIdentifier); ok && id.Ref == p.requireRef {
		js_parser.go#L11223: 						if str, ok := e.Args[0].Data.(*js_ast.EString); ok {
		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#L11263: 			if id, ok := e.Target.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L11294: 		switch t := target.Data.(type) {
		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#L11332: 			if id, ok := e.Target.Data.(*js_ast.EIdentifier); ok && id.Ref == p.requireRef {
		js_parser.go#L11343: 							if str, ok := arg.Data.(*js_ast.EString); ok {
		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#L11448: 			return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EFunction{Fn: js_ast.Fn{
		js_parser.go#L11486: 		if id, ok := target.Data.(*js_ast.EIdentifier); ok && p.importItemsForNamespace[id.Ref] != nil {
		js_parser.go#L11524: 	expr := js_ast.Expr{Loc: loc, Data: defineFunc(config.DefineArgs{
		js_parser.go#L11529: 	if id, ok := expr.Data.(*js_ast.EIdentifier); ok {
		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#L11622: 	if a, ok := left.Data.(*js_ast.ENumber); ok {
		js_parser.go#L11623: 		if b, ok := right.Data.(*js_ast.ENumber); ok {
		js_parser.go#L12015: 					if dot, ok := value.Data.(*js_ast.EDot); ok {
		js_parser.go#L12023: 				if id, ok := value.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L12263: 	switch e := expr.Data.(type) {
		js_parser.go#L12392: 	switch e := expr.Data.(type) {
		js_parser.go#L12415: 				if result.Data == nil {
		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#L12432: 			if _, ok := spread.Data.(*js_ast.ESpread); ok {
		js_parser.go#L12436: 					if item.Data != nil {
		js_parser.go#L12465: 						if value.Data != nil {
		js_parser.go#L12473: 							property.Value.Data = &js_ast.ENumber{}
		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#L12505: 		if e.Yes.Data == nil && e.No.Data == nil {
		js_parser.go#L12510: 		if e.Yes.Data == nil {
		js_parser.go#L12515: 		if e.No.Data == nil {
		js_parser.go#L12527: 			if _, ok := e.Value.Data.(*js_ast.EIdentifier); ok {
		js_parser.go#L12548: 			if isPrimitiveWithSideEffects(e.Left.Data) && isPrimitiveWithSideEffects(e.Right.Data) {
		js_parser.go#L12557: 			if e.Right.Data == nil {
		js_parser.go#L12592: 	switch e := expr.Data.(type) {
		js_parser.go#L12595: 		return js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EString{}}, true
		js_parser.go#L12602: 			if _, rightIsString := e.Right.Data.(*js_ast.EString); rightIsString {
		js_parser.go#L12610: 					e.Right.Data = &js_ast.EString{}
		js_parser.go#L12747: 				Value:   &js_ast.Expr{Data: &js_ast.EObject{}},
		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#L312: 			if _, ok := arg.Binding.Data.(*js_ast.BIdentifier); !ok || (arg.Default != nil && couldPotentiallyThrow(arg.Default.Data)) {
		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#L400: 					item := js_ast.Expr{Loc: arg.Binding.Loc, Data: &js_ast.EIdentifier{Ref: id.Ref}}
		js_parser_lower.go#L402: 						item.Data = &js_ast.ESpread{Value: item}
		js_parser_lower.go#L406: 				forwardedArgs = js_ast.Expr{Loc: bodyLoc, Data: &js_ast.EArray{Items: items, IsSingleLine: true}}
		js_parser_lower.go#L415: 			{Loc: bodyLoc, Data: &js_ast.EFunction{Fn: fn}},
		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#L452: 	valueWhenUndefined := js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EUndefined{}}
		js_parser_lower.go#L466: 		switch e := expr.Data.(type) {
		js_parser_lower.go#L486: 			if private, ok := e.Index.Data.(*js_ast.EPrivateIdentifier); ok && p.isPrivateUnsupported(private) {
		js_parser_lower.go#L502: 			valueWhenUndefined = js_ast.Expr{Loc: loc, Data: &js_ast.EBoolean{Value: true}}
		js_parser_lower.go#L512: 	switch expr.Data.(type) {
		js_parser_lower.go#L545: 			switch e := expr.Data.(type) {
		js_parser_lower.go#L547: 				if _, ok := e.Target.Data.(*js_ast.ESuper); ok {
		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#L576: 				if _, ok := e.Target.Data.(*js_ast.ESuper); ok {
		js_parser_lower.go#L583: 					thisArg = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L590: 					if private, ok := e.Index.Data.(*js_ast.EPrivateIdentifier); ok && p.isPrivateUnsupported(private) {
		js_parser_lower.go#L597: 					expr = js_ast.Expr{Loc: loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L629: 		switch e := chain[i].Data.(type) {
		js_parser_lower.go#L631: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{
		js_parser_lower.go#L638: 			if private, ok := e.Index.Data.(*js_ast.EPrivateIdentifier); ok && p.isPrivateUnsupported(private) {
		js_parser_lower.go#L644: 					if _, ok := chain[i-1].Data.(*js_ast.ECall); ok {
		js_parser_lower.go#L654: 			result = js_ast.Expr{Loc: loc, Data: &js_ast.EIndex{
		js_parser_lower.go#L663: 			if i == len(chain)-1 && thisArg.Data != nil {
		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#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#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#L742: 	switch left := value.Data.(type) {
		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#L818: 		return targetWrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L832: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L845: 		return targetWrapFunc(js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L855: 		return js_ast.Expr{Loc: loc, Data: &js_ast.EBinary{
		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#L915: 		return js_ast.Expr{Loc: loc, Data: e}
		js_parser_lower.go#L927: 		if len(properties) > 0 || result.Data == nil {
		js_parser_lower.go#L928: 			if result.Data == nil {
		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#L951: 		result = p.callRuntime(loc, "__assign", []js_ast.Expr{result, {Loc: loc, Data: &js_ast.EObject{
		js_parser_lower.go#L968: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: private.Ref}},
		js_parser_lower.go#L969: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: fnRef}},
		js_parser_lower.go#L979: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: private.Ref}},
		js_parser_lower.go#L980: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: fnRef}},
		js_parser_lower.go#L987: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: private.Ref}},
		js_parser_lower.go#L1006: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: private.Ref}},
		js_parser_lower.go#L1008: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: fnRef}},
		js_parser_lower.go#L1015: 			{Loc: loc, Data: &js_ast.EIdentifier{Ref: private.Ref}},
		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#L1055: 	return targetWrapFunc(p.lowerPrivateSet(targetFunc(), loc, private, js_ast.Expr{Loc: value.Loc, Data: &js_ast.EBinary{
		js_parser_lower.go#L1065: 	if index, ok := target.Data.(*js_ast.EIndex); ok {
		js_parser_lower.go#L1066: 		if private, ok := index.Index.Data.(*js_ast.EPrivateIdentifier); ok && p.isPrivateUnsupported(private) {
		js_parser_lower.go#L1092: 	switch e := expr.Data.(type) {
		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#L1155: 				s.Value.Data = &js_ast.EIdentifier{Ref: ref}
		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#L1243: 	switch rootExpr.Data.(type) {
		js_parser_lower.go#L1254: 		switch e := expr.Data.(type) {
		js_parser_lower.go#L1273: 			containsRestBinding[expr.Data] = true
		js_parser_lower.go#L1286: 		if id, ok := expr.Data.(*js_ast.EIdentifier); ok {
		js_parser_lower.go#L1294: 		assign(js_ast.Expr{Loc: expr.Loc, Data: &js_ast.EIdentifier{Ref: ref}}, 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#L1326: 			{Loc: binding.Loc, Data: &js_ast.EArray{Items: keysToExclude, IsSingleLine: isSingleLine}}}))
		js_parser_lower.go#L1338: 		if binary, ok := binding.Data.(*js_ast.EBinary); ok && binary.Op == js_ast.BinOpAssign {
		js_parser_lower.go#L1345: 		binding.Data = &js_ast.EIdentifier{Ref: splitRef}
		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#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#L1396: 		binding.Data = &js_ast.EIdentifier{Ref: splitRef}
		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#L1434: 		switch e := expr.Data.(type) {
		js_parser_lower.go#L1439: 				if containsRestBinding[item.Data] {
		js_parser_lower.go#L1467: 				if containsRestBinding[property.Value.Data] {
		js_parser_lower.go#L1487: 	switch k := originalKey.Data.(type) {
		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#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#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#L1518: 			return p.callRuntime(loc, "__restKey", []js_ast.Expr{{Loc: loc, Data: &js_ast.EIdentifier{Ref: tempRef}}})
		js_parser_lower.go#L1543: 		e, _ := expr.Data.(*js_ast.EClass)
		js_parser_lower.go#L1621: 			nameFunc, wrapFunc = p.captureValueWithPossibleSideEffects(classLoc, 2, js_ast.Expr{Loc: classLoc, Data: classExpr})
		js_parser_lower.go#L1644: 				p.mergeSymbols(class.Name.Ref, name.Data.(*js_ast.EIdentifier).Ref)
		js_parser_lower.go#L1658: 			return js_ast.Expr{Loc: classLoc, Data: &js_ast.EIdentifier{Ref: class.Name.Ref}}
		js_parser_lower.go#L1668: 			if fn, ok := prop.Value.Data.(*js_ast.EFunction); ok {
		js_parser_lower.go#L1670: 				if key, ok := prop.Key.Data.(*js_ast.EString); ok {
		js_parser_lower.go#L1682: 								{Loc: decorator.Loc, Data: &js_ast.ENumber{Value: float64(i)}},
		js_parser_lower.go#L1696: 		private, _ := prop.Key.Data.(*js_ast.EPrivateIdentifier)
		js_parser_lower.go#L1716: 			mustLowerField || computedPropertyCache.Data != nil) {
		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#L1751: 				switch k := keyExprNoSideEffects.Data.(type) {
		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#L1773: 					target = js_ast.Expr{Loc: loc, Data: &js_ast.EDot{Target: nameFunc(), Name: "prototype", NameLoc: loc}}
		js_parser_lower.go#L1777: 					{Loc: loc, Data: &js_ast.EArray{Items: prop.TSDecorators}},
		js_parser_lower.go#L1780: 					{Loc: loc, Data: &js_ast.ENumber{Value: descriptorKind}},
		js_parser_lower.go#L1808: 					target = js_ast.Expr{Loc: loc, Data: &js_ast.EThis{}}
		js_parser_lower.go#L1816: 					init = js_ast.Expr{Loc: loc, Data: &js_ast.EUndefined{}}
		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#L1851: 					if _, ok := init.Data.(*js_ast.EUndefined); ok {
		js_parser_lower.go#L1857: 					if key, ok := prop.Key.Data.(*js_ast.EString); ok && !prop.IsComputed {
		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#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#L1959: 					js_ast.Expr{Loc: loc, Data: &js_ast.EIdentifier{Ref: methodRef}},
		js_parser_lower.go#L1963: 			} else if key, ok := prop.Key.Data.(*js_ast.EString); ok && js_lexer.UTF16EqualsString(key.Value, "constructor") {
		js_parser_lower.go#L1964: 				if fn, ok := prop.Value.Data.(*js_ast.EFunction); ok {
		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#L2037: 			if class.Properties[i].Value != nil && class.Properties[i].Value.Data == ctor {
		js_parser_lower.go#L2054: 		if didCaptureClassExpr || computedPropertyCache.Data != nil ||
		js_parser_lower.go#L2060: 		if computedPropertyCache.Data != nil {
		js_parser_lower.go#L2074: 		if nameToJoin.Data != nil {
		js_parser_lower.go#L2093: 		(computedPropertyCache.Data != nil ||
		js_parser_lower.go#L2105: 		keepNameStmt = p.keepStmtSymbolName(name.Loc, name.Data.(*js_ast.EIdentifier).Ref, nameToKeep)
		js_parser_lower.go#L2116: 		nameRef := name.Data.(*js_ast.EIdentifier).Ref
		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#L2210: 	if computedPropertyCache.Data != nil {
		js_parser_lower.go#L2230: 			js_ast.Expr{Loc: nameForClassDecorators.Loc, Data: &js_ast.EIdentifier{Ref: nameForClassDecorators.Ref}},
		js_parser_lower.go#L2232: 				{Loc: classLoc, Data: &js_ast.EArray{Items: class.TSDecorators}},
		js_parser_lower.go#L2233: 				{Loc: nameForClassDecorators.Loc, Data: &js_ast.EIdentifier{Ref: nameForClassDecorators.Ref}},
		js_parser_lower.go#L2269: 		_, isSuper := expr.Data.(*js_ast.ESuper)
		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#L2290: 	switch e := call.Target.Data.(type) {
		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#L2310: 	call.Target.Data = &js_ast.EDot{
		js_parser_lower.go#L2315: 	thisExpr := js_ast.Expr{Loc: call.Target.Loc, Data: &js_ast.EThis{}}
		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#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{
		sourcemap_parser.go#L20: 	obj, ok := expr.Data.(*js_ast.EObject)
		sourcemap_parser.go#L35: 		switch js_lexer.UTF16ToString(prop.Key.Data.(*js_ast.EString).Value) {
		sourcemap_parser.go#L41: 			if value, ok := prop.Value.Data.(*js_ast.ENumber); ok && value.Value == 3 {
		sourcemap_parser.go#L46: 			if value, ok := prop.Value.Data.(*js_ast.EString); ok {
		sourcemap_parser.go#L52: 			if value, ok := prop.Value.Data.(*js_ast.EArray); ok {
		sourcemap_parser.go#L55: 					if element, ok := item.Data.(*js_ast.EString); ok {
		sourcemap_parser.go#L64: 			if value, ok := prop.Value.Data.(*js_ast.EArray); ok {
		sourcemap_parser.go#L67: 					if element, ok := item.Data.(*js_ast.EString); ok {
		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#L847: 		value.Data = &js_ast.ECall{
		ts_parser.go#L856: 			value.Data = &js_ast.EDot{
		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{

	github.com/evanw/esbuild/internal/js_printer
		js_printer.go#L905: 					if str, ok := property.Key.Data.(*js_ast.EString); ok {
		js_printer.go#L1109: 		if fn, ok := item.Value.Data.(*js_ast.EFunction); item.IsMethod && ok {
		js_printer.go#L1127: 			if fn, ok := item.Value.Data.(*js_ast.EFunction); item.IsMethod && ok {
		js_printer.go#L1146: 	switch key := item.Key.Data.(type) {
		js_printer.go#L1158: 				switch e := item.Value.Data.(type) {
		js_printer.go#L1197: 		f, ok := item.Value.Data.(*js_ast.EFunction)
		js_printer.go#L1205: 		if fn, ok := item.Value.Data.(*js_ast.EFunction); item.IsMethod && ok {
		js_printer.go#L1372: 	switch e := expr.Data.(type) {
		js_printer.go#L1467: 		p.callTarget = e.Target.Data
		js_printer.go#L1605: 		if private, ok := e.Index.Data.(*js_ast.EPrivateIdentifier); ok {
		js_printer.go#L1730: 				_, ok := item.Data.(*js_ast.EMissing)
		js_printer.go#L2040: 			if _, ok := e.Left.Data.(*js_ast.EObject); ok {
		js_printer.go#L2063: 			if left, ok := e.Left.Data.(*js_ast.EBinary); ok && (left.Op == js_ast.BinOpLogicalOr || left.Op == js_ast.BinOpLogicalAnd) {
		js_printer.go#L2066: 			if right, ok := e.Right.Data.(*js_ast.EBinary); ok && (right.Op == js_ast.BinOpLogicalOr || right.Op == js_ast.BinOpLogicalAnd) {
		js_printer.go#L2072: 			if left, ok := e.Left.Data.(*js_ast.EUnary); ok && left.Op.UnaryAssignTarget() == js_ast.AssignTargetNone {
		js_printer.go#L2074: 			} else if _, ok := e.Left.Data.(*js_ast.EAwait); ok {
		js_printer.go#L2076: 			} else if _, ok := e.Left.Data.(*js_ast.EUndefined); ok {
		js_printer.go#L2079: 			} else if _, ok := e.Left.Data.(*js_ast.ENumber); ok {
		js_printer.go#L2084: 				if _, ok := e.Left.Data.(*js_ast.EBoolean); ok {
		js_printer.go#L2115: 		panic(fmt.Sprintf("Unexpected expression of type %T", expr.Data))
		js_printer.go#L2120: 	if id, ok := value.Data.(*js_ast.EIdentifier); ok {

	github.com/evanw/esbuild/internal/resolver
		resolver.go#L969: 		if browser, ok := browserJson.Data.(*js_ast.EObject); ok {
		resolver.go#L1009: 		switch data := sideEffectsJson.Data.(type) {
		resolver.go#L1032: 				item, ok := itemJson.Data.(*js_ast.EString)
		resolver.go#L1161: 	if obj, ok := json.Data.(*js_ast.EObject); ok {
		resolver.go#L1163: 			if key, ok := prop.Key.Data.(*js_ast.EString); ok && key.Value != nil &&
		resolver.go#L1173: 	if value, ok := json.Data.(*js_ast.EString); ok {
		resolver.go#L1180: 	if value, ok := json.Data.(*js_ast.EBoolean); ok {
		tsconfig_json.go#L120: 			if paths, ok := valueJSON.Data.(*js_ast.EObject); ok {
		tsconfig_json.go#L155: 						if array, ok := prop.Value.Data.(*js_ast.EArray); ok {

	github.com/evanw/esbuild/pkg/api
		api_impl.go#L424: 		switch e := expr.Data.(type) {