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, .)
        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, )
