FILE fqName:<root> fileName:/delegationToIntersectionType3.kt
  CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.A; <root>.BBB<T3 of <root>.C>]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.C<T3 of <root>.C>
    TYPE_PARAMETER name:T3 index:0 variance: superTypes:[kotlin.Any?] reified:false
    PROPERTY name:x visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:x type:T3 of <root>.C visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'x: T3 of <root>.C declared in <root>.C.<init>' type=T3 of <root>.C origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL returnType:T3 of <root>.C
        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.C<T3 of <root>.C>
        correspondingProperty: PROPERTY name:x visibility:public modality:FINAL [val]
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-x> (): T3 of <root>.C declared in <root>.C'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:T3 of <root>.C visibility:private [final]' type=T3 of <root>.C origin=null
              receiver: GET_VAR '<this>: <root>.C<T3 of <root>.C> declared in <root>.C.<get-x>' type=<root>.C<T3 of <root>.C> origin=null
    CONSTRUCTOR visibility:public returnType:<root>.C<T3 of <root>.C> [primary]
      VALUE_PARAMETER kind:Regular name:x index:0 type:T3 of <root>.C
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.A; <root>.BBB<T3 of <root>.C>]' 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>.A
        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.BBB
    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>.A
        public open fun hashCode (): kotlin.Int declared in <root>.BBB
    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>.A
        public open fun toString (): kotlin.String declared in <root>.BBB
    FUN name:foo visibility:public modality:OPEN returnType:T3 of <root>.C
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.C<T3 of <root>.C>
      overridden:
        public abstract fun foo (): T2 of <root>.BBB declared in <root>.BBB
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun foo (): T3 of <root>.C declared in <root>.C'
          CALL 'public final fun <get-x> (): T3 of <root>.C declared in <root>.C' type=T3 of <root>.C origin=GET_PROPERTY
            ARG <this>: GET_VAR '<this>: <root>.C<T3 of <root>.C> declared in <root>.C.foo' type=<root>.C<T3 of <root>.C> origin=IMPLICIT_ARGUMENT
  CLASS CLASS name:D modality:FINAL visibility:public superTypes:[<root>.A; <root>.BBB<T4 of <root>.D>]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.D<T4 of <root>.D>
    TYPE_PARAMETER name:T4 index:0 variance: superTypes:[kotlin.Any?] reified:false
    PROPERTY name:x visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:x type:T4 of <root>.D visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'x: T4 of <root>.D declared in <root>.D.<init>' type=T4 of <root>.D origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL returnType:T4 of <root>.D
        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.D<T4 of <root>.D>
        correspondingProperty: PROPERTY name:x visibility:public modality:FINAL [val]
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-x> (): T4 of <root>.D declared in <root>.D'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:T4 of <root>.D visibility:private [final]' type=T4 of <root>.D origin=null
              receiver: GET_VAR '<this>: <root>.D<T4 of <root>.D> declared in <root>.D.<get-x>' type=<root>.D<T4 of <root>.D> origin=null
    CONSTRUCTOR visibility:public returnType:<root>.D<T4 of <root>.D> [primary]
      VALUE_PARAMETER kind:Regular name:x index:0 type:T4 of <root>.D
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:D modality:FINAL visibility:public superTypes:[<root>.A; <root>.BBB<T4 of <root>.D>]' 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>.A
        public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.BBB
    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>.A
        public open fun hashCode (): kotlin.Int declared in <root>.BBB
    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>.A
        public open fun toString (): kotlin.String declared in <root>.BBB
    FUN name:foo visibility:public modality:OPEN returnType:T4 of <root>.D
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.D<T4 of <root>.D>
      overridden:
        public abstract fun foo (): T2 of <root>.BBB declared in <root>.BBB
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun foo (): T4 of <root>.D declared in <root>.D'
          CALL 'public final fun <get-x> (): T4 of <root>.D declared in <root>.D' type=T4 of <root>.D origin=GET_PROPERTY
            ARG <this>: GET_VAR '<this>: <root>.D<T4 of <root>.D> declared in <root>.D.foo' type=<root>.D<T4 of <root>.D> origin=IMPLICIT_ARGUMENT
  CLASS INTERFACE name:A modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.A
    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
  CLASS INTERFACE name:B modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.B<T of <root>.B>
    TYPE_PARAMETER name:T index:0 variance:out 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:foo visibility:public modality:ABSTRACT returnType:T of <root>.B
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.B<T of <root>.B>
  CLASS INTERFACE name:BB modality:ABSTRACT visibility:public superTypes:[<root>.B<T1 of <root>.BB>]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.BB<T1 of <root>.BB>
    TYPE_PARAMETER name:T1 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 <root>.B
    FUN FAKE_OVERRIDE name:foo visibility:public modality:ABSTRACT returnType:T1 of <root>.BB [fake_override]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.B<T1 of <root>.BB>
      overridden:
        public abstract fun foo (): T of <root>.B declared in <root>.B
    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>.B
    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>.B
  CLASS INTERFACE name:BBB modality:ABSTRACT visibility:public superTypes:[<root>.BB<T2 of <root>.BBB>]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.BBB<T2 of <root>.BBB>
    TYPE_PARAMETER name:T2 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 <root>.BB
    FUN FAKE_OVERRIDE name:foo visibility:public modality:ABSTRACT returnType:T2 of <root>.BBB [fake_override]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.B<T2 of <root>.BBB>
      overridden:
        public abstract fun foo (): T1 of <root>.BB declared in <root>.BB
    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>.BB
    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>.BB
  FUN name:box visibility:public modality:FINAL returnType:kotlin.String
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
        CALL 'public final fun test (c: <root>.C<kotlin.String>, d: <root>.D<kotlin.String>): kotlin.String declared in <root>' type=kotlin.String origin=null
          ARG c: CONSTRUCTOR_CALL 'public constructor <init> (x: T3 of <root>.C) declared in <root>.C' type=<root>.C<kotlin.String> origin=null
            TYPE_ARG (of class) T3: kotlin.String
            ARG x: CONST String type=kotlin.String value="OK"
          ARG d: CONSTRUCTOR_CALL 'public constructor <init> (x: T4 of <root>.D) declared in <root>.D' type=<root>.D<kotlin.String> origin=null
            TYPE_ARG (of class) T4: kotlin.String
            ARG x: CONST String type=kotlin.String value="FAIL"
  FUN name:select visibility:public modality:FINAL returnType:T of <root>.select
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
    VALUE_PARAMETER kind:Regular name:a index:0 type:T of <root>.select
    VALUE_PARAMETER kind:Regular name:b index:1 type:T of <root>.select
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun select <T> (a: T of <root>.select, b: T of <root>.select): T of <root>.select declared in <root>'
        GET_VAR 'a: T of <root>.select declared in <root>.select' type=T of <root>.select origin=null
  FUN name:test visibility:public modality:FINAL returnType:kotlin.String
    VALUE_PARAMETER kind:Regular name:c index:0 type:<root>.C<kotlin.String>
    VALUE_PARAMETER kind:Regular name:d index:1 type:<root>.D<kotlin.String>
    BLOCK_BODY
      VAR name:intersection type:kotlin.Any [val]
        CALL 'public final fun select <T> (a: T of <root>.select, b: T of <root>.select): T of <root>.select declared in <root>' type=kotlin.Any origin=null
          TYPE_ARG T: kotlin.Any
          ARG a: GET_VAR 'c: <root>.C<kotlin.String> declared in <root>.test' type=<root>.C<kotlin.String> origin=null
          ARG b: GET_VAR 'd: <root>.D<kotlin.String> declared in <root>.test' type=<root>.D<kotlin.String> origin=null
      RETURN type=kotlin.Nothing from='public final fun test (c: <root>.C<kotlin.String>, d: <root>.D<kotlin.String>): kotlin.String declared in <root>'
        TYPE_OP type=kotlin.String origin=CAST typeOperand=kotlin.String
          CALL 'public open fun foo (): kotlin.CharSequence declared in <root>.test.<no name provided>' type=kotlin.CharSequence origin=null
            ARG <this>: BLOCK type=<root>.test.<no name provided> origin=OBJECT_LITERAL
              CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.BBB<kotlin.CharSequence>; <root>.B<kotlin.CharSequence>]
                thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.test.<no name provided>
                FIELD DELEGATE name:$$delegate_0 type:kotlin.Any visibility:private [final]
                  EXPRESSION_BODY
                    GET_VAR 'val intersection: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
                CONSTRUCTOR visibility:public returnType:<root>.test.<no name provided> [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>.BBB<kotlin.CharSequence>; <root>.B<kotlin.CharSequence>]' type=kotlin.Unit
                FUN DELEGATED_MEMBER name:foo visibility:public modality:OPEN returnType:kotlin.CharSequence
                  VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.test.<no name provided>
                  overridden:
                    public abstract fun foo (): T2 of <root>.BBB declared in <root>.BBB
                    public abstract fun foo (): T of <root>.B declared in <root>.B
                  BLOCK_BODY
                    RETURN type=kotlin.Nothing from='public open fun foo (): kotlin.CharSequence declared in <root>.test.<no name provided>'
                      CALL 'public abstract fun foo (): T2 of <root>.BBB declared in <root>.BBB' type=kotlin.String origin=null
                        ARG <this>: TYPE_OP type=<root>.BBB<*> origin=IMPLICIT_CAST typeOperand=<root>.BBB<*>
                          GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:kotlin.Any visibility:private [final] declared in <root>.test.<no name provided>' type=kotlin.Any origin=null
                            receiver: GET_VAR '<this>: <root>.test.<no name provided> declared in <root>.test.<no name provided>.foo' type=<root>.test.<no name provided> origin=null
                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>.BBB
                    public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.B
                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>.BBB
                    public open fun hashCode (): kotlin.Int declared in <root>.B
                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>.BBB
                    public open fun toString (): kotlin.String declared in <root>.B
              CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.test.<no name provided>' type=<root>.test.<no name provided> origin=OBJECT_LITERAL
