FILE fqName:<root> fileName:/compareTo.kt
  CLASS CLASS name:Pair modality:FINAL visibility:public [data] superTypes:[kotlin.Any]
    thisReceiver: VALUE_PARAMETER INSTANCE_RECEIVER kind:DispatchReceiver name:<this> type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
    TYPE_PARAMETER name:A index:0 variance: superTypes:[kotlin.Any?] reified:false
    TYPE_PARAMETER name:B index:1 variance: superTypes:[kotlin.Any?] reified:false
    PROPERTY name:first visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'first: A of <root>.Pair declared in <root>.Pair.<init>' type=A of <root>.Pair origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-first> visibility:public modality:FINAL returnType:A of <root>.Pair
        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
        correspondingProperty: PROPERTY name:first visibility:public modality:FINAL [val]
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-first> (): A of <root>.Pair declared in <root>.Pair'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
              receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.<get-first>' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
    PROPERTY name:second visibility:public modality:FINAL [val]
      FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]
        EXPRESSION_BODY
          GET_VAR 'second: B of <root>.Pair declared in <root>.Pair.<init>' type=B of <root>.Pair origin=INITIALIZE_PROPERTY_FROM_PARAMETER
      FUN DEFAULT_PROPERTY_ACCESSOR name:<get-second> visibility:public modality:FINAL returnType:B of <root>.Pair
        VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
        correspondingProperty: PROPERTY name:second visibility:public modality:FINAL [val]
        BLOCK_BODY
          RETURN type=kotlin.Nothing from='public final fun <get-second> (): B of <root>.Pair declared in <root>.Pair'
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
              receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.<get-second>' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
    CONSTRUCTOR visibility:public returnType:<root>.Pair<A of <root>.Pair, B of <root>.Pair> [primary]
      VALUE_PARAMETER kind:Regular name:first index:0 type:A of <root>.Pair
      VALUE_PARAMETER kind:Regular name:second index:1 type:B of <root>.Pair
      BLOCK_BODY
        DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
        INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Pair modality:FINAL visibility:public [data] superTypes:[kotlin.Any]' type=kotlin.Unit
    FUN GENERATED_DATA_CLASS_MEMBER name:component1 visibility:public modality:FINAL returnType:A of <root>.Pair [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun component1 (): A of <root>.Pair declared in <root>.Pair'
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
            receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.component1' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:component2 visibility:public modality:FINAL returnType:B of <root>.Pair [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun component2 (): B of <root>.Pair declared in <root>.Pair'
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
            receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.component2' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:copy visibility:public modality:FINAL returnType:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      VALUE_PARAMETER kind:Regular name:first index:1 type:A of <root>.Pair
        EXPRESSION_BODY
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
            receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.copy' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
      VALUE_PARAMETER kind:Regular name:second index:2 type:B of <root>.Pair
        EXPRESSION_BODY
          GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
            receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.copy' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun copy (first: A of <root>.Pair, second: B of <root>.Pair): <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair'
          CONSTRUCTOR_CALL 'public constructor <init> (first: A of <root>.Pair, second: B of <root>.Pair) declared in <root>.Pair' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
            TYPE_ARG (of class) A: A of <root>.Pair
            TYPE_ARG (of class) B: B of <root>.Pair
            ARG first: GET_VAR 'first: A of <root>.Pair declared in <root>.Pair.copy' type=A of <root>.Pair origin=null
            ARG second: GET_VAR 'second: B of <root>.Pair declared in <root>.Pair.copy' type=B of <root>.Pair origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:equals visibility:public modality:OPEN returnType:kotlin.Boolean [operator]
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      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
      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
              ARG arg0: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.equals' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
              ARG arg1: GET_VAR 'other: kotlin.Any? declared in <root>.Pair.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.Pair'
              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>.Pair<A of <root>.Pair, B of <root>.Pair>
              GET_VAR 'other: kotlin.Any? declared in <root>.Pair.equals' type=kotlin.Any? origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.Pair'
              CONST Boolean type=kotlin.Boolean value=false
        VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair> [val]
          TYPE_OP type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=IMPLICIT_CAST typeOperand=<root>.Pair<A of <root>.Pair, B of <root>.Pair>
            GET_VAR 'other: kotlin.Any? declared in <root>.Pair.equals' type=kotlin.Any? origin=null
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: 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_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
                  receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.equals' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
                ARG arg1: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
                  receiver: GET_VAR 'val tmp_0: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.equals' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.Pair'
              CONST Boolean type=kotlin.Boolean value=false
        WHEN type=kotlin.Unit origin=null
          BRANCH
            if: 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_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
                  receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.equals' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
                ARG arg1: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
                  receiver: GET_VAR 'val tmp_0: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.equals' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
            then: RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.Pair'
              CONST Boolean type=kotlin.Boolean value=false
        RETURN type=kotlin.Nothing from='public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in <root>.Pair'
          CONST Boolean type=kotlin.Boolean value=true
    FUN GENERATED_DATA_CLASS_MEMBER name:hashCode visibility:public modality:OPEN returnType:kotlin.Int
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      overridden:
        public open fun hashCode (): kotlin.Int declared in kotlin.Any
      BLOCK_BODY
        VAR name:result type:kotlin.Int [var]
          WHEN type=kotlin.Int origin=null
            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_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
                  receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.hashCode' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
                ARG arg1: CONST Null type=kotlin.Nothing? value=null
              then: CONST Int type=kotlin.Int value=0
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: CALL 'public open fun hashCode (): kotlin.Int declared in kotlin.Any' type=kotlin.Int origin=null
                ARG <this>: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
                  receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.hashCode' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
        SET_VAR 'var result: kotlin.Int declared in <root>.Pair.hashCode' type=kotlin.Unit origin=EQ
          CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
            ARG <this>: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
              ARG <this>: GET_VAR 'var result: kotlin.Int declared in <root>.Pair.hashCode' type=kotlin.Int origin=null
              ARG other: CONST Int type=kotlin.Int value=31
            ARG other: WHEN type=kotlin.Int origin=null
              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_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
                    receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.hashCode' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
                  ARG arg1: CONST Null type=kotlin.Nothing? value=null
                then: CONST Int type=kotlin.Int value=0
              BRANCH
                if: CONST Boolean type=kotlin.Boolean value=true
                then: CALL 'public open fun hashCode (): kotlin.Int declared in kotlin.Any' type=kotlin.Int origin=null
                  ARG <this>: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
                    receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.hashCode' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
        RETURN type=kotlin.Nothing from='public open fun hashCode (): kotlin.Int declared in <root>.Pair'
          GET_VAR 'var result: kotlin.Int declared in <root>.Pair.hashCode' type=kotlin.Int origin=null
    FUN GENERATED_DATA_CLASS_MEMBER name:toString visibility:public modality:OPEN returnType:kotlin.String
      VALUE_PARAMETER kind:DispatchReceiver name:<this> index:0 type:<root>.Pair<A of <root>.Pair, B of <root>.Pair>
      overridden:
        public open fun toString (): kotlin.String declared in kotlin.Any
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Pair'
          STRING_CONCATENATION type=kotlin.String
            CONST String type=kotlin.String value="Pair("
            CONST String type=kotlin.String value="first="
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
              receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.toString' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
            CONST String type=kotlin.String value=", "
            CONST String type=kotlin.String value="second="
            GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
              receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.toString' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
            CONST String type=kotlin.String value=")"
  FUN name:box visibility:public modality:FINAL returnType:kotlin.String
    BLOCK_BODY
      VAR name:comparator type:java.util.Comparator<kotlin.String> [val]
        TYPE_OP type=java.util.Comparator<kotlin.String> origin=SAM_CONVERSION typeOperand=java.util.Comparator<kotlin.String>
          FUN_EXPR type=kotlin.Function2<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?, kotlin.Int> origin=LAMBDA
            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL returnType:kotlin.Int
              VALUE_PARAMETER kind:Regular name:a index:0 type:@[FlexibleNullability] kotlin.String?
              VALUE_PARAMETER kind:Regular name:b index:1 type:@[FlexibleNullability] kotlin.String?
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='local final fun <anonymous> (a: @[FlexibleNullability] kotlin.String?, b: @[FlexibleNullability] kotlin.String?): kotlin.Int declared in <root>.box'
                  WHEN type=kotlin.Int origin=IF
                    BRANCH
                      if: WHEN type=kotlin.Boolean origin=OROR
                        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 'a: @[FlexibleNullability] kotlin.String? declared in <root>.box.<anonymous>' type=@[FlexibleNullability] kotlin.String? origin=null
                            ARG arg1: CONST Null type=kotlin.Nothing? value=null
                          then: CONST Boolean type=kotlin.Boolean value=true
                        BRANCH
                          if: CONST Boolean type=kotlin.Boolean value=true
                          then: 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 'b: @[FlexibleNullability] kotlin.String? declared in <root>.box.<anonymous>' type=@[FlexibleNullability] kotlin.String? origin=null
                            ARG arg1: CONST Null type=kotlin.Nothing? value=null
                      then: CONST Int type=kotlin.Int value=0
                    BRANCH
                      if: CONST Boolean type=kotlin.Boolean value=true
                      then: CALL 'public open fun compareTo (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null
                        ARG <this>: CALL 'public open fun <get-length> (): kotlin.Int declared in kotlin.String' type=kotlin.Int origin=GET_PROPERTY
                          ARG <this>: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String
                            GET_VAR 'a: @[FlexibleNullability] kotlin.String? declared in <root>.box.<anonymous>' type=@[FlexibleNullability] kotlin.String? origin=null
                        ARG other: CALL 'public open fun <get-length> (): kotlin.Int declared in kotlin.String' type=kotlin.Int origin=GET_PROPERTY
                          ARG <this>: TYPE_OP type=kotlin.String origin=IMPLICIT_CAST typeOperand=kotlin.String
                            GET_VAR 'b: @[FlexibleNullability] kotlin.String? declared in <root>.box.<anonymous>' type=@[FlexibleNullability] kotlin.String? origin=null
      RETURN type=kotlin.Nothing from='public final fun box (): kotlin.String declared in <root>'
        CALL 'public final fun with <T, R> (receiver: T of kotlin.with, block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.with, R of kotlin.with>): R of kotlin.with declared in kotlin' type=kotlin.String origin=null
          TYPE_ARG T: java.util.Comparator<kotlin.String>
          TYPE_ARG R: kotlin.String
          ARG receiver: GET_VAR 'val comparator: java.util.Comparator<kotlin.String> declared in <root>.box' type=java.util.Comparator<kotlin.String> origin=null
          ARG block: FUN_EXPR type=@[ExtensionFunctionType] kotlin.Function1<java.util.Comparator<kotlin.String>, kotlin.String> origin=LAMBDA
            FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL returnType:kotlin.String
              VALUE_PARAMETER kind:ExtensionReceiver name:$this$with index:0 type:java.util.Comparator<kotlin.String>
              BLOCK_BODY
                RETURN type=kotlin.Nothing from='local final fun <anonymous> ($this$with: java.util.Comparator<kotlin.String>): kotlin.String declared in <root>.box'
                  CALL 'public final fun <get-min> <T> ($context_receiver_0: java.util.Comparator<T of <root>.<get-min>>, <this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>>): T of <root>.<get-min> declared in <root>' type=kotlin.String origin=GET_PROPERTY
                    TYPE_ARG T: kotlin.String
                    ARG $context_receiver_0: GET_VAR '$this$with: java.util.Comparator<kotlin.String> declared in <root>.box.<anonymous>' type=java.util.Comparator<kotlin.String> origin=IMPLICIT_ARGUMENT
                    ARG <this>: CONSTRUCTOR_CALL 'public constructor <init> (first: A of <root>.Pair, second: B of <root>.Pair) declared in <root>.Pair' type=<root>.Pair<kotlin.String, kotlin.String> origin=null
                      TYPE_ARG (of class) A: kotlin.String
                      TYPE_ARG (of class) B: kotlin.String
                      ARG first: CONST String type=kotlin.String value="OK"
                      ARG second: CONST String type=kotlin.String value="fail"
  FUN name:compareTo visibility:public modality:FINAL returnType:kotlin.Int [operator,infix]
    TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
    VALUE_PARAMETER kind:Context name:$context_receiver_0 index:0 type:java.util.Comparator<T of <root>.compareTo>
    VALUE_PARAMETER kind:ExtensionReceiver name:<this> index:1 type:T of <root>.compareTo
    VALUE_PARAMETER kind:Regular name:other index:2 type:T of <root>.compareTo
    BLOCK_BODY
      RETURN type=kotlin.Nothing from='public final fun compareTo <T> ($context_receiver_0: java.util.Comparator<T of <root>.compareTo>, <this>: T of <root>.compareTo, other: T of <root>.compareTo): kotlin.Int declared in <root>'
        CALL 'public abstract fun compare (p0: @[FlexibleNullability] T of java.util.Comparator?, p1: @[FlexibleNullability] T of java.util.Comparator?): kotlin.Int declared in java.util.Comparator' type=kotlin.Int origin=null
          ARG <this>: GET_VAR '$context_receiver_0: java.util.Comparator<T of <root>.compareTo> declared in <root>.compareTo' type=java.util.Comparator<T of <root>.compareTo> origin=IMPLICIT_ARGUMENT
          ARG p0: GET_VAR '<this>: T of <root>.compareTo declared in <root>.compareTo' type=T of <root>.compareTo origin=null
          ARG p1: GET_VAR 'other: T of <root>.compareTo declared in <root>.compareTo' type=T of <root>.compareTo origin=null
  PROPERTY name:min visibility:public modality:FINAL [val]
    FUN name:<get-min> visibility:public modality:FINAL returnType:T of <root>.<get-min>
      TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
      VALUE_PARAMETER kind:Context name:$context_receiver_0 index:0 type:java.util.Comparator<T of <root>.<get-min>>
      VALUE_PARAMETER kind:ExtensionReceiver name:<this> index:1 type:<root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>>
      correspondingProperty: PROPERTY name:min visibility:public modality:FINAL [val]
      BLOCK_BODY
        RETURN type=kotlin.Nothing from='public final fun <get-min> <T> ($context_receiver_0: java.util.Comparator<T of <root>.<get-min>>, <this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>>): T of <root>.<get-min> declared in <root>'
          WHEN type=T of <root>.<get-min> origin=IF
            BRANCH
              if: CALL 'public final fun less (arg0: kotlin.Int, arg1: kotlin.Int): kotlin.Boolean declared in kotlin.internal.ir' type=kotlin.Boolean origin=LT
                ARG arg0: CALL 'public final fun compareTo <T> ($context_receiver_0: java.util.Comparator<T of <root>.compareTo>, <this>: T of <root>.compareTo, other: T of <root>.compareTo): kotlin.Int declared in <root>' type=kotlin.Int origin=LT
                  TYPE_ARG T: T of <root>.<get-min>
                  ARG $context_receiver_0: GET_VAR '$context_receiver_0: java.util.Comparator<T of <root>.<get-min>> declared in <root>.<get-min>' type=java.util.Comparator<T of <root>.<get-min>> origin=IMPLICIT_ARGUMENT
                  ARG <this>: CALL 'public final fun <get-first> (): A of <root>.Pair declared in <root>.Pair' type=T of <root>.<get-min> origin=GET_PROPERTY
                    ARG <this>: GET_VAR '<this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> declared in <root>.<get-min>' type=<root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> origin=IMPLICIT_ARGUMENT
                  ARG other: CALL 'public final fun <get-second> (): B of <root>.Pair declared in <root>.Pair' type=T of <root>.<get-min> origin=GET_PROPERTY
                    ARG <this>: GET_VAR '<this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> declared in <root>.<get-min>' type=<root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> origin=IMPLICIT_ARGUMENT
                ARG arg1: CONST Int type=kotlin.Int value=0
              then: CALL 'public final fun <get-first> (): A of <root>.Pair declared in <root>.Pair' type=T of <root>.<get-min> origin=GET_PROPERTY
                ARG <this>: GET_VAR '<this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> declared in <root>.<get-min>' type=<root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> origin=IMPLICIT_ARGUMENT
            BRANCH
              if: CONST Boolean type=kotlin.Boolean value=true
              then: CALL 'public final fun <get-second> (): B of <root>.Pair declared in <root>.Pair' type=T of <root>.<get-min> origin=GET_PROPERTY
                ARG <this>: GET_VAR '<this>: <root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> declared in <root>.<get-min>' type=<root>.Pair<T of <root>.<get-min>, T of <root>.<get-min>> origin=IMPLICIT_ARGUMENT
