FILE fqName:test fileName:/typeParameterInDelegatedProperty.kt
  PROPERTY name:property visibility:public modality:FINAL [delegated,val]
    FIELD PROPERTY_DELEGATE name:property$delegate type:test.property$delegate.<no name provided><T of test.<get-property>> visibility:private [final,static]
      EXPRESSION_BODY
        BLOCK type=test.property$delegate.<no name provided><T of test.<get-property>> origin=OBJECT_LITERAL
          CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[test.IDelegate<kotlin.Any?>]
            thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:test.property$delegate.<no name provided><T of test.<get-property>>
            CONSTRUCTOR visibility:public returnType:test.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:[test.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 test.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 test.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 test.IDelegate
            FUN name:getValue visibility:public modality:OPEN returnType:kotlin.Any? [operator]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:test.property$delegate.<no name provided><T of test.<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 test.IDelegate, p: kotlin.reflect.KProperty<*>): T of test.IDelegate declared in test.IDelegate
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in test.property$delegate.<no name provided>'
                  GET_VAR 't: kotlin.Any? declared in test.property$delegate.<no name provided>.getValue' type=kotlin.Any? origin=null
          CONSTRUCTOR_CALL 'public constructor <init> () declared in test.property$delegate.<no name provided>' type=test.property$delegate.<no name provided><T of test.<get-property>> origin=OBJECT_LITERAL
    FUN DELEGATED_PROPERTY_ACCESSOR name:<get-property> visibility:public modality:FINAL returnType:T of test.<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 test.<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 test.<get-property>): T of test.<get-property> declared in test'
          CALL 'public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in test.property$delegate.<no name provided>' type=T of test.<get-property> origin=null
            ARG <this>: GET_FIELD 'FIELD PROPERTY_DELEGATE name:property$delegate type:test.property$delegate.<no name provided><T of test.<get-property>> visibility:private [final,static] declared in test' type=test.property$delegate.<no name provided><T of test.<get-property>> origin=null
            ARG t: GET_VAR '<this>: T of test.<get-property> declared in test.<get-property>' type=T of test.<get-property> origin=null
            ARG p: PROPERTY_REFERENCE 'public final property: T of test.<get-property> declared in test' field=null getter='public final fun <get-property> <T> (<this>: T of test.<get-property>): T of test.<get-property> declared in test' setter=null type=kotlin.reflect.KProperty1<T of test.<get-property>, T of test.<get-property>> origin=PROPERTY_REFERENCE_FOR_DELEGATE
              TYPE_ARG 1: T of test.<get-property>
  PROPERTY name:property2 visibility:public modality:FINAL [delegated,val]
    FIELD PROPERTY_DELEGATE name:property2$delegate type:test.IDelegate<T of test.<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=test.IDelegate<T of test.<get-property2>> origin=null
          TYPE_ARG R: test.IDelegate<T of test.<get-property2>>
          ARG block: FUN_EXPR type=kotlin.Function0<test.IDelegate<T of test.<get-property2>>> origin=LAMBDA
            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL returnType:test.IDelegate<T of test.<get-property2>>
              BLOCK_BODY
                FUN LOCAL_FUNCTION name:test visibility:local modality:FINAL returnType:T of test.<get-property2>
                  VALUE_PARAMETER kind:Regular name:t index:0 type:T of test.<get-property2>
                  BLOCK_BODY
                    RETURN type=kotlin.Nothing from='local final fun test (t: T of test.<get-property2>): T of test.<get-property2> declared in test.property2$delegate.<anonymous>'
                      GET_VAR 't: T of test.<get-property2> declared in test.property2$delegate.<anonymous>.test' type=T of test.<get-property2> origin=null
                RETURN type=kotlin.Nothing from='local final fun <anonymous> (): test.IDelegate<T of test.<get-property2>> declared in test.property2$delegate'
                  BLOCK type=test.property2$delegate.<anonymous>.<no name provided><T of test.<get-property2>> origin=OBJECT_LITERAL
                    CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[test.IDelegate<kotlin.Any?>]
                      thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:test.property2$delegate.<anonymous>.<no name provided><T of test.<get-property2>>
                      CONSTRUCTOR visibility:public returnType:test.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:[test.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 test.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 test.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 test.IDelegate
                      FUN name:getValue visibility:public modality:OPEN returnType:kotlin.Any? [operator]
                        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:test.property2$delegate.<anonymous>.<no name provided><T of test.<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 test.IDelegate, p: kotlin.reflect.KProperty<*>): T of test.IDelegate declared in test.IDelegate
                        BLOCK_BODY
                          RETURN type=kotlin.Nothing from='public open fun getValue (t: kotlin.Any?, p: kotlin.reflect.KProperty<*>): kotlin.Any? declared in test.property2$delegate.<anonymous>.<no name provided>'
                            CALL 'local final fun test (t: T of test.<get-property2>): T of test.<get-property2> declared in test.property2$delegate.<anonymous>' type=kotlin.Any? origin=null
                              ARG t: GET_VAR 't: kotlin.Any? declared in test.property2$delegate.<anonymous>.<no name provided>.getValue' type=kotlin.Any? origin=null
                    CONSTRUCTOR_CALL 'public constructor <init> () declared in test.property2$delegate.<anonymous>.<no name provided>' type=test.property2$delegate.<anonymous>.<no name provided><T of test.<get-property2>> origin=OBJECT_LITERAL
    FUN DELEGATED_PROPERTY_ACCESSOR name:<get-property2> visibility:public modality:FINAL returnType:T of test.<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 test.<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 test.<get-property2>): T of test.<get-property2> declared in test'
          CALL 'public abstract fun getValue (t: T of test.IDelegate, p: kotlin.reflect.KProperty<*>): T of test.IDelegate declared in test.IDelegate' type=T of test.<get-property2> origin=null
            ARG <this>: GET_FIELD 'FIELD PROPERTY_DELEGATE name:property2$delegate type:test.IDelegate<T of test.<get-property2>> visibility:private [final,static] declared in test' type=test.IDelegate<T of test.<get-property2>> origin=null
            ARG t: GET_VAR '<this>: T of test.<get-property2> declared in test.<get-property2>' type=T of test.<get-property2> origin=null
            ARG p: PROPERTY_REFERENCE 'public final property2: T of test.<get-property2> declared in test' field=null getter='public final fun <get-property2> <T> (<this>: T of test.<get-property2>): T of test.<get-property2> declared in test' setter=null type=kotlin.reflect.KProperty1<T of test.<get-property2>, T of test.<get-property2>> origin=PROPERTY_REFERENCE_FOR_DELEGATE
              TYPE_ARG 1: T of test.<get-property2>
  CLASS INTERFACE name:IDelegate modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:test.IDelegate<T of test.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 test.IDelegate [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:test.IDelegate<T of test.IDelegate>
      VALUE_PARAMETER kind:Regular name:t index:1 type:T of test.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="test.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 test.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 test'
            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="test.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 test.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 test'
            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 test.<get-property2>): T of test.<get-property2> declared in test' 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 test'
            CONST String type=kotlin.String value="FAIL"
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in test'
        CONST String type=kotlin.String value="OK"
