FILE fqName:<root> fileName:/kt1199.kt
  CLASS INTERFACE name:MyIterator modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.MyIterator<T of <root>.MyIterator>
    TYPE_PARAMETER name:T 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 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:hasNext visibility:public modality:ABSTRACT returnType:kotlin.Boolean [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.MyIterator<T of <root>.MyIterator>
    FUN name:next visibility:public modality:ABSTRACT returnType:T of <root>.MyIterator [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.MyIterator<T of <root>.MyIterator>
  FUN name:box visibility:public modality:FINAL returnType:kotlin.String
    BLOCK_BODY
      VAR name:k type:kotlin.Int [var]
        CONST Int type=kotlin.Int value=0
      BLOCK type=kotlin.Unit origin=FOR_LOOP
        VAR FOR_LOOP_ITERATOR name:tmp_0 type:<root>.MyIterator<kotlin.Int> [val]
          CALL 'public final fun iterator <T> (<this>: T of <root>.iterator?): <root>.MyIterator<T of <root>.iterator> declared in <root>' type=<root>.MyIterator<kotlin.Int> origin=null
            TYPE_ARG T: kotlin.Int
            ARG <this>: CONST Int type=kotlin.Int value=1
        WHILE label=null origin=FOR_LOOP_INNER_WHILE
          condition: CALL 'public abstract fun hasNext (): kotlin.Boolean declared in <root>.MyIterator' type=kotlin.Boolean origin=null
            ARG <this>: GET_VAR 'val tmp_0: <root>.MyIterator<kotlin.Int> declared in <root>.box' type=<root>.MyIterator<kotlin.Int> origin=null
          body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
            VAR name:i type:kotlin.Int [val]
              CALL 'public abstract fun next (): T of <root>.MyIterator declared in <root>.MyIterator' type=kotlin.Int origin=null
                ARG <this>: GET_VAR 'val tmp_0: <root>.MyIterator<kotlin.Int> declared in <root>.box' type=<root>.MyIterator<kotlin.Int> origin=null
            TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
              BLOCK type=kotlin.Int origin=POSTFIX_INCR
                VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlin.Int [val]
                  GET_VAR 'var k: kotlin.Int declared in <root>.box' type=kotlin.Int origin=POSTFIX_INCR
                SET_VAR 'var k: kotlin.Int declared in <root>.box' type=kotlin.Unit origin=POSTFIX_INCR
                  CALL 'public final fun inc (): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
                    ARG <this>: GET_VAR 'val tmp_1: kotlin.Int declared in <root>.box' type=kotlin.Int origin=null
                GET_VAR 'val tmp_1: kotlin.Int declared in <root>.box' type=kotlin.Int origin=null
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
        WHEN type=kotlin.String origin=IF
          BRANCH
            if: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQ
              ARG arg0: GET_VAR 'var k: kotlin.Int declared in <root>.box' type=kotlin.Int origin=null
              ARG arg1: CONST Int type=kotlin.Int value=1
            then: CONST String type=kotlin.String value="OK"
          BRANCH
            if: CONST Boolean type=kotlin.Boolean value=true
            then: CONST String type=kotlin.String value="fail"
  FUN name:iterator visibility:public modality:FINAL returnType:<root>.MyIterator<T of <root>.iterator> [operator]
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any] reified:false
    VALUE_PARAMETER kind:ExtensionReceiver name:<this> index:0 type:T of <root>.iterator?
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun iterator <T> (<this>: T of <root>.iterator?): <root>.MyIterator<T of <root>.iterator> declared in <root>'
        BLOCK type=<root>.iterator.<no name provided><T of <root>.iterator> origin=OBJECT_LITERAL
          CLASS CLASS name:<no name provided> modality:FINAL visibility:local superTypes:[<root>.MyIterator<T of <root>.iterator>]
            thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.iterator.<no name provided><T of <root>.iterator>
            PROPERTY name:hasNext visibility:private modality:FINAL [var]
              FIELD PROPERTY_BACKING_FIELD name:hasNext type:kotlin.Boolean visibility:private
                EXPRESSION_BODY
                  CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
                    ARG <this>: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
                      ARG arg0: GET_VAR '<this>: T of <root>.iterator? declared in <root>.iterator' type=T of <root>.iterator? origin=null
                      ARG arg1: CONST Null type=kotlin.Nothing? value=null
              FUN DEFAULT_PROPERTY_ACCESSOR name:<get-hasNext> visibility:private modality:FINAL returnType:kotlin.Boolean
                VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.iterator.<no name provided><T of <root>.iterator>
                correspondingProperty: PROPERTY name:hasNext visibility:private modality:FINAL [var]
                BLOCK_BODY
                  RETURN type=kotlin.Nothing from='private final fun <get-hasNext> (): kotlin.Boolean declared in <root>.iterator.<no name provided>'
                    GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:hasNext type:kotlin.Boolean visibility:private' type=kotlin.Boolean origin=null
                      receiver: GET_VAR '<this>: <root>.iterator.<no name provided><T of <root>.iterator> declared in <root>.iterator.<no name provided>.<get-hasNext>' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=null
              FUN DEFAULT_PROPERTY_ACCESSOR name:<set-hasNext> visibility:private modality:FINAL returnType:kotlin.Unit
                VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.iterator.<no name provided><T of <root>.iterator>
                VALUE_PARAMETER kind:Regular name:<set-?> index:1 type:kotlin.Boolean
                correspondingProperty: PROPERTY name:hasNext visibility:private modality:FINAL [var]
                BLOCK_BODY
                  SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:hasNext type:kotlin.Boolean visibility:private' type=kotlin.Unit origin=null
                    receiver: GET_VAR '<this>: <root>.iterator.<no name provided><T of <root>.iterator> declared in <root>.iterator.<no name provided>.<set-hasNext>' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=null
                    value: GET_VAR '<set-?>: kotlin.Boolean declared in <root>.iterator.<no name provided>.<set-hasNext>' type=kotlin.Boolean origin=null
            CONSTRUCTOR visibility:public returnType:<root>.iterator.<no name provided><T of <root>.iterator> [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>.MyIterator<T of <root>.iterator>]' 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>.MyIterator
            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>.MyIterator
            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>.MyIterator
            FUN name:hasNext visibility:public modality:OPEN returnType:kotlin.Boolean [operator]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.iterator.<no name provided><T of <root>.iterator>
              overridden:
                public abstract fun hasNext (): kotlin.Boolean declared in <root>.MyIterator
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='public open fun hasNext (): kotlin.Boolean declared in <root>.iterator.<no name provided>'
                  CALL 'private final fun <get-hasNext> (): kotlin.Boolean declared in <root>.iterator.<no name provided>' type=kotlin.Boolean origin=GET_PROPERTY
                    ARG <this>: GET_VAR '<this>: <root>.iterator.<no name provided><T of <root>.iterator> declared in <root>.iterator.<no name provided>.hasNext' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=IMPLICIT_ARGUMENT
            FUN name:next visibility:public modality:OPEN returnType:T of <root>.iterator [operator]
              VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.iterator.<no name provided><T of <root>.iterator>
              overridden:
                public abstract fun next (): T of <root>.MyIterator declared in <root>.MyIterator
              BLOCK_BODY
                WHEN type=kotlin.Unit origin=IF
                  BRANCH
                    if: CALL 'private final fun <get-hasNext> (): kotlin.Boolean declared in <root>.iterator.<no name provided>' type=kotlin.Boolean origin=GET_PROPERTY
                      ARG <this>: GET_VAR '<this>: <root>.iterator.<no name provided><T of <root>.iterator> declared in <root>.iterator.<no name provided>.next' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=IMPLICIT_ARGUMENT
                    then: BLOCK type=kotlin.Unit origin=null
                      CALL 'private final fun <set-hasNext> (<set-?>: kotlin.Boolean): kotlin.Unit declared in <root>.iterator.<no name provided>' type=kotlin.Unit origin=EQ
                        ARG <this>: GET_VAR '<this>: <root>.iterator.<no name provided><T of <root>.iterator> declared in <root>.iterator.<no name provided>.next' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=IMPLICIT_ARGUMENT
                        ARG <set-?>: CONST Boolean type=kotlin.Boolean value=false
                      RETURN type=kotlin.Nothing from='public open fun next (): T of <root>.iterator declared in <root>.iterator.<no name provided>'
                        CALL 'public final fun CHECK_NOT_NULL <T0> (arg0: T0 of kotlin.internal.ir.CHECK_NOT_NULL?): {T0 of kotlin.internal.ir.CHECK_NOT_NULL & Any} declared in kotlin.internal.ir' type={T of <root>.iterator & Any} origin=EXCLEXCL
                          TYPE_ARG T0: {T of <root>.iterator & Any}
                          ARG arg0: GET_VAR '<this>: T of <root>.iterator? declared in <root>.iterator' type=T of <root>.iterator? origin=null
                THROW type=kotlin.Nothing
                  CONSTRUCTOR_CALL 'public constructor <init> () declared in java.util.NoSuchElementException' type=java.util.NoSuchElementException origin=null
          CONSTRUCTOR_CALL 'public constructor <init> () declared in <root>.iterator.<no name provided>' type=<root>.iterator.<no name provided><T of <root>.iterator> origin=OBJECT_LITERAL
