beginCompilationUnit(Logger)
  beginMetadataStar(Logger)
  endMetadataStar(0)
  beginTopLevelMember(Logger)
    beginTopLevelMethod(, null, null)
      handleIdentifier(Logger, typeReference)
      handleNoTypeArguments(get)
      handleType(Logger, null)
      handleIdentifier(log, topLevelFunctionDeclaration)
      handleNoTypeVariables(=>)
      handleNoFormalParameters(=>, MemberKind.TopLevelMethod)
      handleAsyncModifier(null, null)
      handleIdentifier(Zone, expression)
      handleNoTypeArguments(.)
      handleNoArguments(.)
      handleSend(Zone, Zone)
      handleIdentifier(current, expressionContinuation)
      handleNoTypeArguments([)
      handleNoArguments([)
      handleSend(current, current)
      handleEndingBinaryExpression(., current)
      handleIdentifier(logKey, expression)
      handleNoTypeArguments(])
      handleNoArguments(])
      handleSend(logKey, logKey)
      handleIndexedExpression(null, [, ])
      beginAsOperatorType(as)
        handleIdentifier(Logger, typeReference)
        handleNoTypeArguments(?)
        handleType(Logger, ?)
      endAsOperatorType(as)
      handleAsOperator(as)
      beginBinaryExpression(??)
        handleIdentifier(_default, expression)
        handleNoTypeArguments(;)
        handleNoArguments(;)
        handleSend(_default, _default)
      endBinaryExpression(??, _default)
      handleExpressionFunctionBody(=>, ;)
    endTopLevelMethod(Logger, get, ;)
  endTopLevelDeclaration(;)
endCompilationUnit(1, )
