FILE fqName:<root> fileName:/typeParameterInDelegatedProperty.kt
  PROPERTY name:property visibility:public modality:FINAL [delegated,val]
    FIELD PROPERTY_DELEGATE name:property$delegate type:<root>.property$delegate.<no name provided><T of <root>.<get-property>> visibility:private [final,static]
      EXPRESSION_BODY
        BLOCK type=<root>.property$delegate.<no name provided><T of <root>.<get-property>> origin=OBJECT_LITERAL
          CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate<kotlin.Any?>]
            thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.property$delegate.<no name provided><T of <root>.<get-property>>
            CONSTRUCTOR visibility:public returnType:<root>.property$delegate.<no name provided><kotlin.Any?> [primary]
              BLOCK_BODY
                DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
                INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate<kotlin.Any?>]' type=kotlin.Unit
            FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
              VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any?
              overridden:
                public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.IDelegate
            FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
              overridden:
                public open fun hashCode (): kotlin.Int declared in <root>.IDelegate
            FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
              overridden:
                public open fun toString (): kotlin.String declared in <root>.IDelegate
            FUN name:getValue visibility:public modality:OPEN returnType:kotlin.Any? [operator]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.property$delegate.<no name provided><T of <root>.<get-property>>
              VALUE_PARAMETER kind:Regular name:t index:1 type:kotlin.Any?
              VALUE_PARAMETER kind:Regular name:p index:2 type:kotlin.reflect.KProperty<*>
              overridden:
                public abstract fun getValue (t: T of <root>.IDelegate, p: kotlin.reflect.KProperty<*>): T of <root>.IDelegate declared in <root>.IDelegate
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in <root>.property$delegate.<no name provided>'
                  GET_VAR 't: kotlin.Any? declared in <root>.property$delegate.<no name provided>.getValue' type=kotlin.Any? origin=null
          CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.property$delegate.<no name provided>' type=<root>.property$delegate.<no name provided><T of <root>.<get-property>> origin=OBJECT_LITERAL
    FUN DELEGATED_PROPERTY_ACCESSOR name:<get-property> visibility:public modality:FINAL returnType:T of <root>.<get-property>
      TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
      VALUE_PARAMETER kind:ExtensionReceiver name:<this> index:0 type:T of <root>.<get-property>
      correspondingProperty: PROPERTY name:property visibility:public modality:FINAL [delegated,val]
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun <get-property> <T> (<this>: T of <root>.<get-property>): T of <root>.<get-property> declared in <root>'
          CALL 'public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in <root>.property$delegate.<no name provided>' type=T of <root>.<get-property> origin=null
            ARG <this>: GET_FIELD 'FIELD PROPERTY_DELEGATE name:property$delegate type:<root>.property$delegate.<no name provided><T of <root>.<get-property>> visibility:private [final,static] declared in <root>' type=<root>.property$delegate.<no name provided><T of <root>.<get-property>> origin=null
            ARG t: GET_VAR '<this>: T of <root>.<get-property> declared in <root>.<get-property>' type=T of <root>.<get-property> origin=null
            ARG p: PROPERTY_REFERENCE 'public final property: T of <root>.<get-property> declared in <root>' field=null getter='public final fun <get-property> <T> (<this>: T of <root>.<get-property>): T of <root>.<get-property> declared in <root>' setter=null type=kotlin.reflect.KProperty1<T of <root>.<get-property>, T of <root>.<get-property>> origin=PROPERTY_REFERENCE_FOR_DELEGATE
              TYPE_ARG 1: T of <root>.<get-property>
  PROPERTY name:property2 visibility:public modality:FINAL [delegated,val]
    FIELD PROPERTY_DELEGATE name:property2$delegate type:<root>.IDelegate<T of <root>.<get-property2>> visibility:private [final,static]
      EXPRESSION_BODY
        CALL 'public final fun run <R> (block: kotlin.Function0<R of kotlin.run>): R of kotlin.run declared in kotlin' type=<root>.IDelegate<T of <root>.<get-property2>> origin=null
          TYPE_ARG R: <root>.IDelegate<T of <root>.<get-property2>>
          ARG block: FUN_EXPR type=kotlin.Function0<<root>.IDelegate<T of <root>.<get-property2>>> origin=LAMBDA
            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL returnType:<root>.IDelegate<T of <root>.<get-property2>>
              BLOCK_BODY
                FUN LOCAL_FUNCTION name:test visibility:local modality:FINAL returnType:T of <root>.<get-property2>
                  VALUE_PARAMETER kind:Regular name:t index:0 type:T of <root>.<get-property2>
                  BLOCK_BODY
                    RETURN type=kotlin.Nothing from='local final fun test (t: T of <root>.<get-property2>): T of <root>.<get-property2> declared in <root>.property2$delegate.<anonymous>'
                      GET_VAR 't: T of <root>.<get-property2> declared in <root>.property2$delegate.<anonymous>.test' type=T of <root>.<get-property2> origin=null
                RETURN type=kotlin.Nothing from='local final fun <anonymous> (): <root>.IDelegate<T of <root>.<get-property2>> declared in <root>.property2$delegate'
                  BLOCK type=<root>.property2$delegate.<anonymous>.<no name provided><T of <root>.<get-property2>> origin=OBJECT_LITERAL
                    CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate<kotlin.Any?>]
                      thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.property2$delegate.<anonymous>.<no name provided><T of <root>.<get-property2>>
                      CONSTRUCTOR visibility:public returnType:<root>.property2$delegate.<anonymous>.<no name provided><kotlin.Any?> [primary]
                        BLOCK_BODY
                          DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
                          INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.IDelegate<kotlin.Any?>]' type=kotlin.Unit
                      FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator]
                        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
                        VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any?
                        overridden:
                          public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.IDelegate
                      FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override]
                        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
                        overridden:
                          public open fun hashCode (): kotlin.Int declared in <root>.IDelegate
                      FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
                        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
                        overridden:
                          public open fun toString (): kotlin.String declared in <root>.IDelegate
                      FUN name:getValue visibility:public modality:OPEN returnType:kotlin.Any? [operator]
                        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.property2$delegate.<anonymous>.<no name provided><T of <root>.<get-property2>>
                        VALUE_PARAMETER kind:Regular name:t index:1 type:kotlin.Any?
                        VALUE_PARAMETER kind:Regular name:p index:2 type:kotlin.reflect.KProperty<*>
                        overridden:
                          public abstract fun getValue (t: T of <root>.IDelegate, p: kotlin.reflect.KProperty<*>): T of <root>.IDelegate declared in <root>.IDelegate
                        BLOCK_BODY
                          RETURN type=kotlin.Nothing from='public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in <root>.property2$delegate.<anonymous>.<no name provided>'
                            CALL 'local final fun test (t: T of <root>.<get-property2>): T of <root>.<get-property2> declared in <root>.property2$delegate.<anonymous>' type=kotlin.Any? origin=null
                              ARG t: GET_VAR 't: kotlin.Any? declared in <root>.property2$delegate.<anonymous>.<no name provided>.getValue' type=kotlin.Any? origin=null
                    CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.property2$delegate.<anonymous>.<no name provided>' type=<root>.property2$delegate.<anonymous>.<no name provided><T of <root>.<get-property2>> origin=OBJECT_LITERAL
    FUN DELEGATED_PROPERTY_ACCESSOR name:<get-property2> visibility:public modality:FINAL returnType:T of <root>.<get-property2>
      TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
      VALUE_PARAMETER kind:ExtensionReceiver name:<this> index:0 type:T of <root>.<get-property2>
      correspondingProperty: PROPERTY name:property2 visibility:public modality:FINAL [delegated,val]
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun <get-property2> <T> (<this>: T of <root>.<get-property2>): T of <root>.<get-property2> declared in <root>'
          CALL 'public abstract fun getValue (t: T of <root>.IDelegate, p: kotlin.reflect.KProperty<*>): T of <root>.IDelegate declared in <root>.IDelegate' type=T of <root>.<get-property2> origin=null
            ARG <this>: GET_FIELD 'FIELD PROPERTY_DELEGATE name:property2$delegate type:<root>.IDelegate<T of <root>.<get-property2>> visibility:private [final,static] declared in <root>' type=<root>.IDelegate<T of <root>.<get-property2>> origin=null
            ARG t: GET_VAR '<this>: T of <root>.<get-property2> declared in <root>.<get-property2>' type=T of <root>.<get-property2> origin=null
            ARG p: PROPERTY_REFERENCE 'public final property2: T of <root>.<get-property2> declared in <root>' field=null getter='public final fun <get-property2> <T> (<this>: T of <root>.<get-property2>): T of <root>.<get-property2> declared in <root>' setter=null type=kotlin.reflect.KProperty1<T of <root>.<get-property2>, T of <root>.<get-property2>> origin=PROPERTY_REFERENCE_FOR_DELEGATE
              TYPE_ARG 1: T of <root>.<get-property2>
  CLASS INTERFACE name:IDelegate modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.IDelegate<T of <root>.IDelegate>
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [fake_override,operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
      VALUE_PARAMETER kind:Regular name:other index:1 type:kotlin.Any?
      overridden:
        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN returnType:kotlin.Int [fake_override]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN returnType:kotlin.String [fake_override]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:kotlin.Any
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
    FUN name:getValue visibility:public modality:ABSTRACT returnType:T of <root>.IDelegate [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.IDelegate<T of <root>.IDelegate>
      VALUE_PARAMETER kind:Regular name:t index:1 type:T of <root>.IDelegate
      VALUE_PARAMETER kind:Regular name:p index:2 type:kotlin.reflect.KProperty<*>
  FUN name:box visibility:public modality:FINAL returnType:kotlin.String
    BLOCK_BODY
      VAR name:superInterfaces type:kotlin.Array<java.lang.reflect.Type> [val]
        TYPE_OP type=@[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?> origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>
          CALL 'public open fun getGenericInterfaces (): @[FlexibleNullability] @[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>? declared in java.lang.Class' type=@[FlexibleNullability] @[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>? origin=null
            ARG <this>: TYPE_OP type=java.lang.Class<*> origin=IMPLICIT_NOTNULL typeOperand=java.lang.Class<*>
              CALL 'public open fun forName (p0: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] java.lang.Class<*>? declared in java.lang.Class' type=@[FlexibleNullability] java.lang.Class<*>? origin=null
                ARG p0: CONST String type=kotlin.String value="TypeParameterInDelegatedPropertyKt$property$2"
      WHEN type=kotlin.Unit origin=IF
        BRANCH
          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
            ARG <this>: CALL 'public final fun contains (<this>: kotlin.CharSequence, other: kotlin.CharSequence, ignoreCase: kotlin.Boolean): kotlin.Boolean declared in kotlin.text' type=kotlin.Boolean origin=null
              ARG <this>: CALL 'public open fun toString (): kotlin.String declared in java.lang.reflect.Type' type=kotlin.String origin=null
                ARG <this>: TYPE_OP type=kotlin.Any origin=IMPLICIT_CAST typeOperand=kotlin.Any
                  CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=java.lang.reflect.Type origin=GET_ARRAY_ELEMENT
                    ARG <this>: GET_VAR 'val superInterfaces: kotlin.Array<java.lang.reflect.Type> declared in <root>.box' type=kotlin.Array<java.lang.reflect.Type> origin=null
                    ARG index: CONST Int type=kotlin.Int value=0
              ARG other: CONST String type=kotlin.String value="IDelegate<java.lang.Object>"
          then: RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
            CONST String type=kotlin.String value="FAIL"
      VAR name:superInterfaces2 type:kotlin.Array<java.lang.reflect.Type> [val]
        TYPE_OP type=@[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?> origin=IMPLICIT_NOTNULL typeOperand=@[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>
          CALL 'public open fun getGenericInterfaces (): @[FlexibleNullability] @[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>? declared in java.lang.Class' type=@[FlexibleNullability] @[FlexibleArrayElementVariance] kotlin.Array<out @[FlexibleNullability] java.lang.reflect.Type?>? origin=null
            ARG <this>: TYPE_OP type=java.lang.Class<*> origin=IMPLICIT_NOTNULL typeOperand=java.lang.Class<*>
              CALL 'public open fun forName (p0: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] java.lang.Class<*>? declared in java.lang.Class' type=@[FlexibleNullability] java.lang.Class<*>? origin=null
                ARG p0: CONST String type=kotlin.String value="TypeParameterInDelegatedPropertyKt$property2$2$1"
      WHEN type=kotlin.Unit origin=IF
        BRANCH
          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
            ARG <this>: CALL 'public final fun contains (<this>: kotlin.CharSequence, other: kotlin.CharSequence, ignoreCase: kotlin.Boolean): kotlin.Boolean declared in kotlin.text' type=kotlin.Boolean origin=null
              ARG <this>: CALL 'public open fun toString (): kotlin.String declared in java.lang.reflect.Type' type=kotlin.String origin=null
                ARG <this>: TYPE_OP type=kotlin.Any origin=IMPLICIT_CAST typeOperand=kotlin.Any
                  CALL 'public final fun get (index: kotlin.Int): T of kotlin.Array declared in kotlin.Array' type=java.lang.reflect.Type origin=GET_ARRAY_ELEMENT
                    ARG <this>: GET_VAR 'val superInterfaces2: kotlin.Array<java.lang.reflect.Type> declared in <root>.box' type=kotlin.Array<java.lang.reflect.Type> origin=null
                    ARG index: CONST Int type=kotlin.Int value=0
              ARG other: CONST String type=kotlin.String value="IDelegate<java.lang.Object>"
          then: RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
            CONST String type=kotlin.String value="FAIL"
      WHEN type=kotlin.Unit origin=IF
        BRANCH
          if: CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
            ARG <this>: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
              ARG arg0: CALL 'public final fun <get-property2> <T> (<this>: T of <root>.<get-property2>): T of <root>.<get-property2> declared in <root>' type=kotlin.String origin=GET_PROPERTY
                TYPE_ARG T: kotlin.String
                ARG <this>: CONST String type=kotlin.String value="OK"
              ARG arg1: CONST String type=kotlin.String value="OK"
          then: RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
            CONST String type=kotlin.String value="FAIL"
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
        CONST String type=kotlin.String value="OK"
