KtFile: 'implicitInvokeFromBinaryExpression.kt'
  null

KtPackageDirective(0,0): ''
  null

KtImportList(0,0): ''
  null

KtNamedFunction(0,81): 'private fun main(n: Int, bar: Int.(Int) -> Int): Int {'
  null

KtDeclarationModifierList(0,7): 'private'
  null

KtParameterList(16,47): '(n: Int, bar: Int.(Int) -> Int)'
  null

KtParameter(17,23): 'n: Int'
  null

KtTypeReference(20,23): 'Int'
  null

KtUserType(20,23): 'Int'
  null

KtNameReferenceExpression(20,23): 'Int'
  null

KtParameter(25,46): 'bar: Int.(Int) -> Int'
  null

KtTypeReference(30,46): 'Int.(Int) -> Int'
  null

KtFunctionType(30,46): 'Int.(Int) -> Int'
  null

KtFunctionTypeReceiver(30,33): 'Int'
  null

KtTypeReference(30,33): 'Int'
  null

KtUserType(30,33): 'Int'
  null

KtNameReferenceExpression(30,33): 'Int'
  null

KtParameterList(34,39): '(Int)'
  null

KtParameter(35,38): 'Int'
  null

KtTypeReference(35,38): 'Int'
  null

KtUserType(35,38): 'Int'
  null

KtNameReferenceExpression(35,38): 'Int'
  null

KtTypeReference(43,46): 'Int'
  null

KtUserType(43,46): 'Int'
  null

KtNameReferenceExpression(43,46): 'Int'
  null

KtTypeReference(49,52): 'Int'
  null

KtUserType(49,52): 'Int'
  null

KtNameReferenceExpression(49,52): 'Int'
  null

KtBlockExpression(53,81): '{'
  null

KtReturnExpression(59,79): 'return n bar (n + 1)'
  null

KtBinaryExpression(66,79): 'n bar (n + 1)'
  KaCallResolutionError:
    candidateCalls = [
      KaImplicitInvokeCall:
        contextArgumentMapping = {}
        contextArguments = []
        dispatchReceiver = KaExplicitReceiverValue:
          expression = n bar (n + 1)
          isSafeNavigation = false
          type = kotlin.Int.(kotlin.Int) -> kotlin.Int
        extensionReceiver = KaExplicitReceiverValue:
          expression = n
          isSafeNavigation = false
          type = kotlin.Int
        signature = KaFunctionSignature:
          receiverType = null
          returnType = kotlin.Int
          symbol = kotlin/Function2.invoke(<dispatch receiver>: (P1, P2) -> R, p1: P1, p2: P2): R
          valueParameters = [
            KaVariableSignature:
              name = p1
              receiverType = null
              returnType = kotlin.Int
              symbol = p1: P1
              contextParameters = []
              callableId = null,
            KaVariableSignature:
              name = p2
              receiverType = null
              returnType = kotlin.Int
              symbol = p2: P2
              contextParameters = []
              callableId = null
          ]
          contextParameters = []
          callableId = kotlin/Function2.invoke
        typeArgumentsMapping = {}
        valueArgumentMapping = {
          (n + 1) -> (KaVariableSignature:
            name = p2
            receiverType = null
            returnType = kotlin.Int
            symbol = p2: P2
            contextParameters = []
            callableId = null)
        }
    ]
    diagnostic = ERROR<INFIX_MODIFIER_REQUIRED: 'infix' modifier is required on 'fun invoke(p1: Int, p2: Int): Int'.>

KtNameReferenceExpression(66,67): 'n'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      isContextSensitive = false
      kind = Read
      signature = KaVariableSignature:
        name = n
        receiverType = null
        returnType = kotlin.Int
        symbol = n: kotlin.Int
        contextParameters = []
        callableId = null
      typeArgumentsMapping = {}

KtOperationReferenceExpression(68,71): 'bar'
  KaCallResolutionError:
    candidateCalls = [
      KaImplicitInvokeCall:
        contextArgumentMapping = {}
        contextArguments = []
        dispatchReceiver = KaExplicitReceiverValue:
          expression = n bar (n + 1)
          isSafeNavigation = false
          type = kotlin.Int.(kotlin.Int) -> kotlin.Int
        extensionReceiver = KaExplicitReceiverValue:
          expression = n
          isSafeNavigation = false
          type = kotlin.Int
        signature = KaFunctionSignature:
          receiverType = null
          returnType = kotlin.Int
          symbol = kotlin/Function2.invoke(<dispatch receiver>: (P1, P2) -> R, p1: P1, p2: P2): R
          valueParameters = [
            KaVariableSignature:
              name = p1
              receiverType = null
              returnType = kotlin.Int
              symbol = p1: P1
              contextParameters = []
              callableId = null,
            KaVariableSignature:
              name = p2
              receiverType = null
              returnType = kotlin.Int
              symbol = p2: P2
              contextParameters = []
              callableId = null
          ]
          contextParameters = []
          callableId = kotlin/Function2.invoke
        typeArgumentsMapping = {}
        valueArgumentMapping = {
          (n + 1) -> (KaVariableSignature:
            name = p2
            receiverType = null
            returnType = kotlin.Int
            symbol = p2: P2
            contextParameters = []
            callableId = null)
        }
    ]
    diagnostic = ERROR<INFIX_MODIFIER_REQUIRED: 'infix' modifier is required on 'fun invoke(p1: Int, p2: Int): Int'.>

KtParenthesizedExpression(72,79): '(n + 1)'
  null

KtBinaryExpression(73,78): 'n + 1'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = n
        isSafeNavigation = false
        type = kotlin.Int
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Int
        symbol = kotlin/Int.plus(<dispatch receiver>: kotlin.Int, other: kotlin.Int): kotlin.Int
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Int
            symbol = other: kotlin.Int
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Int.plus
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Int
          symbol = other: kotlin.Int
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(73,74): 'n'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      isContextSensitive = false
      kind = Read
      signature = KaVariableSignature:
        name = n
        receiverType = null
        returnType = kotlin.Int
        symbol = n: kotlin.Int
        contextParameters = []
        callableId = null
      typeArgumentsMapping = {}

KtOperationReferenceExpression(75,76): '+'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = n
        isSafeNavigation = false
        type = kotlin.Int
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Int
        symbol = kotlin/Int.plus(<dispatch receiver>: kotlin.Int, other: kotlin.Int): kotlin.Int
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Int
            symbol = other: kotlin.Int
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Int.plus
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Int
          symbol = other: kotlin.Int
          contextParameters = []
          callableId = null)
      }

KtConstantExpression(77,78): '1'
  null
