KtFile: 'bound.kt'
  null

KtPackageDirective(0,0): ''
  null

KtImportList(0,0): ''
  null

KtClass(78,115): 'enum class MyEnum {'
  null

KtDeclarationModifierList(78,82): 'enum'
  null

KtClassBody(96,115): '{'
  null

KtEnumEntry(102,113): 'EnumValue1;'
  null

KtNamedFunction(117,158): 'fun <T: MyEnum> boundHolder(arg: T) = arg'
  null

KtTypeParameterList(121,132): '<T: MyEnum>'
  null

KtTypeParameter(122,131): 'T: MyEnum'
  null

KtTypeReference(125,131): 'MyEnum'
  null

KtUserType(125,131): 'MyEnum'
  null

KtNameReferenceExpression(125,131): 'MyEnum'
  null

KtParameterList(144,152): '(arg: T)'
  null

KtParameter(145,151): 'arg: T'
  null

KtTypeReference(150,151): 'T'
  null

KtUserType(150,151): 'T'
  null

KtNameReferenceExpression(150,151): 'T'
  null

KtNameReferenceExpression(155,158): 'arg'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      isContextSensitive = false
      kind = Read
      signature = KaVariableSignature:
        name = arg
        receiverType = null
        returnType = T
        symbol = arg: T
        contextParameters = []
        callableId = null
      typeArgumentsMapping = {}

KtNamedFunction(160,210): 'fun testFunBound() {'
  null

KtParameterList(176,178): '()'
  null

KtBlockExpression(179,210): '{'
  null

KtCallExpression(185,208): 'boundHolder(EnumValue1)'
  KaCallResolutionError:
    candidateCalls = [
      KaSimpleFunctionCall:
        contextArgumentMapping = {}
        contextArguments = []
        dispatchReceiver = null
        extensionReceiver = null
        signature = KaFunctionSignature:
          receiverType = null
          returnType = ERROR CLASS: Cannot infer argument for type parameter T
          symbol = /boundHolder(arg: T): T
          valueParameters = [
            KaVariableSignature:
              name = arg
              receiverType = null
              returnType = ERROR CLASS: Cannot infer argument for type parameter T
              symbol = arg: T
              contextParameters = []
              callableId = null
          ]
          contextParameters = []
          callableId = /boundHolder
        typeArgumentsMapping = {
          T -> (ERROR CLASS: Cannot infer argument for type parameter T)
        }
        valueArgumentMapping = {
          EnumValue1 -> (KaVariableSignature:
            name = arg
            receiverType = null
            returnType = ERROR CLASS: Cannot infer argument for type parameter T
            symbol = arg: T
            contextParameters = []
            callableId = null)
        }
    ]
    diagnostic = ERROR<OTHER_ERROR: Inapplicable(INAPPLICABLE): /boundHolder>

KtNameReferenceExpression(185,196): 'boundHolder'
  KaCallResolutionError:
    candidateCalls = [
      KaSimpleFunctionCall:
        contextArgumentMapping = {}
        contextArguments = []
        dispatchReceiver = null
        extensionReceiver = null
        signature = KaFunctionSignature:
          receiverType = null
          returnType = ERROR CLASS: Cannot infer argument for type parameter T
          symbol = /boundHolder(arg: T): T
          valueParameters = [
            KaVariableSignature:
              name = arg
              receiverType = null
              returnType = ERROR CLASS: Cannot infer argument for type parameter T
              symbol = arg: T
              contextParameters = []
              callableId = null
          ]
          contextParameters = []
          callableId = /boundHolder
        typeArgumentsMapping = {
          T -> (ERROR CLASS: Cannot infer argument for type parameter T)
        }
        valueArgumentMapping = {
          EnumValue1 -> (KaVariableSignature:
            name = arg
            receiverType = null
            returnType = ERROR CLASS: Cannot infer argument for type parameter T
            symbol = arg: T
            contextParameters = []
            callableId = null)
        }
    ]
    diagnostic = ERROR<OTHER_ERROR: Inapplicable(INAPPLICABLE): /boundHolder>

KtValueArgumentList(196,208): '(EnumValue1)'
  null

KtValueArgument(197,207): 'EnumValue1'
  null

KtNameReferenceExpression(197,207): 'EnumValue1'
  KaCallResolutionError:
    candidateCalls = []
    diagnostic = ERROR<UNRESOLVED_REFERENCE: Unresolved reference 'EnumValue1'.>

KtNamedFunction(212,271): 'fun testFunBound2() {'
  null

KtParameterList(229,231): '()'
  null

KtBlockExpression(232,271): '{'
  null

KtCallExpression(238,269): 'boundHolder<MyEnum>(EnumValue1)'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = MyEnum
        symbol = /boundHolder(arg: T): T
        valueParameters = [
          KaVariableSignature:
            name = arg
            receiverType = null
            returnType = MyEnum
            symbol = arg: T
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = /boundHolder
      typeArgumentsMapping = {
        T -> (MyEnum)
      }
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = arg
          receiverType = null
          returnType = MyEnum
          symbol = arg: T
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(238,249): 'boundHolder'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = MyEnum
        symbol = /boundHolder(arg: T): T
        valueParameters = [
          KaVariableSignature:
            name = arg
            receiverType = null
            returnType = MyEnum
            symbol = arg: T
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = /boundHolder
      typeArgumentsMapping = {
        T -> (MyEnum)
      }
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = arg
          receiverType = null
          returnType = MyEnum
          symbol = arg: T
          contextParameters = []
          callableId = null)
      }

KtTypeArgumentList(249,257): '<MyEnum>'
  null

KtTypeProjection(250,256): 'MyEnum'
  null

KtTypeReference(250,256): 'MyEnum'
  null

KtUserType(250,256): 'MyEnum'
  null

KtNameReferenceExpression(250,256): 'MyEnum'
  null

KtValueArgumentList(257,269): '(EnumValue1)'
  null

KtValueArgument(258,268): 'EnumValue1'
  null

KtNameReferenceExpression(258,268): 'EnumValue1'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = EnumValue1
        isSafeNavigation = false
        type = kotlin.Unit
      extensionReceiver = null
      isContextSensitive = true
      kind = Read
      signature = KaVariableSignature:
        name = EnumValue1
        receiverType = null
        returnType = MyEnum
        symbol = /MyEnum.EnumValue1
        contextParameters = []
        callableId = /MyEnum.EnumValue1
      typeArgumentsMapping = {}

KtNamedFunction(273,352): 'inline fun <T: MyEnum> testInlineFunBound(value: T) {'
  null

KtDeclarationModifierList(273,279): 'inline'
  null

KtTypeParameterList(284,295): '<T: MyEnum>'
  null

KtTypeParameter(285,294): 'T: MyEnum'
  null

KtTypeReference(288,294): 'MyEnum'
  null

KtUserType(288,294): 'MyEnum'
  null

KtNameReferenceExpression(288,294): 'MyEnum'
  null

KtParameterList(314,324): '(value: T)'
  null

KtParameter(315,323): 'value: T'
  null

KtTypeReference(322,323): 'T'
  null

KtUserType(322,323): 'T'
  null

KtNameReferenceExpression(322,323): 'T'
  null

KtBlockExpression(325,352): '{'
  null

KtBinaryExpression(331,350): 'value == EnumValue1'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = value
        isSafeNavigation = false
        type = T
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Boolean
        symbol = kotlin/Enum.equals(<dispatch receiver>: kotlin.Enum<E>, other: kotlin.Any?): kotlin.Boolean
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Any?
            symbol = other: kotlin.Any?
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Enum.equals
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Any?
          symbol = other: kotlin.Any?
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(331,336): 'value'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      isContextSensitive = false
      kind = Read
      signature = KaVariableSignature:
        name = value
        receiverType = null
        returnType = T
        symbol = value: T
        contextParameters = []
        callableId = null
      typeArgumentsMapping = {}

KtOperationReferenceExpression(337,339): '=='
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = value
        isSafeNavigation = false
        type = T
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Boolean
        symbol = kotlin/Enum.equals(<dispatch receiver>: kotlin.Enum<E>, other: kotlin.Any?): kotlin.Boolean
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Any?
            symbol = other: kotlin.Any?
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Enum.equals
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Any?
          symbol = other: kotlin.Any?
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(340,350): 'EnumValue1'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = EnumValue1
        isSafeNavigation = false
        type = kotlin.Unit
      extensionReceiver = null
      isContextSensitive = true
      kind = Read
      signature = KaVariableSignature:
        name = EnumValue1
        receiverType = null
        returnType = MyEnum
        symbol = /MyEnum.EnumValue1
        contextParameters = []
        callableId = /MyEnum.EnumValue1
      typeArgumentsMapping = {}

KtNamedFunction(354,420): 'fun <T: MyEnum> testFunBound(value: T) {'
  null

KtTypeParameterList(358,369): '<T: MyEnum>'
  null

KtTypeParameter(359,368): 'T: MyEnum'
  null

KtTypeReference(362,368): 'MyEnum'
  null

KtUserType(362,368): 'MyEnum'
  null

KtNameReferenceExpression(362,368): 'MyEnum'
  null

KtParameterList(382,392): '(value: T)'
  null

KtParameter(383,391): 'value: T'
  null

KtTypeReference(390,391): 'T'
  null

KtUserType(390,391): 'T'
  null

KtNameReferenceExpression(390,391): 'T'
  null

KtBlockExpression(393,420): '{'
  null

KtBinaryExpression(399,418): 'value == EnumValue1'
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = value
        isSafeNavigation = false
        type = T
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Boolean
        symbol = kotlin/Enum.equals(<dispatch receiver>: kotlin.Enum<E>, other: kotlin.Any?): kotlin.Boolean
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Any?
            symbol = other: kotlin.Any?
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Enum.equals
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Any?
          symbol = other: kotlin.Any?
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(399,404): 'value'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = null
      extensionReceiver = null
      isContextSensitive = false
      kind = Read
      signature = KaVariableSignature:
        name = value
        receiverType = null
        returnType = T
        symbol = value: T
        contextParameters = []
        callableId = null
      typeArgumentsMapping = {}

KtOperationReferenceExpression(405,407): '=='
  KaCallResolutionSuccess:
    call = KaSimpleFunctionCall:
      contextArgumentMapping = {}
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = value
        isSafeNavigation = false
        type = T
      extensionReceiver = null
      signature = KaFunctionSignature:
        receiverType = null
        returnType = kotlin.Boolean
        symbol = kotlin/Enum.equals(<dispatch receiver>: kotlin.Enum<E>, other: kotlin.Any?): kotlin.Boolean
        valueParameters = [
          KaVariableSignature:
            name = other
            receiverType = null
            returnType = kotlin.Any?
            symbol = other: kotlin.Any?
            contextParameters = []
            callableId = null
        ]
        contextParameters = []
        callableId = kotlin/Enum.equals
      typeArgumentsMapping = {}
      valueArgumentMapping = {
        EnumValue1 -> (KaVariableSignature:
          name = other
          receiverType = null
          returnType = kotlin.Any?
          symbol = other: kotlin.Any?
          contextParameters = []
          callableId = null)
      }

KtNameReferenceExpression(408,418): 'EnumValue1'
  KaCallResolutionSuccess:
    call = KaSimpleVariableAccessCall:
      contextArguments = []
      dispatchReceiver = KaExplicitReceiverValue:
        expression = EnumValue1
        isSafeNavigation = false
        type = kotlin.Unit
      extensionReceiver = null
      isContextSensitive = true
      kind = Read
      signature = KaVariableSignature:
        name = EnumValue1
        receiverType = null
        returnType = MyEnum
        symbol = /MyEnum.EnumValue1
        contextParameters = []
        callableId = /MyEnum.EnumValue1
      typeArgumentsMapping = {}
