FILE fqName:<root> fileName:/intersectionType1.kt
  CLASS CLASS name:In modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.In<<root>.In.I> flags:[]
    TYPE_PARAMETER name:I index:0 variance:in superTypes:[kotlin.Any?]
    CONSTRUCTOR visibility:public <> () returnType:<root>.In<<root>.In.I> flags:[primary]
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'CONSTRUCTOR IR_EXTERNAL_DECLARATION_STUB visibility:public <> () returnType:kotlin.Any flags:[primary]'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:In modality:FINAL visibility:public flags:[] 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:select visibility:public modality:FINAL <S> (x:<root>.select.S, y:<root>.select.S) returnType:<root>.select.S flags:[]
    TYPE_PARAMETER name:S index:0 variance: superTypes:[kotlin.Any?]
    VALUE_PARAMETER name:x index:0 type:<root>.select.S flags:[]
    VALUE_PARAMETER name:y index:1 type:<root>.select.S flags:[]
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='FUN name:select visibility:public modality:FINAL <S> (x:<root>.select.S, y:<root>.select.S) returnType:<root>.select.S flags:[]'
        GET_VAR 'VALUE_PARAMETER name:x index:0 type:<root>.select.S flags:[]' type=<root>.select.S origin=null
  FUN name:foo visibility:public modality:FINAL <T> (a:kotlin.Array<<root>.In<<root>.foo.T>>, b:kotlin.Array<<root>.In<kotlin.String>>) returnType:kotlin.Boolean flags:[]
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
    VALUE_PARAMETER name:a index:0 type:kotlin.Array<<root>.In<<root>.foo.T>> flags:[]
    VALUE_PARAMETER name:b index:1 type:kotlin.Array<<root>.In<kotlin.String>> flags:[]
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='FUN name:foo visibility:public modality:FINAL <T> (a:kotlin.Array<<root>.In<<root>.foo.T>>, b:kotlin.Array<<root>.In<kotlin.String>>) returnType:kotlin.Boolean flags:[]'
        CALL 'FUN name:ofType visibility:public modality:FINAL <K> ($receiver:<root>.In<<root>.ofType.K>, y:kotlin.Any?) returnType:kotlin.Boolean flags:[inline]' type=kotlin.Boolean origin=null
          <reified K>: kotlin.Any?
          $receiver: CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:get visibility:public modality:FINAL <> ($this:kotlin.Array<kotlin.Array.T>, index:kotlin.Int) returnType:kotlin.Array.T flags:[]' type=<root>.In<kotlin.Any?> origin=GET_ARRAY_ELEMENT
            $this: CALL 'FUN name:select visibility:public modality:FINAL <S> (x:<root>.select.S, y:<root>.select.S) returnType:<root>.select.S flags:[]' type=kotlin.Array<out <root>.In<kotlin.Any?>> origin=null
              <S>: kotlin.Array<out <root>.In<kotlin.Any?>>
              x: GET_VAR 'VALUE_PARAMETER name:a index:0 type:kotlin.Array<<root>.In<<root>.foo.T>> flags:[]' type=kotlin.Array<<root>.In<<root>.foo.T>> origin=null
              y: GET_VAR 'VALUE_PARAMETER name:b index:1 type:kotlin.Array<<root>.In<kotlin.String>> flags:[]' type=kotlin.Array<<root>.In<kotlin.String>> origin=null
            index: CONST Int type=kotlin.Int value=0
          y: CONST Boolean type=kotlin.Boolean value=true
  FUN name:ofType visibility:public modality:FINAL <K> ($receiver:<root>.In<<root>.ofType.K>, y:kotlin.Any?) returnType:kotlin.Boolean flags:[inline]
    TYPE_PARAMETER name:K index:0 variance: superTypes:[kotlin.Any?]
    $receiver: VALUE_PARAMETER name:<this> type:<root>.In<<root>.ofType.K> flags:[]
    VALUE_PARAMETER name:y index:0 type:kotlin.Any? flags:[]
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='FUN name:ofType visibility:public modality:FINAL <K> ($receiver:<root>.In<<root>.ofType.K>, y:kotlin.Any?) returnType:kotlin.Boolean flags:[inline]'
        TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.ofType.K
          typeOperand: TYPE_PARAMETER name:K index:0 variance: superTypes:[kotlin.Any?]
          GET_VAR 'VALUE_PARAMETER name:y index:0 type:kotlin.Any? flags:[]' type=kotlin.Any? origin=null
  FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Unit flags:[]
    BLOCK_BODY
      VAR name:a1 type:kotlin.Array<<root>.In<kotlin.Int>> flags:[val]
        CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:arrayOf visibility:public modality:FINAL <T> (elements:kotlin.Array<out kotlin.arrayOf.T>) returnType:kotlin.Array<kotlin.arrayOf.T> flags:[inline]' type=kotlin.Array<<root>.In<kotlin.Int>> origin=null
          <reified T>: <root>.In<kotlin.Int>
          elements: VARARG type=kotlin.Array<out <root>.In<kotlin.Int>> varargElementType=<root>.In<kotlin.Int>
            CALL 'CONSTRUCTOR visibility:public <> () returnType:<root>.In<<root>.In.I> flags:[primary]' type=<root>.In<kotlin.Int> origin=null
              <in I>: kotlin.Int
      VAR name:a2 type:kotlin.Array<<root>.In<kotlin.String>> flags:[val]
        CALL 'FUN IR_EXTERNAL_DECLARATION_STUB name:arrayOf visibility:public modality:FINAL <T> (elements:kotlin.Array<out kotlin.arrayOf.T>) returnType:kotlin.Array<kotlin.arrayOf.T> flags:[inline]' type=kotlin.Array<<root>.In<kotlin.String>> origin=null
          <reified T>: <root>.In<kotlin.String>
          elements: VARARG type=kotlin.Array<out <root>.In<kotlin.String>> varargElementType=<root>.In<kotlin.String>
            CALL 'CONSTRUCTOR visibility:public <> () returnType:<root>.In<<root>.In.I> flags:[primary]' type=<root>.In<kotlin.String> origin=null
              <in I>: kotlin.String
      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]
        CALL 'FUN name:foo visibility:public modality:FINAL <T> (a:kotlin.Array<<root>.In<<root>.foo.T>>, b:kotlin.Array<<root>.In<kotlin.String>>) returnType:kotlin.Boolean flags:[]' type=kotlin.Boolean origin=null
          <T>: kotlin.Int
          a: GET_VAR 'VAR name:a1 type:kotlin.Array<<root>.In<kotlin.Int>> flags:[val]' type=kotlin.Array<<root>.In<kotlin.Int>> origin=null
          b: GET_VAR 'VAR name:a2 type:kotlin.Array<<root>.In<kotlin.String>> flags:[val]' type=kotlin.Array<<root>.In<kotlin.String>> origin=null
