beginCompilationUnit(f)
  beginMetadataStar(f)
  endMetadataStar(0)
  beginTopLevelMember(f)
    beginTopLevelMethod(, null, null)
      handleNoType()
      handleIdentifier(f, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
        beginMetadataStar(x)
        endMetadataStar(0)
        beginFormalParameter(x, MemberKind.TopLevelMethod, null, null, null)
          handleNoType(()
          handleIdentifier(x, formalParameterDeclaration)
          handleFormalParameterWithoutValue())
        endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
      endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginSwitchExpression(switch)
        handleIdentifier(x, expression)
        handleNoTypeArguments())
        handleNoArguments())
        handleSend(x, x)
        handleParenthesizedCondition((, null, null)
        beginSwitchExpressionBlock({)
          beginSwitchExpressionCase()
            beginPattern({)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(_)
              handleType(int, null)
              handleWildcardPattern(null, _)
            endPattern(_)
            handleSwitchExpressionCasePattern(_)
            handleLiteralInt(0)
          endSwitchExpressionCase(int, null, =>, 0)
          beginSwitchExpressionCase()
            beginPattern(,)
              handleNoType(_)
              handleWildcardPattern(null, _)
            endPattern(_)
            handleSwitchExpressionCasePattern(_)
            handleLiteralInt(1)
          endSwitchExpressionCase(_, null, =>, 1)
        endSwitchExpressionBlock(2, {, })
      endSwitchExpression(switch, })
      handleExpressionFunctionBody(=>, ;)
    endTopLevelMethod(f, null, ;)
  endTopLevelDeclaration(;)
endCompilationUnit(1, )
