FILE fqName:<root> fileName:/iteratorOperator.kt
  CLASS CLASS name:Counter modality:FINAL visibility:public [data] superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Counter
    CONSTRUCTOR visibility:public <> (i:kotlin.Int) returnType:<root>.Counter [primary]
      VALUE_PARAMETER name:i index:0 type:kotlin.Int
        EXPRESSION_BODY
          CONST Int type=kotlin.Int value=0
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Counter modality:FINAL visibility:public [data] superTypes:[kotlin.Any]'
    PROPERTY name:i visibility:public modality:FINAL [var]
      FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private
        EXPRESSION_BODY
          GET_VAR 'i: kotlin.Int declared in <root>.Counter.<init>' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-i> visibility:public modality:FINAL <> ($this:<root>.Counter) returnType:kotlin.Int
        correspondingProperty: PROPERTY name:i visibility:public modality:FINAL [var]
        $this: VALUE_PARAMETER name:<this> type:<root>.Counter
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-i> (): kotlin.Int declared in <root>.Counter'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.<get-i>' type=<root>.Counter origin=null
      FUN DEFAULT_PROPERTY_ACCESSOR name:<set-i> visibility:public modality:FINAL <> ($this:<root>.Counter, <set-?>:kotlin.Int) returnType:kotlin.Unit
        correspondingProperty: PROPERTY name:i visibility:public modality:FINAL [var]
        $this: VALUE_PARAMETER name:<this> type:<root>.Counter
        VALUE_PARAMETER name:<set-?> index:0 type:kotlin.Int
        BLOCK_BODY
          SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Unit origin=null
            receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.<set-i>' type=<root>.Counter origin=null
            value: GET_VAR '<set-?>: kotlin.Int declared in <root>.Counter.<set-i>' type=kotlin.Int origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:component1 visibility:public modality:FINAL <> ($this:<root>.Counter) returnType:kotlin.Int [operator]
      $this: VALUE_PARAMETER name:<this> type:<root>.Counter
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun component1 (): kotlin.Int [operator] declared in <root>.Counter'
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
            receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.component1' type=<root>.Counter origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:copy visibility:public modality:FINAL <> ($this:<root>.Counter, i:kotlin.Int) returnType:<root>.Counter
      $this: VALUE_PARAMETER name:<this> type:<root>.Counter
      VALUE_PARAMETER name:i index:0 type:kotlin.Int
        EXPRESSION_BODY
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
            receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.copy' type=<root>.Counter origin=null
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun copy (i: kotlin.Int): <root>.Counter declared in <root>.Counter'
          CONSTRUCTOR_CALL 'public constructor <init> (i: kotlin.Int) [primary] declared in <root>.Counter' type=<root>.Counter origin=null
            i: GET_VAR 'i: kotlin.Int declared in <root>.Counter.copy' type=kotlin.Int origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:toString visibility:public modality:OPEN <> ($this:<root>.Counter) returnType:kotlin.String
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.Counter
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Counter'
          STRING_CONCATENATION type=kotlin.String
            CONST String type=kotlin.String value="Counter("
            CONST String type=kotlin.String value="i="
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.toString' type=<root>.Counter origin=null
            CONST String type=kotlin.String value=")"
    FUN GENERATED_DATA_CLASS_MEMBER name:hashCode visibility:public modality:OPEN <> ($this:<root>.Counter) returnType:kotlin.Int
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.Counter
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun hashCode (): kotlin.Int declared in <root>.Counter'
          CALL 'public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.Int' type=kotlin.Int origin=null
            $this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.hashCode' type=<root>.Counter origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN <> ($this:<root>.Counter, other:kotlin.Any?) returnType:kotlin.Boolean [operator]
      overridden:
        public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.Counter
      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
      BLOCK_BODY
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: CALL 'public final fun EQEQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQEQ
              arg0: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.equals' type=<root>.Counter origin=null
              arg1: GET_VAR 'other: kotlin.Any? declared in <root>.Counter.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.Counter'
              CONST Boolean type=kotlin.Boolean value=true
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: TYPE_OP type=kotlin.Boolean origin=NOT_INSTANCEOF typeOperand=<root>.Counter
              GET_VAR 'other: kotlin.Any? declared in <root>.Counter.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.Counter'
              CONST Boolean type=kotlin.Boolean value=false
        VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:<root>.Counter [val]
          TYPE_OP type=<root>.Counter origin=CAST typeOperand=<root>.Counter
            GET_VAR 'other: kotlin.Any? declared in <root>.Counter.equals' type=kotlin.Any? origin=null
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
              $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
                arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
                  receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.equals' type=<root>.Counter origin=null
                arg1: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
                  receiver: GET_VAR 'val tmp_0: <root>.Counter [val] declared in <root>.Counter.equals' type=<root>.Counter origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.Counter'
              CONST Boolean type=kotlin.Boolean value=false
        RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.Counter'
          CONST Boolean type=kotlin.Boolean value=true
  CLASS CLASS name:CounterConfig modality:FINAL visibility:public [data] superTypes:[kotlin.Any]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.CounterConfig
    CONSTRUCTOR visibility:public <> (max:kotlin.Int) returnType:<root>.CounterConfig [primary]
      VALUE_PARAMETER name:max index:0 type:kotlin.Int
        EXPRESSION_BODY
          CONST Int type=kotlin.Int value=10
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:CounterConfig modality:FINAL visibility:public [data] superTypes:[kotlin.Any]'
    PROPERTY name:max visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'max: kotlin.Int declared in <root>.CounterConfig.<init>' type=kotlin.Int origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-max> visibility:public modality:FINAL <> ($this:<root>.CounterConfig) returnType:kotlin.Int
        correspondingProperty: PROPERTY name:max visibility:public modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-max> (): kotlin.Int declared in <root>.CounterConfig'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.<get-max>' type=<root>.CounterConfig origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:component1 visibility:public modality:FINAL <> ($this:<root>.CounterConfig) returnType:kotlin.Int [operator]
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun component1 (): kotlin.Int [operator] declared in <root>.CounterConfig'
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
            receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.component1' type=<root>.CounterConfig origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:copy visibility:public modality:FINAL <> ($this:<root>.CounterConfig, max:kotlin.Int) returnType:<root>.CounterConfig
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
      VALUE_PARAMETER name:max index:0 type:kotlin.Int
        EXPRESSION_BODY
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
            receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.copy' type=<root>.CounterConfig origin=null
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun copy (max: kotlin.Int): <root>.CounterConfig declared in <root>.CounterConfig'
          CONSTRUCTOR_CALL 'public constructor <init> (max: kotlin.Int) [primary] declared in <root>.CounterConfig' type=<root>.CounterConfig origin=null
            max: GET_VAR 'max: kotlin.Int declared in <root>.CounterConfig.copy' type=kotlin.Int origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:toString visibility:public modality:OPEN <> ($this:<root>.CounterConfig) returnType:kotlin.String
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.CounterConfig'
          STRING_CONCATENATION type=kotlin.String
            CONST String type=kotlin.String value="CounterConfig("
            CONST String type=kotlin.String value="max="
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.toString' type=<root>.CounterConfig origin=null
            CONST String type=kotlin.String value=")"
    FUN GENERATED_DATA_CLASS_MEMBER name:hashCode visibility:public modality:OPEN <> ($this:<root>.CounterConfig) returnType:kotlin.Int
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun hashCode (): kotlin.Int declared in <root>.CounterConfig'
          CALL 'public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.Int' type=kotlin.Int origin=null
            $this: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
              receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.hashCode' type=<root>.CounterConfig origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN <> ($this:<root>.CounterConfig, other:kotlin.Any?) returnType:kotlin.Boolean [operator]
      overridden:
        public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterConfig
      VALUE_PARAMETER name:other index:0 type:kotlin.Any?
      BLOCK_BODY
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: CALL 'public final fun EQEQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EQEQEQ
              arg0: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.equals' type=<root>.CounterConfig origin=null
              arg1: GET_VAR 'other: kotlin.Any? declared in <root>.CounterConfig.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.CounterConfig'
              CONST Boolean type=kotlin.Boolean value=true
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: TYPE_OP type=kotlin.Boolean origin=NOT_INSTANCEOF typeOperand=<root>.CounterConfig
              GET_VAR 'other: kotlin.Any? declared in <root>.CounterConfig.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.CounterConfig'
              CONST Boolean type=kotlin.Boolean value=false
        VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:<root>.CounterConfig [val]
          TYPE_OP type=<root>.CounterConfig origin=CAST typeOperand=<root>.CounterConfig
            GET_VAR 'other: kotlin.Any? declared in <root>.CounterConfig.equals' type=kotlin.Any? origin=null
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: CALL 'public final fun not (): kotlin.Boolean [operator] declared in kotlin.Boolean' type=kotlin.Boolean origin=EXCLEQ
              $this: CALL 'public final fun EQEQ (arg0: kotlin.Any?, arg1: kotlin.Any?): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=EXCLEQ
                arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
                  receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.equals' type=<root>.CounterConfig origin=null
                arg1: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
                  receiver: GET_VAR 'val tmp_1: <root>.CounterConfig [val] declared in <root>.CounterConfig.equals' type=<root>.CounterConfig origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.CounterConfig'
              CONST Boolean type=kotlin.Boolean value=false
        RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in <root>.CounterConfig'
          CONST Boolean type=kotlin.Boolean value=true
  CLASS CLASS name:CounterIterator modality:FINAL visibility:public superTypes:[kotlin.collections.Iterator<kotlin.Int>]
    $this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.CounterIterator
    FIELD FIELD_FOR_CLASS_CONTEXT_RECEIVER name:contextReceiverField0 type:<root>.CounterConfig visibility:private [final]
    CONSTRUCTOR visibility:public <> (<this>:<root>.CounterConfig, counter:<root>.Counter) returnType:<root>.CounterIterator [primary]
      VALUE_PARAMETER name:<this> index:0 type:<root>.CounterConfig
      VALUE_PARAMETER name:counter index:1 type:<root>.Counter
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
        SET_FIELD 'FIELD FIELD_FOR_CLASS_CONTEXT_RECEIVER name:contextReceiverField0 type:<root>.CounterConfig visibility:private [final]' type=kotlin.Unit origin=null
          receiver: GET_VAR '<this>: <root>.CounterIterator declared in <root>.CounterIterator' type=<root>.CounterIterator origin=null
          value: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterIterator.<init>' type=<root>.CounterConfig origin=null
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:CounterIterator modality:FINAL visibility:public superTypes:[kotlin.collections.Iterator<kotlin.Int>]'
    PROPERTY name:counter visibility:private modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:counter type:<root>.Counter visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'counter: <root>.Counter declared in <root>.CounterIterator.<init>' type=<root>.Counter origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-counter> visibility:private modality:FINAL <> ($this:<root>.CounterIterator) returnType:<root>.Counter
        correspondingProperty: PROPERTY name:counter visibility:private modality:FINAL [val]
        $this: VALUE_PARAMETER name:<this> type:<root>.CounterIterator
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='private final fun <get-counter> (): <root>.Counter declared in <root>.CounterIterator'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:counter type:<root>.Counter visibility:private [final]' type=<root>.Counter origin=null
              receiver: GET_VAR '<this>: <root>.CounterIterator declared in <root>.CounterIterator.<get-counter>' type=<root>.CounterIterator origin=null
    FUN name:hasNext visibility:public modality:OPEN <> ($this:<root>.CounterIterator) returnType:kotlin.Boolean [operator]
      overridden:
        public abstract fun hasNext (): kotlin.Boolean [operator] declared in kotlin.collections.Iterator
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterIterator
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun hasNext (): kotlin.Boolean [operator] declared in <root>.CounterIterator'
          CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
            arg0: CALL 'public final fun <get-i> (): kotlin.Int declared in <root>.Counter' type=kotlin.Int origin=GET_PROPERTY
              $this: CALL 'private final fun <get-counter> (): <root>.Counter declared in <root>.CounterIterator' type=<root>.Counter origin=GET_PROPERTY
                $this: GET_VAR '<this>: <root>.CounterIterator declared in <root>.CounterIterator.hasNext' type=<root>.CounterIterator origin=null
            arg1: CALL 'public final fun <get-max> (): kotlin.Int declared in <root>.CounterConfig' type=kotlin.Int origin=GET_PROPERTY
              $this: GET_FIELD 'FIELD FIELD_FOR_CLASS_CONTEXT_RECEIVER name:contextReceiverField0 type:<root>.CounterConfig visibility:private [final]' type=<root>.CounterConfig origin=null
                receiver: GET_VAR '<this>: <root>.CounterIterator declared in <root>.CounterIterator.hasNext' type=<root>.CounterIterator origin=null
    FUN name:next visibility:public modality:OPEN <> ($this:<root>.CounterIterator) returnType:kotlin.Int [operator]
      overridden:
        public abstract fun next (): T of kotlin.collections.Iterator [operator] declared in kotlin.collections.Iterator
      $this: VALUE_PARAMETER name:<this> type:<root>.CounterIterator
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun next (): kotlin.Int [operator] declared in <root>.CounterIterator'
          BLOCK type=kotlin.Int origin=POSTFIX_INCR
            VAR IR_TEMPORARY_VARIABLE name:tmp_2 type:<root>.Counter [val]
              CALL 'private final fun <get-counter> (): <root>.Counter declared in <root>.CounterIterator' type=<root>.Counter origin=GET_PROPERTY
                $this: GET_VAR '<this>: <root>.CounterIterator declared in <root>.CounterIterator.next' type=<root>.CounterIterator origin=null
            BLOCK type=kotlin.Int origin=POSTFIX_INCR
              VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:kotlin.Int [val]
                CALL 'public final fun <get-i> (): kotlin.Int declared in <root>.Counter' type=kotlin.Int origin=POSTFIX_INCR
                  $this: GET_VAR 'val tmp_2: <root>.Counter [val] declared in <root>.CounterIterator.next' type=<root>.Counter origin=null
              CALL 'public final fun <set-i> (<set-?>: kotlin.Int): kotlin.Unit declared in <root>.Counter' type=kotlin.Unit origin=POSTFIX_INCR
                $this: GET_VAR 'val tmp_2: <root>.Counter [val] declared in <root>.CounterIterator.next' type=<root>.Counter origin=null
                <set-?>: CALL 'public final fun inc (): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=POSTFIX_INCR
                  $this: GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.CounterIterator.next' type=kotlin.Int origin=null
              GET_VAR 'val tmp_3: kotlin.Int [val] declared in <root>.CounterIterator.next' type=kotlin.Int origin=null
    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 [fake_override,operator] declared in kotlin.collections.Iterator
      $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 [fake_override] declared in kotlin.collections.Iterator
      $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 [fake_override] declared in kotlin.collections.Iterator
      $this: VALUE_PARAMETER name:<this> type:kotlin.Any
  FUN name:iterator visibility:public modality:FINAL <> ($receiver:<root>.Counter, <this>:<root>.CounterConfig) returnType:<root>.CounterIterator [operator]
    contextReceiverParametersCount: 1
    $receiver: VALUE_PARAMETER name:<this> type:<root>.Counter
    VALUE_PARAMETER name:<this> index:0 type:<root>.CounterConfig
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun iterator (<this>: <root>.CounterConfig): <root>.CounterIterator [operator] declared in <root>'
        CALL 'public final fun with <T, R> (receiver: T of kotlin.StandardKt.with, block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.StandardKt.with, R of kotlin.StandardKt.with>): R of kotlin.StandardKt.with [inline] declared in kotlin.StandardKt' type=<root>.CounterIterator origin=null
          <T>: <root>.CounterConfig
          <R>: <root>.CounterIterator
          receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.iterator' type=<root>.CounterConfig origin=null
          block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<<root>.CounterConfig, <root>.CounterIterator> origin=LAMBDA
            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:<root>.CounterConfig) returnType:<root>.CounterIterator
              $receiver: VALUE_PARAMETER name:$this$with type:<root>.CounterConfig
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='local final fun <anonymous> (): <root>.CounterIterator declared in <root>.iterator'
                  CONSTRUCTOR_CALL 'public constructor <init> (<this>: <root>.CounterConfig, counter: <root>.Counter) [primary] declared in <root>.CounterIterator' type=<root>.CounterIterator origin=null
                    <this>: GET_VAR '$this$with: <root>.CounterConfig declared in <root>.iterator.<anonymous>' type=<root>.CounterConfig origin=null
                    counter: GET_VAR '<this>: <root>.Counter declared in <root>.iterator' type=<root>.Counter origin=null
  FUN name:box visibility:public modality:FINAL <> () returnType:kotlin.String
    BLOCK_BODY
      VAR name:result type:kotlin.Int [var]
        CONST Int type=kotlin.Int value=0
      CALL 'public final fun with <T, R> (receiver: T of kotlin.StandardKt.with, block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.StandardKt.with, R of kotlin.StandardKt.with>): R of kotlin.StandardKt.with [inline] declared in kotlin.StandardKt' type=kotlin.Unit origin=null
        <T>: <root>.CounterConfig
        <R>: kotlin.Unit
        receiver: CONSTRUCTOR_CALL 'public constructor <init> (max: kotlin.Int) [primary] declared in <root>.CounterConfig' type=<root>.CounterConfig origin=null
        block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<<root>.CounterConfig, kotlin.Unit> origin=LAMBDA
          FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:<root>.CounterConfig) returnType:kotlin.Unit
            $receiver: VALUE_PARAMETER name:$this$with type:<root>.CounterConfig
            BLOCK_BODY
              BLOCK type=kotlin.Unit origin=FOR_LOOP
                VAR FOR_LOOP_ITERATOR name:tmp_4 type:<root>.CounterIterator [val]
                  CALL 'public final fun iterator (<this>: <root>.CounterConfig): <root>.CounterIterator [operator] declared in <root>' type=<root>.CounterIterator origin=FOR_LOOP_ITERATOR
                    $receiver: CONSTRUCTOR_CALL 'public constructor <init> (i: kotlin.Int) [primary] declared in <root>.Counter' type=<root>.Counter origin=null
                    <this>: GET_VAR '$this$with: <root>.CounterConfig declared in <root>.box.<anonymous>' type=<root>.CounterConfig origin=null
                WHILE label=null origin=FOR_LOOP_INNER_WHILE
                  condition: CALL 'public open fun hasNext (): kotlin.Boolean [operator] declared in <root>.CounterIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT
                    $this: GET_VAR 'val tmp_4: <root>.CounterIterator [val] declared in <root>.box.<anonymous>' type=<root>.CounterIterator origin=null
                  body: BLOCK type=kotlin.Unit origin=FOR_LOOP_INNER_WHILE
                    VAR FOR_LOOP_VARIABLE name:i type:kotlin.Int [val]
                      CALL 'public open fun next (): kotlin.Int [operator] declared in <root>.CounterIterator' type=kotlin.Int origin=FOR_LOOP_NEXT
                        $this: GET_VAR 'val tmp_4: <root>.CounterIterator [val] declared in <root>.box.<anonymous>' type=<root>.CounterIterator origin=null
                    BLOCK type=kotlin.Unit origin=null
                      SET_VAR 'var result: kotlin.Int [var] declared in <root>.box' type=kotlin.Unit origin=PLUSEQ
                        CALL 'public final fun plus (other: kotlin.Int): kotlin.Int [operator] declared in kotlin.Int' type=kotlin.Int origin=PLUSEQ
                          $this: GET_VAR 'var result: kotlin.Int [var] declared in <root>.box' type=kotlin.Int origin=PLUSEQ
                          other: GET_VAR 'val i: kotlin.Int [val] declared in <root>.box.<anonymous>' 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
              arg0: GET_VAR 'var result: kotlin.Int [var] declared in <root>.box' type=kotlin.Int origin=null
              arg1: CONST Int type=kotlin.Int value=45
            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"
