FILE fqName:<root> fileName:/implicitCastToTypeParameter.kt
  FUN name:test1 visibility:public modality:FINAL <T> ($receiver:kotlin.Any) returnType:<root>.test1.T? flags:[inline]
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
    $receiver: VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='FUN name:test1 visibility:public modality:FINAL <T> ($receiver:kotlin.Any) returnType:<root>.test1.T? flags:[inline]'
        WHEN type=<root>.test1.T? origin=IF
          BRANCH
            if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.test1.T
              typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
              GET_VAR 'VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]' type=kotlin.Any origin=null
            then: TYPE_OP type=<root>.test1.T origin=IMPLICIT_CAST typeOperand=<root>.test1.T
              typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
              GET_VAR 'VALUE_PARAMETER name:<this> type:kotlin.Any flags:[]' type=kotlin.Any origin=null
          BRANCH
            if: CONST Boolean type=kotlin.Boolean value=true
            then: CONST Null type=kotlin.Nothing? value=null
  CLASS INTERFACE name:Foo modality:ABSTRACT visibility:public flags:[] superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Foo<<root>.Foo.T> flags:[]
    TYPE_PARAMETER name:T index:0 variance: 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:[]
  PROPERTY name:asT visibility:public modality:FINAL flags:[val]
    FUN name:<get-asT> visibility:public modality:FINAL <T> ($receiver:<root>.Foo<<root>.<get-asT>.T>) returnType:<root>.<get-asT>.T? flags:[inline]
      correspondingProperty: PROPERTY name:asT visibility:public modality:FINAL flags:[val]
      TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
      $receiver: VALUE_PARAMETER name:<this> type:<root>.Foo<<root>.<get-asT>.T> flags:[]
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='FUN name:<get-asT> visibility:public modality:FINAL <T> ($receiver:<root>.Foo<<root>.<get-asT>.T>) returnType:<root>.<get-asT>.T? flags:[inline]'
          WHEN type=<root>.<get-asT>.T? origin=IF
            BRANCH
              if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.<get-asT>.T
                typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
                GET_VAR 'VALUE_PARAMETER name:<this> type:<root>.Foo<<root>.<get-asT>.T> flags:[]' type=<root>.Foo<<root>.<get-asT>.T> origin=null
              then: TYPE_OP type=<root>.<get-asT>.T origin=IMPLICIT_CAST typeOperand=<root>.<get-asT>.T
                typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any]
                GET_VAR 'VALUE_PARAMETER name:<this> type:<root>.Foo<<root>.<get-asT>.T> flags:[]' type=<root>.Foo<<root>.<get-asT>.T> origin=null
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: CONST Null type=kotlin.Nothing? value=null
  CLASS CLASS name:Bar modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Bar<<root>.Bar.T> flags:[]
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
    CONSTRUCTOR visibility:public <> () returnType:<root>.Bar<<root>.Bar.T> 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:Bar modality:FINAL visibility:public flags:[] superTypes:[kotlin.Any]'
    FUN name:test visibility:public modality:FINAL <> ($this:<root>.Bar<<root>.Bar.T>, arg:kotlin.Any) returnType:kotlin.Unit flags:[]
      $this: VALUE_PARAMETER name:<this> type:<root>.Bar<<root>.Bar.T> flags:[]
      VALUE_PARAMETER name:arg index:0 type:kotlin.Any 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=<root>.Bar.T origin=CAST typeOperand=<root>.Bar.T
            typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
            GET_VAR 'VALUE_PARAMETER name:arg index:0 type:kotlin.Any flags:[]' type=kotlin.Any origin=null
        CALL 'FUN name:useT visibility:public modality:FINAL <> ($this:<root>.Bar<<root>.Bar.T>, t:<root>.Bar.T) returnType:kotlin.Unit flags:[]' type=kotlin.Unit origin=null
          $this: GET_VAR 'VALUE_PARAMETER name:<this> type:<root>.Bar<<root>.Bar.T> flags:[]' type=<root>.Bar<<root>.Bar.T> origin=null
          t: TYPE_OP type=<root>.Bar.T origin=IMPLICIT_CAST typeOperand=<root>.Bar.T
            typeOperand: TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
            GET_VAR 'VALUE_PARAMETER name:arg index:0 type:kotlin.Any flags:[]' type=kotlin.Any origin=null
    FUN name:useT visibility:public modality:FINAL <> ($this:<root>.Bar<<root>.Bar.T>, t:<root>.Bar.T) returnType:kotlin.Unit flags:[]
      $this: VALUE_PARAMETER name:<this> type:<root>.Bar<<root>.Bar.T> flags:[]
      VALUE_PARAMETER name:t index:0 type:<root>.Bar.T flags:[]
      BLOCK_BODY
    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:[]
