FILE fqName:<root> fileName:/multipleSmartCasts.kt
  CLASS INTERFACE name:IC1 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IC1
    FUN name:component1 visibility:public modality:ABSTRACT <> ($this:<root>.IC1) returnType:kotlin.Int [operator]
      $this: VALUE_PARAMETER name:<this> type:<root>.IC1
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
      overridden:
        public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
  CLASS INTERFACE name:IC2 modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IC2
    FUN name:component2 visibility:public modality:ABSTRACT <> ($this:<root>.IC2) returnType:kotlin.String [operator]
      $this: VALUE_PARAMETER name:<this> type:<root>.IC2
    FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
      overridden:
        public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
    FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
    FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
  FUN name:test visibility:public modality:FINAL <> (x:kotlin.Any) returnType:kotlin.Unit
    VALUE_PARAMETER name:x index:0 type:kotlin.Any
    BLOCK_BODY
      WHEN type=kotlin.Unit origin=IF
        BRANCH
          if: WHEN type=kotlin.Boolean origin=ANDAND
            BRANCH
              if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.IC1
                GET_VAR 'x: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
              then: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=<root>.IC2
                TYPE_OP type=<root>.IC1 origin=IMPLICIT_CAST typeOperand=<root>.IC1
                  GET_VAR 'x: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: CONST Boolean type=kotlin.Boolean value=false
          then: BLOCK type=kotlin.Unit origin=null
            VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:kotlin.Any [val]
              TYPE_OP type=<root>.IC1 origin=IMPLICIT_CAST typeOperand=<root>.IC1
                GET_VAR 'x: kotlin.Any declared in <root>.test' type=kotlin.Any origin=null
            VAR name:x1 type:kotlin.Int [val]
              CALL 'public abstract fun component1 (): kotlin.Int [operator] declared in <root>.IC1' type=kotlin.Int origin=COMPONENT_N(index=1)
                $this: TYPE_OP type=<root>.IC1 origin=IMPLICIT_CAST typeOperand=<root>.IC1
                  GET_VAR 'val tmp_0: kotlin.Any [val] declared in <root>.test' type=kotlin.Any origin=null
            VAR name:x2 type:kotlin.String [val]
              CALL 'public abstract fun component2 (): kotlin.String [operator] declared in <root>.IC2' type=kotlin.String origin=COMPONENT_N(index=2)
                $this: TYPE_OP type=<root>.IC2 origin=IMPLICIT_CAST typeOperand=<root>.IC2
                  TYPE_OP type=<root>.IC1 origin=IMPLICIT_CAST typeOperand=<root>.IC1
                    GET_VAR 'val tmp_0: kotlin.Any [val] declared in <root>.test' type=kotlin.Any origin=null
