beginCompilationUnit(void)
  beginMetadataStar(void)
  endMetadataStar(0)
  beginTopLevelMember(void)
    beginTopLevelMethod(, null, null)
      handleVoidKeyword(void)
      handleIdentifier(foo, topLevelFunctionDeclaration)
      handleNoTypeVariables(()
      beginFormalParameters((, MemberKind.TopLevelMethod)
      endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      beginBlockFunctionBody({)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments())
            handleType(int, null)
            handleNoName())
          endRecordTypeEntry()
        endRecordType((, null, 2)
        beginVariablesDeclaration(record1, null, null)
          handleIdentifier(record1, localVariableDeclaration)
          beginInitializedIdentifier(record1)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
              endRecordLiteral((, 2)
            endVariableInitializer(=)
          endInitializedIdentifier(record1)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(x)
            handleType(int, null)
            handleIdentifier(x, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(y)
            handleType(int, null)
            handleIdentifier(y, recordFieldDeclaration)
          endRecordTypeEntry()
        endRecordType((, null, 2)
        beginVariablesDeclaration(record1Named, null, null)
          handleIdentifier(record1Named, localVariableDeclaration)
          beginInitializedIdentifier(record1Named)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
              endRecordLiteral((, 2)
            endVariableInitializer(=)
          endInitializedIdentifier(record1Named)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
        endRecordType((, null, 2)
        beginVariablesDeclaration(record2, null, null)
          handleIdentifier(record2, localVariableDeclaration)
          beginInitializedIdentifier(record2)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
              endRecordLiteral((, 2)
            endVariableInitializer(=)
          endInitializedIdentifier(record2)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(x)
            handleType(int, null)
            handleIdentifier(x, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(y)
            handleType(int, null)
            handleIdentifier(y, recordFieldDeclaration)
          endRecordTypeEntry()
        endRecordType((, null, 2)
        beginVariablesDeclaration(record2Named, null, null)
          handleIdentifier(record2Named, localVariableDeclaration)
          beginInitializedIdentifier(record2Named)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
              endRecordLiteral((, 2)
            endVariableInitializer(=)
          endInitializedIdentifier(record2Named)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeNamedFields({)
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(a)
              handleType(int, null)
              handleIdentifier(a, recordFieldDeclaration)
            endRecordTypeEntry()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(b)
              handleType(int, null)
              handleIdentifier(b, recordFieldDeclaration)
            endRecordTypeEntry()
          endRecordTypeNamedFields(2, {)
        endRecordType((, null, 3)
        beginVariablesDeclaration(record3, null, null)
          handleIdentifier(record3, localVariableDeclaration)
          beginInitializedIdentifier(record3)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
                handleIdentifier(a, namedRecordFieldReference)
                handleLiteralInt(3)
                handleNamedRecordField(:)
                handleIdentifier(b, namedRecordFieldReference)
                handleLiteralInt(4)
                handleNamedRecordField(:)
              endRecordLiteral((, 4)
            endVariableInitializer(=)
          endInitializedIdentifier(record3)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(x)
            handleType(int, null)
            handleIdentifier(x, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(y)
            handleType(int, null)
            handleIdentifier(y, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeNamedFields({)
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(a)
              handleType(int, null)
              handleIdentifier(a, recordFieldDeclaration)
            endRecordTypeEntry()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(b)
              handleType(int, null)
              handleIdentifier(b, recordFieldDeclaration)
            endRecordTypeEntry()
          endRecordTypeNamedFields(2, {)
        endRecordType((, null, 3)
        beginVariablesDeclaration(record3Named, null, null)
          handleIdentifier(record3Named, localVariableDeclaration)
          beginInitializedIdentifier(record3Named)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
                handleIdentifier(a, namedRecordFieldReference)
                handleLiteralInt(3)
                handleNamedRecordField(:)
                handleIdentifier(b, namedRecordFieldReference)
                handleLiteralInt(4)
                handleNamedRecordField(:)
              endRecordLiteral((, 4)
            endVariableInitializer(=)
          endInitializedIdentifier(record3Named)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(,)
            handleType(int, null)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeNamedFields({)
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(a)
              handleType(int, null)
              handleIdentifier(a, recordFieldDeclaration)
            endRecordTypeEntry()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(b)
              handleType(int, null)
              handleIdentifier(b, recordFieldDeclaration)
            endRecordTypeEntry()
          endRecordTypeNamedFields(2, {)
        endRecordType((, null, 3)
        beginVariablesDeclaration(record4, null, null)
          handleIdentifier(record4, localVariableDeclaration)
          beginInitializedIdentifier(record4)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
                handleIdentifier(a, namedRecordFieldReference)
                handleLiteralInt(3)
                handleNamedRecordField(:)
                handleIdentifier(b, namedRecordFieldReference)
                handleLiteralInt(4)
                handleNamedRecordField(:)
              endRecordLiteral((, 4)
            endVariableInitializer(=)
          endInitializedIdentifier(record4)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(x)
            handleType(int, null)
            handleIdentifier(x, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments(y)
            handleType(int, null)
            handleIdentifier(y, recordFieldDeclaration)
          endRecordTypeEntry()
          beginRecordTypeNamedFields({)
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(a)
              handleType(int, null)
              handleIdentifier(a, recordFieldDeclaration)
            endRecordTypeEntry()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(b)
              handleType(int, null)
              handleIdentifier(b, recordFieldDeclaration)
            endRecordTypeEntry()
          endRecordTypeNamedFields(2, {)
        endRecordType((, null, 3)
        beginVariablesDeclaration(record4Named, null, null)
          handleIdentifier(record4Named, localVariableDeclaration)
          beginInitializedIdentifier(record4Named)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                handleLiteralInt(1)
                handleLiteralInt(2)
                handleIdentifier(a, namedRecordFieldReference)
                handleLiteralInt(3)
                handleNamedRecordField(:)
                handleIdentifier(b, namedRecordFieldReference)
                handleLiteralInt(4)
                handleNamedRecordField(:)
              endRecordLiteral((, 4)
            endVariableInitializer(=)
          endInitializedIdentifier(record4Named)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(void)
        endMetadataStar(0)
        beginFunctionType(void)
          handleNoTypeVariables(()
          handleVoidKeyword(void)
          beginFormalParameters((, MemberKind.GeneralizedFunctionType)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(,)
              handleType(int, null)
              handleNoName(,)
              handleFormalParameterWithoutValue(,)
            endFormalParameter(null, null, null, ,, null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.GeneralizedFunctionType, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments())
              handleType(int, null)
              handleNoName())
              handleFormalParameterWithoutValue())
            endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
          endFormalParameters(2, (, ), MemberKind.GeneralizedFunctionType)
        endFunctionType(Function, null)
        beginVariablesDeclaration(foobar, null, null)
          handleIdentifier(foobar, localVariableDeclaration)
          beginInitializedIdentifier(foobar)
            handleNoVariableInitializer(foobar)
          endInitializedIdentifier(foobar)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(()
        endMetadataStar(0)
        beginRecordType(()
          beginRecordTypeEntry()
            beginMetadataStar(()
            endMetadataStar(0)
            beginRecordType(()
              beginRecordTypeEntry()
                beginMetadataStar(int)
                endMetadataStar(0)
                handleIdentifier(int, typeReference)
                handleNoTypeArguments(,)
                handleType(int, null)
                handleNoName(,)
              endRecordTypeEntry()
              beginRecordTypeEntry()
                beginMetadataStar(int)
                endMetadataStar(0)
                handleIdentifier(int, typeReference)
                handleNoTypeArguments())
                handleType(int, null)
                handleNoName())
              endRecordTypeEntry()
            endRecordType((, null, 2)
            handleNoName(,)
          endRecordTypeEntry()
          beginRecordTypeEntry()
            beginMetadataStar(int)
            endMetadataStar(0)
            handleIdentifier(int, typeReference)
            handleNoTypeArguments())
            handleType(int, null)
            handleNoName())
          endRecordTypeEntry()
        endRecordType((, null, 2)
        beginVariablesDeclaration(record5, null, null)
          handleIdentifier(record5, localVariableDeclaration)
          beginInitializedIdentifier(record5)
            beginVariableInitializer(=)
              beginParenthesizedExpressionOrRecordLiteral(()
                beginParenthesizedExpressionOrRecordLiteral(()
                  handleLiteralInt(1)
                  handleLiteralInt(2)
                endRecordLiteral((, 2)
                handleLiteralInt(2)
              endRecordLiteral((, 2)
            endVariableInitializer(=)
          endInitializedIdentifier(record5)
        endVariablesDeclaration(1, ;)
        beginMetadataStar(int)
        endMetadataStar(0)
        handleNoTypeVariables(()
        beginLocalFunctionDeclaration(int)
          handleIdentifier(int, typeReference)
          handleNoTypeArguments(async)
          handleType(int, null)
          beginFunctionName(async)
            handleIdentifier(async, localFunctionDeclaration)
          endFunctionName(int, ()
          beginFormalParameters((, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(x)
              handleType(int, null)
              handleIdentifier(x, formalParameterDeclaration)
              handleFormalParameterWithoutValue(,)
            endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(y)
              handleType(int, null)
              handleIdentifier(y, formalParameterDeclaration)
              handleFormalParameterWithoutValue())
            endFormalParameter(null, null, null, y, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
          endFormalParameters(2, (, ), MemberKind.Local)
          handleNoInitializers()
          handleAsyncModifier(null, null)
          beginBlockFunctionBody({)
            handleIdentifier(print, expression)
            handleNoTypeArguments(()
            beginArguments(()
              beginLiteralString("sync named async with int return type taking 2 parameters")
              endLiteralString(0, ))
            endArguments(1, (, ))
            handleSend(print, ;)
            handleExpressionStatement(;)
          endBlockFunctionBody(1, {, })
        endLocalFunctionDeclaration(})
        beginMetadataStar(()
        endMetadataStar(0)
        handleNoTypeVariables(()
        beginLocalFunctionDeclaration(()
          beginRecordType(()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(x)
              handleType(int, null)
              handleIdentifier(x, recordFieldDeclaration)
            endRecordTypeEntry()
            beginRecordTypeEntry()
              beginMetadataStar(int)
              endMetadataStar(0)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(y)
              handleType(int, null)
              handleIdentifier(y, recordFieldDeclaration)
            endRecordTypeEntry()
          endRecordType((, null, 2)
          beginFunctionName(async)
            handleIdentifier(async, localFunctionDeclaration)
          endFunctionName((, ()
          beginFormalParameters((, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(x)
              handleType(int, null)
              handleIdentifier(x, formalParameterDeclaration)
              handleFormalParameterWithoutValue(,)
            endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(y)
              handleType(int, null)
              handleIdentifier(y, formalParameterDeclaration)
              handleFormalParameterWithoutValue())
            endFormalParameter(null, null, null, y, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
          endFormalParameters(2, (, ), MemberKind.Local)
          handleNoInitializers()
          handleAsyncModifier(null, null)
          beginBlockFunctionBody({)
            handleIdentifier(print, expression)
            handleNoTypeArguments(()
            beginArguments(()
              beginLiteralString("sync named async with record type return type taking 2 parameters")
              endLiteralString(0, ))
            endArguments(1, (, ))
            handleSend(print, ;)
            handleExpressionStatement(;)
          endBlockFunctionBody(1, {, })
        endLocalFunctionDeclaration(})
        handleNoTypeVariables(()
        beginFunctionExpression(()
          beginFormalParameters((, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(x)
              handleType(int, null)
              handleIdentifier(x, formalParameterDeclaration)
              handleFormalParameterWithoutValue(,)
            endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(y)
              handleType(int, null)
              handleIdentifier(y, formalParameterDeclaration)
              handleFormalParameterWithoutValue())
            endFormalParameter(null, null, null, y, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
          endFormalParameters(2, (, ), MemberKind.Local)
          handleAsyncModifier(null, null)
          beginBlockFunctionBody({)
            handleIdentifier(print, expression)
            handleNoTypeArguments(()
            beginArguments(()
              beginLiteralString("sync unnamed taking 2 parameters")
              endLiteralString(0, ))
            endArguments(1, (, ))
            handleSend(print, ;)
            handleExpressionStatement(;)
          endBlockFunctionBody(1, {, })
        endFunctionExpression((, ()
        handleNoTypeArguments(()
        beginArguments(()
        endArguments(0, (, ))
        handleSend((, ))
        handleExpressionStatement(;)
        handleNoTypeVariables(()
        beginFunctionExpression(()
          beginFormalParameters((, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(x)
              handleType(int, null)
              handleIdentifier(x, formalParameterDeclaration)
              handleFormalParameterWithoutValue(,)
            endFormalParameter(null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
            beginMetadataStar(int)
            endMetadataStar(0)
            beginFormalParameter(int, MemberKind.Local, null, null, null)
              handleIdentifier(int, typeReference)
              handleNoTypeArguments(y)
              handleType(int, null)
              handleIdentifier(y, formalParameterDeclaration)
              handleFormalParameterWithoutValue())
            endFormalParameter(null, null, null, y, null, null, FormalParameterKind.requiredPositional, MemberKind.Local)
          endFormalParameters(2, (, ), MemberKind.Local)
          handleAsyncModifier(async, null)
          beginBlockFunctionBody({)
            handleIdentifier(print, expression)
            handleNoTypeArguments(()
            beginArguments(()
              beginLiteralString("async unnamed taking 2 parameters")
              endLiteralString(0, ))
            endArguments(1, (, ))
            handleSend(print, ;)
            handleExpressionStatement(;)
          endBlockFunctionBody(1, {, })
        endFunctionExpression((, ()
        handleNoTypeArguments(()
        beginArguments(()
        endArguments(0, (, ))
        handleSend((, ))
        handleExpressionStatement(;)
      endBlockFunctionBody(14, {, })
    endTopLevelMethod(void, null, })
  endTopLevelDeclaration()
endCompilationUnit(1, )
