import {
    AccessExpression,
    addEmitFlags,
    BinaryExpression,
    Bundle,
    CallExpression,
    cast,
    chainBundle,
    Debug,
    DeleteExpression,
    EmitFlags,
    Expression,
    isCallChain,
    isExpression,
    isGeneratedIdentifier,
    isIdentifier,
    isNonNullChain,
    isOptionalChain,
    isParenthesizedExpression,
    isSimpleCopiableExpression,
    isSyntheticReference,
    isTaggedTemplateExpression,
    Node,
    OptionalChain,
    OuterExpressionKinds,
    ParenthesizedExpression,
    setOriginalNode,
    setTextRange,
    skipParentheses,
    skipPartiallyEmittedExpressions,
    SourceFile,
    SyntaxKind,
    TransformationContext,
    TransformFlags,
    visitEachChild,
    visitNode,
    visitNodes,
    VisitResult,
} from "../_namespaces/ts.js";

/** @internal */
export function transformES2020(context: TransformationContext): (x: SourceFile | Bundle) => SourceFile | Bundle {
    const {
        factory,
        hoistVariableDeclaration,
    } = context;

    return chainBundle(context, transformSourceFile);

    function transformSourceFile(node: SourceFile) {
