beginCompilationUnit(f)
  beginMetadataStar(f)
  endMetadataStar(0)
  beginTopLevelMember(f)
    beginTopLevelMethod(, null)
      handleNoType()
      handleIdentifier(f, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        handleIdentifier(foo, expression)
        handleNoTypeArguments(!)
        handleNoArguments(!)
        handleSend(foo, !)
        handleNonNullAssertExpression(!)
        handleParenthesizedExpression(()
        handleIdentifier(bar, expressionContinuation)
        handleNoTypeArguments(!)
        handleNoArguments(!)
        handleSend(bar, !)
      endBinaryExpression(.)
      handleNonNullAssertExpression(!)
      handleParenthesizedExpression(()
      handleIdentifier(arg, expression)
      handleNoTypeArguments(])
      handleNoArguments(])
      handleSend(arg, ])
      handleIndexedExpression([, ])
      handleParenthesizedExpression(()
      handleNonNullAssertExpression(!)
      handleParenthesizedExpression(()
      handleIdentifier(arg2, expression)
      handleNoTypeArguments(])
      handleNoArguments(])
      handleSend(arg2, ])
      handleIndexedExpression([, ])
      handleExpressionStatement(;)
    endBlockFunctionBody(1, {, })
  endTopLevelMethod(f, null, })
endTopLevelDeclaration()
endCompilationUnit(1, )
