FILE fqName:<root> fileName:/kt30796.kt
  FUN name:magic visibility:public modality:FINAL <T> () returnType:T of <root>.magic
    TYPE_PARAMETER name:T index:0 variance: superTypes:[]
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun magic <T> (): T of <root>.magic declared in <root>'
        THROW type=kotlin.Nothing
          ERROR_CALL 'Unresolved reference: <Ambiguity: Exception, [java/lang/Exception.Exception, java/lang/Exception.Exception]>#' type=IrErrorType
  FUN name:test visibility:public modality:FINAL <T> (value:T of <root>.test, value2:T of <root>.test) returnType:kotlin.Unit
    TYPE_PARAMETER name:T index:0 variance: superTypes:[]
    VALUE_PARAMETER name:value index:0 type:T of <root>.test
    VALUE_PARAMETER name:value2 index:1 type:T of <root>.test
    BLOCK_BODY
      VAR name:x1 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
      VAR name:x2 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: BLOCK type=kotlin.Any origin=ELVIS
                VAR name:<elvis> type:T of <root>.test [val]
                  GET_VAR 'value2: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
                WHEN type=kotlin.Any origin=ELVIS
                  BRANCH
                    if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                      arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                      arg1: CONST Null type=kotlin.Nothing? value=null
                    then: CONST Int type=kotlin.Any value=42
                  BRANCH
                    if: CONST Boolean type=kotlin.Boolean value=true
                    then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
      VAR name:x3 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            BLOCK type=T of <root>.test origin=ELVIS
              VAR name:<elvis> type:T of <root>.test [val]
                GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
              WHEN type=T of <root>.test origin=ELVIS
                BRANCH
                  if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                    arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                    arg1: CONST Null type=kotlin.Nothing? value=null
                  then: GET_VAR 'value2: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
                BRANCH
                  if: CONST Boolean type=kotlin.Boolean value=true
                  then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
      VAR name:x4 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            BLOCK type=T of <root>.test origin=ELVIS
              VAR name:<elvis> type:T of <root>.test [val]
                GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
              WHEN type=T of <root>.test origin=ELVIS
                BRANCH
                  if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                    arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                    arg1: CONST Null type=kotlin.Nothing? value=null
                  then: GET_VAR 'value2: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
                BRANCH
                  if: CONST Boolean type=kotlin.Boolean value=true
                  then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
      VAR name:x5 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:kotlin.Nothing [val]
            CALL 'public final fun magic <T> (): T of <root>.magic declared in <root>' type=kotlin.Nothing origin=null
              <T>: <none>
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: kotlin.Nothing [val] declared in <root>.test' type=kotlin.Nothing origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: kotlin.Nothing [val] declared in <root>.test' type=kotlin.Nothing origin=null
      VAR name:x6 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            BLOCK type=T of <root>.test origin=ELVIS
              VAR name:<elvis> type:T of <root>.test [val]
                GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
              WHEN type=T of <root>.test origin=ELVIS
                BRANCH
                  if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                    arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                    arg1: CONST Null type=kotlin.Nothing? value=null
                  then: CALL 'public final fun magic <T> (): T of <root>.magic declared in <root>' type=kotlin.Nothing origin=null
                    <T>: <none>
                BRANCH
                  if: CONST Boolean type=kotlin.Boolean value=true
                  then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
      VAR name:x7 type:kotlin.Any [val]
        BLOCK type=kotlin.Any origin=ELVIS
          VAR name:<elvis> type:T of <root>.test [val]
            BLOCK type=T of <root>.test origin=ELVIS
              VAR name:<elvis> type:kotlin.Nothing [val]
                CALL 'public final fun magic <T> (): T of <root>.magic declared in <root>' type=kotlin.Nothing origin=null
                  <T>: <none>
              WHEN type=T of <root>.test origin=ELVIS
                BRANCH
                  if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                    arg0: GET_VAR 'val <elvis>: kotlin.Nothing [val] declared in <root>.test' type=kotlin.Nothing origin=null
                    arg1: CONST Null type=kotlin.Nothing? value=null
                  then: GET_VAR 'value: T of <root>.test declared in <root>.test' type=T of <root>.test origin=null
                BRANCH
                  if: CONST Boolean type=kotlin.Boolean value=true
                  then: GET_VAR 'val <elvis>: kotlin.Nothing [val] declared in <root>.test' type=kotlin.Nothing origin=null
          WHEN type=kotlin.Any origin=ELVIS
            BRANCH
              if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
                arg0: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
                arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Any value=42
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: GET_VAR 'val <elvis>: T of <root>.test [val] declared in <root>.test' type=T of <root>.test origin=null
