FILE fqName:<root> fileName:/intersectionType3.kt
  CLASS INTERFACE name:In modality:ABSTRACT visibility:public flags: superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:In<T> flags:
    TYPE_PARAMETER name:T index:0 variance:in superTypes:[kotlin.Any?]
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  FUN name:isT visibility:public modality:FINAL <T> ($receiver:In<T>) returnType:kotlin.Boolean flags:inline
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
    $receiver: VALUE_PARAMETER name:<this> type:In<T> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='isT() on In<T>: Boolean'
        TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=T
          typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
          GET_VAR 'this@isT: In<T>' type=In<T> origin=null
  FUN name:asT visibility:public modality:FINAL <T> ($receiver:In<T>) returnType:kotlin.Unit flags:inline
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
    $receiver: VALUE_PARAMETER name:<this> type:In<T> flags:
    BLOCK_BODY
      TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
        typeOperand: CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public flags: superTypes:[kotlin.Any]
        TYPE_OP type=T origin=CAST typeOperand=T
          typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
          GET_VAR 'this@asT: In<T>' type=In<T> origin=null
  FUN name:sel visibility:public modality:FINAL <S> (x:S, y:S) returnType:S flags:
    TYPE_PARAMETER name:S index:0 variance: superTypes:[kotlin.Any?]
    VALUE_PARAMETER name:x index:0 type:S flags:
    VALUE_PARAMETER name:y index:1 type:S flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='sel(S, S): S'
        GET_VAR 'value-parameter x: S' type=S origin=null
  CLASS INTERFACE name:A modality:ABSTRACT visibility:public flags: superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:A flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  CLASS INTERFACE name:B modality:ABSTRACT visibility:public flags: superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:B flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  CLASS INTERFACE name:A1 modality:ABSTRACT visibility:public flags: superTypes:[A]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:A1 flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  CLASS INTERFACE name:A2 modality:ABSTRACT visibility:public flags: superTypes:[A]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:A2 flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  CLASS INTERFACE name:Z1 modality:ABSTRACT visibility:public flags: superTypes:[A; B]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:Z1 flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  CLASS INTERFACE name:Z2 modality:ABSTRACT visibility:public flags: superTypes:[A; B]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:Z2 flags:
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      overridden:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
        FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
      VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      overridden:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
        FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      overridden:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
        FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
  FUN name:testInIs1 visibility:public modality:FINAL <> (x:In<A>, y:In<B>) returnType:kotlin.Boolean flags:
    VALUE_PARAMETER name:x index:0 type:In<A> flags:
    VALUE_PARAMETER name:y index:1 type:In<B> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInIs1(In<A>, In<B>): Boolean'
        CALL 'isT() on In<T>: Boolean' type=kotlin.Boolean origin=null
          <reified T>: kotlin.Any
          $receiver: CALL 'sel(S, S): S' type=In<kotlin.Any> origin=null
            <S>: In<kotlin.Any>
            x: GET_VAR 'value-parameter x: In<A>' type=In<A> origin=null
            y: GET_VAR 'value-parameter y: In<B>' type=In<B> origin=null
  FUN name:testInIs2 visibility:public modality:FINAL <> (x:In<Z1>, y:In<Z2>) returnType:kotlin.Boolean flags:
    VALUE_PARAMETER name:x index:0 type:In<Z1> flags:
    VALUE_PARAMETER name:y index:1 type:In<Z2> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInIs2(In<Z1>, In<Z2>): Boolean'
        CALL 'isT() on In<T>: Boolean' type=kotlin.Boolean origin=null
          <reified T>: kotlin.Any
          $receiver: CALL 'sel(S, S): S' type=In<kotlin.Any> origin=null
            <S>: In<kotlin.Any>
            x: GET_VAR 'value-parameter x: In<Z1>' type=In<Z1> origin=null
            y: GET_VAR 'value-parameter y: In<Z2>' type=In<Z2> origin=null
  FUN name:testInIs3 visibility:public modality:FINAL <> (x:In<A1>, y:In<A2>) returnType:kotlin.Boolean flags:
    VALUE_PARAMETER name:x index:0 type:In<A1> flags:
    VALUE_PARAMETER name:y index:1 type:In<A2> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInIs3(In<A1>, In<A2>): Boolean'
        CALL 'isT() on In<T>: Boolean' type=kotlin.Boolean origin=null
          <reified T>: A
          $receiver: CALL 'sel(S, S): S' type=In<A> origin=null
            <S>: In<A>
            x: GET_VAR 'value-parameter x: In<A1>' type=In<A1> origin=null
            y: GET_VAR 'value-parameter y: In<A2>' type=In<A2> origin=null
  FUN name:testInAs1 visibility:public modality:FINAL <> (x:In<A>, y:In<B>) returnType:kotlin.Unit flags:
    VALUE_PARAMETER name:x index:0 type:In<A> flags:
    VALUE_PARAMETER name:y index:1 type:In<B> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInAs1(In<A>, In<B>): Unit'
        CALL 'asT() on In<T>: Unit' type=kotlin.Unit origin=null
          <reified T>: kotlin.Any
          $receiver: CALL 'sel(S, S): S' type=In<kotlin.Any> origin=null
            <S>: In<kotlin.Any>
            x: GET_VAR 'value-parameter x: In<A>' type=In<A> origin=null
            y: GET_VAR 'value-parameter y: In<B>' type=In<B> origin=null
  FUN name:testInAs2 visibility:public modality:FINAL <> (x:In<Z1>, y:In<Z2>) returnType:kotlin.Unit flags:
    VALUE_PARAMETER name:x index:0 type:In<Z1> flags:
    VALUE_PARAMETER name:y index:1 type:In<Z2> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInAs2(In<Z1>, In<Z2>): Unit'
        CALL 'asT() on In<T>: Unit' type=kotlin.Unit origin=null
          <reified T>: kotlin.Any
          $receiver: CALL 'sel(S, S): S' type=In<kotlin.Any> origin=null
            <S>: In<kotlin.Any>
            x: GET_VAR 'value-parameter x: In<Z1>' type=In<Z1> origin=null
            y: GET_VAR 'value-parameter y: In<Z2>' type=In<Z2> origin=null
  FUN name:testInAs3 visibility:public modality:FINAL <> (x:In<A1>, y:In<A2>) returnType:kotlin.Unit flags:
    VALUE_PARAMETER name:x index:0 type:In<A1> flags:
    VALUE_PARAMETER name:y index:1 type:In<A2> flags:
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='testInAs3(In<A1>, In<A2>): Unit'
        CALL 'asT() on In<T>: Unit' type=kotlin.Unit origin=null
          <reified T>: A
          $receiver: CALL 'sel(S, S): S' type=In<A> origin=null
            <S>: In<A>
            x: GET_VAR 'value-parameter x: In<A1>' type=In<A1> origin=null
            y: GET_VAR 'value-parameter y: In<A2>' type=In<A2> origin=null
