package solutions.CHK

data class Product(val price: Int, val offers: List<Offer> = listOf())
data class Offer(
    val requiredCount: Int,
    val price: Int,
    val freeItem: Char? = null,
    val freeItemCount: Int = 1,
    val groupItems: List<Char>? = null
)

object CheckoutSolution {
    private var productMap = mutableMapOf<Char, Product>(
        'A' to Product(50, listOf(Offer(5,200), Offer(3, 130))),
        'B' to Product(30, listOf(Offer(2, 45))),
        'C' to Product(20),
        'D' to Product(15),
        'E' to Product(40, listOf(Offer(2, 80, 'B'))),
        'F' to Product(10, listOf(Offer(3, 20))),
        'G' to Product(20),
        'H' to Product(10, listOf(Offer(10, 80), Offer(5, 45))),
        'I' to Product(35),
        'J' to Product(60),
        'K' to Product(70, listOf(Offer(2, 120))),
        'L' to Product(90),
        'M' to Product(15),
        'N' to Product(40, listOf(Offer(3, 120, 'M'))),
        'O' to Product(10),
        'P' to Product(50, listOf(Offer(5, 200))),
        'Q' to Product(30, listOf(Offer(3, 80))),
        'R' to Product(50, listOf(Offer(3, 150, 'Q'))),
        'S' to Product(20, listOf(Offer(3, 45, groupItems = listOf('S', 'T', 'X', 'Y', 'Z')))),
        'T' to Product(20, listOf(Offer(3, 45, groupItems = listOf('S', 'T', 'X', 'Y', 'Z')))),
        'U' to Product(40, listOf(Offer(4,120))),
        'V' to Product(50, listOf(Offer(3, 130), Offer(2, 90))),
        'W' to Product(20),
        'X' to Product(17, listOf(Offer(3, 45, groupItems = listOf('S', 'T', 'X', 'Y', 'Z')))),
        'Y' to Product(20, listOf(Offer(3, 45, groupItems = listOf('S', 'T', 'X', 'Y', 'Z')))),
        'Z' to Product(21, listOf(Offer(3, 45, groupItems = listOf('S', 'T', 'X', 'Y', 'Z')))),
    )

    fun checkout(skus: String): Int {
        val itemCounts = skus.groupingBy { it }.eachCount().toMutableMap()

        if (itemCounts.keys.any { it !in productMap }) return -1

        var total = 0

        total += processFreeItems(itemCounts)
        total += processGroupDiscounts(itemCounts)
        total += processRegularDiscountsAndRemainingItems(itemCounts)

        return total

    }

    private fun processRegularDiscountsAndRemainingItems(itemCounts: MutableMap<Char, Int>): Int {
        var total = 0
        itemCounts.forEach { p ->
            val productChar = p.key
            var count = p.value
            val product = productMap[productChar]!!

            product.offers
                .filter { it.groupItems == null && it.freeItem == null }
                .sortedByDescending { o -> o.requiredCount }
                .forEach { offer ->
                    while(count >= offer.requiredCount) {
                        total += offer.price
                        count -= offer.requiredCount
                    }
                }

            total += count * product.price
        }
        return total
    }

    private fun processGroupDiscounts(itemCounts: MutableMap<Char, Int>): Int {
        var total = 0
        productMap.values.forEach { product ->
            val groupOffers = product.offers.filter { it.groupItems != null }
            groupOffers.forEach { offer ->
                val eligibleGroupItems = offer.groupItems!!.associateWith {
                    itemCounts.getOrDefault(it, 0)
                }.toMutableMap()
                while (eligibleGroupItems.values.sum() >= offer.requiredCount) {
                    total += offer.price

                    var itemsNeededForDiscount = offer.requiredCount
                    for ((item, availabeCount) in eligibleGroupItems.entries.sortedByDescending {
                        productMap[it.key]!!.price
                    }) {
                        val itemsToUseForDiscount = minOf(availabeCount, itemsNeededForDiscount)
                        eligibleGroupItems[item] = availabeCount - itemsToUseForDiscount
                        itemCounts[item] = itemCounts.getOrDefault(item, 0) - itemsToUseForDiscount
                        itemsNeededForDiscount -= itemsToUseForDiscount
                    }
                }
            }
        }
        return total
    }

    private fun processFreeItems(itemCounts: MutableMap<Char, Int>): Int {
        var total = 0
        productMap.forEach { (productChar, product) ->
            var count = itemCounts.getOrDefault(productChar, 0)

            product.offers.filter { it.freeItem != null }.sortedByDescending { it.requiredCount }.forEach { offer ->
                while (count >= offer.requiredCount && (itemCounts[offer.freeItem] ?: 0) >= offer.freeItemCount) {
                    total += offer.price
                    count -= offer.requiredCount
                    itemCounts[offer.freeItem!!] = maxOf(0, itemCounts[offer.freeItem]!! - offer.freeItemCount)
                }
            }
            itemCounts[productChar] = count
        }
        return total
    }
}

Compiled from "Comparisons.kt"
public final class solutions.CHK.CheckoutSolution$processGroupDiscounts$lambda$10$lambda$9$$inlined$sortedByDescending$1<T> implements java.util.Comparator {
  public solutions.CHK.CheckoutSolution$processGroupDiscounts$lambda$10$lambda$9$$inlined$sortedByDescending$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_2
       1: checkcast     #23                 // class java/util/Map$Entry
       4: astore_3
       5: iconst_0
       6: istore        4
       8: invokestatic  #29                 // Method solutions/CHK/CheckoutSolution.access$getProductMap$p:()Ljava/util/Map;
      11: aload_3
      12: invokeinterface #33,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      17: invokeinterface #39,  2           // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      22: dup
      23: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      26: checkcast     #47                 // class solutions/CHK/Product
      29: invokevirtual #51                 // Method solutions/CHK/Product.getPrice:()I
      32: invokestatic  #57                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: checkcast     #59                 // class java/lang/Comparable
      38: aload_1
      39: checkcast     #23                 // class java/util/Map$Entry
      42: astore_3
      43: astore        5
      45: iconst_0
      46: istore        4
      48: invokestatic  #29                 // Method solutions/CHK/CheckoutSolution.access$getProductMap$p:()Ljava/util/Map;
      51: aload_3
      52: invokeinterface #33,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      57: invokeinterface #39,  2           // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      62: dup
      63: invokestatic  #45                 // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      66: checkcast     #47                 // class solutions/CHK/Product
      69: invokevirtual #51                 // Method solutions/CHK/Product.getPrice:()I
      72: invokestatic  #57                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      75: aload         5
      77: swap
      78: checkcast     #59                 // class java/lang/Comparable
      81: invokestatic  #65                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      84: ireturn
}

Compiled from "CheckoutSolution.kt"
public final class solutions.CHK.CheckoutSolution {
  public static final solutions.CHK.CheckoutSolution INSTANCE;

  private static java.util.Map<java.lang.Character, solutions.CHK.Product> productMap;

  private solutions.CHK.CheckoutSolution();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int checkout(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #15                 // String skus
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #23                 // class java/lang/CharSequence
      10: astore_3
      11: iconst_0
      12: istore        4
      14: new           #25                 // class solutions/CHK/CheckoutSolution$checkout$$inlined$groupingBy$1
      17: dup
      18: aload_3
      19: invokespecial #28                 // Method solutions/CHK/CheckoutSolution$checkout$$inlined$groupingBy$1."<init>":(Ljava/lang/CharSequence;)V
      22: checkcast     #30                 // class kotlin/collections/Grouping
      25: invokestatic  #36                 // Method kotlin/collections/GroupingKt.eachCount:(Lkotlin/collections/Grouping;)Ljava/util/Map;
      28: invokestatic  #42                 // Method kotlin/collections/MapsKt.toMutableMap:(Ljava/util/Map;)Ljava/util/Map;
      31: astore_2
      32: aload_2
      33: invokeinterface #48,  1           // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
      38: checkcast     #50                 // class java/lang/Iterable
      41: astore_3
      42: iconst_0
      43: istore        4
      45: aload_3
      46: instanceof    #52                 // class java/util/Collection
      49: ifeq          68
      52: aload_3
      53: checkcast     #52                 // class java/util/Collection
      56: invokeinterface #56,  1           // InterfaceMethod java/util/Collection.isEmpty:()Z
      61: ifeq          68
      64: iconst_0
      65: goto          138
      68: aload_3
      69: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      74: astore        5
      76: aload         5
      78: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      83: ifeq          137
      86: aload         5
      88: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      93: astore        6
      95: aload         6
      97: checkcast     #71                 // class java/lang/Character
     100: invokevirtual #75                 // Method java/lang/Character.charValue:()C
     103: istore        7
     105: iconst_0
     106: istore        8
     108: iload         7
     110: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     113: getstatic     #83                 // Field productMap:Ljava/util/Map;
     116: swap
     117: invokeinterface #87,  2           // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
     122: ifne          129
     125: iconst_1
     126: goto          130
     129: iconst_0
     130: ifeq          76
     133: iconst_1
     134: goto          138
     137: iconst_0
     138: ifeq          143
     141: iconst_m1
     142: ireturn
     143: iconst_0
     144: istore_3
     145: iload_3
     146: aload_0
     147: aload_2
     148: invokespecial #91                 // Method processFreeItems:(Ljava/util/Map;)I
     151: iadd
     152: istore_3
     153: iload_3
     154: aload_0
     155: aload_2
     156: invokespecial #94                 // Method processGroupDiscounts:(Ljava/util/Map;)I
     159: iadd
     160: istore_3
     161: iload_3
     162: aload_0
     163: aload_2
     164: invokespecial #97                 // Method processRegularDiscountsAndRemainingItems:(Ljava/util/Map;)I
     167: iadd
     168: istore_3
     169: iload_3
     170: ireturn

  private final int processRegularDiscountsAndRemainingItems(java.util.Map<java.lang.Character, java.lang.Integer>);
    Code:
       0: iconst_0
       1: istore_2
       2: aload_1
       3: astore_3
       4: iconst_0
       5: istore        4
       7: aload_3
       8: invokeinterface #118,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
      13: invokeinterface #121,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
      18: astore        5
      20: aload         5
      22: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      27: ifeq          342
      30: aload         5
      32: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      37: checkcast     #123                // class java/util/Map$Entry
      40: astore        6
      42: aload         6
      44: astore        7
      46: iconst_0
      47: istore        8
      49: aload         7
      51: invokeinterface #126,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      56: checkcast     #71                 // class java/lang/Character
      59: invokevirtual #75                 // Method java/lang/Character.charValue:()C
      62: istore        9
      64: iconst_0
      65: istore        10
      67: aload         7
      69: invokeinterface #129,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
      74: checkcast     #131                // class java/lang/Number
      77: invokevirtual #135                // Method java/lang/Number.intValue:()I
      80: istore        10
      82: getstatic     #83                 // Field productMap:Ljava/util/Map;
      85: iload         9
      87: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      90: invokeinterface #139,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      95: dup
      96: invokestatic  #143                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      99: checkcast     #145                // class solutions/CHK/Product
     102: astore        11
     104: aload         11
     106: invokevirtual #149                // Method solutions/CHK/Product.getOffers:()Ljava/util/List;
     109: checkcast     #50                 // class java/lang/Iterable
     112: astore        12
     114: nop
     115: iconst_0
     116: istore        13
     118: aload         12
     120: astore        14
     122: new           #151                // class java/util/ArrayList
     125: dup
     126: invokespecial #152                // Method java/util/ArrayList."<init>":()V
     129: checkcast     #52                 // class java/util/Collection
     132: astore        15
     134: iconst_0
     135: istore        16
     137: aload         14
     139: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     144: astore        17
     146: aload         17
     148: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     153: ifeq          212
     156: aload         17
     158: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     163: astore        18
     165: aload         18
     167: checkcast     #154                // class solutions/CHK/Offer
     170: astore        19
     172: iconst_0
     173: istore        20
     175: aload         19
     177: invokevirtual #157                // Method solutions/CHK/Offer.getGroupItems:()Ljava/util/List;
     180: ifnonnull     195
     183: aload         19
     185: invokevirtual #161                // Method solutions/CHK/Offer.getFreeItem:()Ljava/lang/Character;
     188: ifnonnull     195
     191: iconst_1
     192: goto          196
     195: iconst_0
     196: ifeq          146
     199: aload         15
     201: aload         18
     203: invokeinterface #164,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     208: pop
     209: goto          146
     212: aload         15
     214: checkcast     #166                // class java/util/List
     217: nop
     218: checkcast     #50                 // class java/lang/Iterable
     221: astore        12
     223: nop
     224: iconst_0
     225: istore        13
     227: aload         12
     229: new           #168                // class solutions/CHK/CheckoutSolution$processRegularDiscountsAndRemainingItems$lambda$5$$inlined$sortedByDescending$1
     232: dup
     233: invokespecial #169                // Method solutions/CHK/CheckoutSolution$processRegularDiscountsAndRemainingItems$lambda$5$$inlined$sortedByDescending$1."<init>":()V
     236: checkcast     #171                // class java/util/Comparator
     239: invokestatic  #177                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     242: checkcast     #50                 // class java/lang/Iterable
     245: astore        12
     247: nop
     248: iconst_0
     249: istore        13
     251: aload         12
     253: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     258: astore        14
     260: aload         14
     262: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     267: ifeq          325
     270: aload         14
     272: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     277: astore        15
     279: aload         15
     281: checkcast     #154                // class solutions/CHK/Offer
     284: astore        16
     286: iconst_0
     287: istore        17
     289: iload         10
     291: aload         16
     293: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     296: if_icmplt     320
     299: iload_2
     300: aload         16
     302: invokevirtual #183                // Method solutions/CHK/Offer.getPrice:()I
     305: iadd
     306: istore_2
     307: iload         10
     309: aload         16
     311: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     314: isub
     315: istore        10
     317: goto          289
     320: nop
     321: nop
     322: goto          260
     325: nop
     326: iload_2
     327: iload         10
     329: aload         11
     331: invokevirtual #184                // Method solutions/CHK/Product.getPrice:()I
     334: imul
     335: iadd
     336: istore_2
     337: nop
     338: nop
     339: goto          20
     342: nop
     343: iload_2
     344: ireturn

  private final int processGroupDiscounts(java.util.Map<java.lang.Character, java.lang.Integer>);
    Code:
       0: iconst_0
       1: istore_2
       2: getstatic     #83                 // Field productMap:Ljava/util/Map;
       5: invokeinterface #210,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
      10: checkcast     #50                 // class java/lang/Iterable
      13: astore_3
      14: iconst_0
      15: istore        4
      17: aload_3
      18: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      23: astore        5
      25: aload         5
      27: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      32: ifeq          584
      35: aload         5
      37: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      42: astore        6
      44: aload         6
      46: checkcast     #145                // class solutions/CHK/Product
      49: astore        7
      51: iconst_0
      52: istore        8
      54: aload         7
      56: invokevirtual #149                // Method solutions/CHK/Product.getOffers:()Ljava/util/List;
      59: checkcast     #50                 // class java/lang/Iterable
      62: astore        9
      64: iconst_0
      65: istore        10
      67: aload         9
      69: astore        11
      71: new           #151                // class java/util/ArrayList
      74: dup
      75: invokespecial #152                // Method java/util/ArrayList."<init>":()V
      78: checkcast     #52                 // class java/util/Collection
      81: astore        12
      83: iconst_0
      84: istore        13
      86: aload         11
      88: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      93: astore        14
      95: aload         14
      97: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     102: ifeq          153
     105: aload         14
     107: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     112: astore        15
     114: aload         15
     116: checkcast     #154                // class solutions/CHK/Offer
     119: astore        16
     121: iconst_0
     122: istore        17
     124: aload         16
     126: invokevirtual #157                // Method solutions/CHK/Offer.getGroupItems:()Ljava/util/List;
     129: ifnull        136
     132: iconst_1
     133: goto          137
     136: iconst_0
     137: ifeq          95
     140: aload         12
     142: aload         15
     144: invokeinterface #164,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     149: pop
     150: goto          95
     153: aload         12
     155: checkcast     #166                // class java/util/List
     158: nop
     159: astore        18
     161: aload         18
     163: checkcast     #50                 // class java/lang/Iterable
     166: astore        9
     168: iconst_0
     169: istore        10
     171: aload         9
     173: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     178: astore        11
     180: aload         11
     182: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     187: ifeq          578
     190: aload         11
     192: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     197: astore        12
     199: aload         12
     201: checkcast     #154                // class solutions/CHK/Offer
     204: astore        13
     206: iconst_0
     207: istore        14
     209: aload         13
     211: invokevirtual #157                // Method solutions/CHK/Offer.getGroupItems:()Ljava/util/List;
     214: dup
     215: invokestatic  #143                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     218: checkcast     #50                 // class java/lang/Iterable
     221: astore        15
     223: iconst_0
     224: istore        16
     226: new           #212                // class java/util/LinkedHashMap
     229: dup
     230: aload         15
     232: bipush        10
     234: invokestatic  #216                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     237: invokestatic  #220                // Method kotlin/collections/MapsKt.mapCapacity:(I)I
     240: bipush        16
     242: invokestatic  #226                // Method kotlin/ranges/RangesKt.coerceAtLeast:(II)I
     245: invokespecial #229                // Method java/util/LinkedHashMap."<init>":(I)V
     248: astore        17
     250: aload         15
     252: astore        19
     254: iconst_0
     255: istore        20
     257: aload         19
     259: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     264: astore        21
     266: aload         21
     268: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     273: ifeq          350
     276: aload         21
     278: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     283: astore        22
     285: aload         17
     287: checkcast     #44                 // class java/util/Map
     290: aload         22
     292: aload         22
     294: checkcast     #71                 // class java/lang/Character
     297: invokevirtual #75                 // Method java/lang/Character.charValue:()C
     300: istore        23
     302: astore        24
     304: astore        25
     306: iconst_0
     307: istore        26
     309: aload_1
     310: iload         23
     312: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     315: iconst_0
     316: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     319: invokeinterface #238,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     324: checkcast     #131                // class java/lang/Number
     327: invokevirtual #135                // Method java/lang/Number.intValue:()I
     330: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     333: astore        27
     335: aload         25
     337: aload         24
     339: aload         27
     341: invokeinterface #241,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     346: pop
     347: goto          266
     350: aload         17
     352: checkcast     #44                 // class java/util/Map
     355: nop
     356: invokestatic  #42                 // Method kotlin/collections/MapsKt.toMutableMap:(Ljava/util/Map;)Ljava/util/Map;
     359: astore        28
     361: aload         28
     363: invokeinterface #210,  1          // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     368: checkcast     #50                 // class java/lang/Iterable
     371: invokestatic  #245                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     374: aload         13
     376: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     379: if_icmplt     573
     382: iload_2
     383: aload         13
     385: invokevirtual #183                // Method solutions/CHK/Offer.getPrice:()I
     388: iadd
     389: istore_2
     390: aload         13
     392: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     395: istore        15
     397: aload         28
     399: invokeinterface #118,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     404: checkcast     #50                 // class java/lang/Iterable
     407: astore        17
     409: iconst_0
     410: istore        19
     412: aload         17
     414: new           #247                // class solutions/CHK/CheckoutSolution$processGroupDiscounts$lambda$10$lambda$9$$inlined$sortedByDescending$1
     417: dup
     418: invokespecial #248                // Method solutions/CHK/CheckoutSolution$processGroupDiscounts$lambda$10$lambda$9$$inlined$sortedByDescending$1."<init>":()V
     421: checkcast     #171                // class java/util/Comparator
     424: invokestatic  #177                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     427: invokeinterface #249,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     432: astore        16
     434: aload         16
     436: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     441: ifeq          361
     444: aload         16
     446: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     451: checkcast     #123                // class java/util/Map$Entry
     454: astore        17
     456: aload         17
     458: invokeinterface #126,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     463: checkcast     #71                 // class java/lang/Character
     466: invokevirtual #75                 // Method java/lang/Character.charValue:()C
     469: istore        19
     471: aload         17
     473: invokeinterface #129,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     478: checkcast     #131                // class java/lang/Number
     481: invokevirtual #135                // Method java/lang/Number.intValue:()I
     484: istore        20
     486: iload         20
     488: iload         15
     490: invokestatic  #254                // Method java/lang/Math.min:(II)I
     493: istore        21
     495: iload         19
     497: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     500: astore        23
     502: aload         28
     504: aload         23
     506: iload         20
     508: iload         21
     510: isub
     511: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     514: invokeinterface #241,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     519: pop
     520: iload         19
     522: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     525: astore        23
     527: aload_1
     528: aload         23
     530: aload_1
     531: iload         19
     533: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     536: iconst_0
     537: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     540: invokeinterface #238,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     545: checkcast     #131                // class java/lang/Number
     548: invokevirtual #135                // Method java/lang/Number.intValue:()I
     551: iload         21
     553: isub
     554: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     557: invokeinterface #241,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     562: pop
     563: iload         15
     565: iload         21
     567: isub
     568: istore        15
     570: goto          434
     573: nop
     574: nop
     575: goto          180
     578: nop
     579: nop
     580: nop
     581: goto          25
     584: nop
     585: iload_2
     586: ireturn

  private final int processFreeItems(java.util.Map<java.lang.Character, java.lang.Integer>);
    Code:
       0: iconst_0
       1: istore_2
       2: getstatic     #83                 // Field productMap:Ljava/util/Map;
       5: astore_3
       6: iconst_0
       7: istore        4
       9: aload_3
      10: invokeinterface #118,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
      15: invokeinterface #121,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
      20: astore        5
      22: aload         5
      24: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      29: ifeq          428
      32: aload         5
      34: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      39: checkcast     #123                // class java/util/Map$Entry
      42: astore        6
      44: aload         6
      46: astore        7
      48: iconst_0
      49: istore        8
      51: aload         7
      53: invokeinterface #126,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      58: checkcast     #71                 // class java/lang/Character
      61: invokevirtual #75                 // Method java/lang/Character.charValue:()C
      64: istore        9
      66: aload         7
      68: invokeinterface #129,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
      73: checkcast     #145                // class solutions/CHK/Product
      76: astore        10
      78: iconst_0
      79: istore        11
      81: aload_1
      82: iload         9
      84: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      87: iconst_0
      88: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      91: invokeinterface #238,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      96: checkcast     #131                // class java/lang/Number
      99: invokevirtual #135                // Method java/lang/Number.intValue:()I
     102: istore        11
     104: aload         10
     106: invokevirtual #149                // Method solutions/CHK/Product.getOffers:()Ljava/util/List;
     109: checkcast     #50                 // class java/lang/Iterable
     112: astore        12
     114: iconst_0
     115: istore        13
     117: aload         12
     119: astore        14
     121: new           #151                // class java/util/ArrayList
     124: dup
     125: invokespecial #152                // Method java/util/ArrayList."<init>":()V
     128: checkcast     #52                 // class java/util/Collection
     131: astore        15
     133: iconst_0
     134: istore        16
     136: aload         14
     138: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     143: astore        17
     145: aload         17
     147: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     152: ifeq          203
     155: aload         17
     157: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     162: astore        18
     164: aload         18
     166: checkcast     #154                // class solutions/CHK/Offer
     169: astore        19
     171: iconst_0
     172: istore        20
     174: aload         19
     176: invokevirtual #161                // Method solutions/CHK/Offer.getFreeItem:()Ljava/lang/Character;
     179: ifnull        186
     182: iconst_1
     183: goto          187
     186: iconst_0
     187: ifeq          145
     190: aload         15
     192: aload         18
     194: invokeinterface #164,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     199: pop
     200: goto          145
     203: aload         15
     205: checkcast     #166                // class java/util/List
     208: nop
     209: checkcast     #50                 // class java/lang/Iterable
     212: astore        12
     214: nop
     215: iconst_0
     216: istore        13
     218: aload         12
     220: new           #273                // class solutions/CHK/CheckoutSolution$processFreeItems$lambda$14$$inlined$sortedByDescending$1
     223: dup
     224: invokespecial #274                // Method solutions/CHK/CheckoutSolution$processFreeItems$lambda$14$$inlined$sortedByDescending$1."<init>":()V
     227: checkcast     #171                // class java/util/Comparator
     230: invokestatic  #177                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     233: checkcast     #50                 // class java/lang/Iterable
     236: astore        12
     238: nop
     239: iconst_0
     240: istore        13
     242: aload         12
     244: invokeinterface #60,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     249: astore        14
     251: aload         14
     253: invokeinterface #65,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     258: ifeq          401
     261: aload         14
     263: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     268: astore        15
     270: aload         15
     272: checkcast     #154                // class solutions/CHK/Offer
     275: astore        16
     277: iconst_0
     278: istore        17
     280: iload         11
     282: aload         16
     284: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     287: if_icmplt     396
     290: aload_1
     291: aload         16
     293: invokevirtual #161                // Method solutions/CHK/Offer.getFreeItem:()Ljava/lang/Character;
     296: invokeinterface #139,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     301: checkcast     #231                // class java/lang/Integer
     304: dup
     305: ifnull        314
     308: invokevirtual #275                // Method java/lang/Integer.intValue:()I
     311: goto          316
     314: pop
     315: iconst_0
     316: aload         16
     318: invokevirtual #278                // Method solutions/CHK/Offer.getFreeItemCount:()I
     321: if_icmplt     396
     324: iload_2
     325: aload         16
     327: invokevirtual #183                // Method solutions/CHK/Offer.getPrice:()I
     330: iadd
     331: istore_2
     332: iload         11
     334: aload         16
     336: invokevirtual #180                // Method solutions/CHK/Offer.getRequiredCount:()I
     339: isub
     340: istore        11
     342: nop
     343: aload_1
     344: aload         16
     346: invokevirtual #161                // Method solutions/CHK/Offer.getFreeItem:()Ljava/lang/Character;
     349: dup
     350: invokestatic  #143                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     353: iconst_0
     354: aload_1
     355: aload         16
     357: invokevirtual #161                // Method solutions/CHK/Offer.getFreeItem:()Ljava/lang/Character;
     360: invokeinterface #139,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     365: dup
     366: invokestatic  #143                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
     369: checkcast     #131                // class java/lang/Number
     372: invokevirtual #135                // Method java/lang/Number.intValue:()I
     375: aload         16
     377: invokevirtual #278                // Method solutions/CHK/Offer.getFreeItemCount:()I
     380: isub
     381: invokestatic  #281                // Method java/lang/Math.max:(II)I
     384: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     387: invokeinterface #241,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     392: pop
     393: goto          280
     396: nop
     397: nop
     398: goto          251
     401: nop
     402: iload         9
     404: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     407: astore        13
     409: aload_1
     410: aload         13
     412: iload         11
     414: invokestatic  #234                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     417: invokeinterface #241,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     422: pop
     423: nop
     424: nop
     425: goto          22
     428: nop
     429: iload_2
     430: ireturn

  public static final java.util.Map access$getProductMap$p();
    Code:
       0: getstatic     #83                 // Field productMap:Ljava/util/Map;
       3: areturn

  static {};
    Code:
       0: new           #2                  // class solutions/CHK/CheckoutSolution
       3: dup
       4: invokespecial #288                // Method "<init>":()V
       7: putstatic     #291                // Field INSTANCE:Lsolutions/CHK/CheckoutSolution;
      10: bipush        26
      12: anewarray     #293                // class kotlin/Pair
      15: astore_0
      16: aload_0
      17: iconst_0
      18: bipush        65
      20: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      23: new           #145                // class solutions/CHK/Product
      26: dup
      27: bipush        50
      29: iconst_2
      30: anewarray     #154                // class solutions/CHK/Offer
      33: astore_1
      34: aload_1
      35: iconst_0
      36: new           #154                // class solutions/CHK/Offer
      39: dup
      40: iconst_5
      41: sipush        200
      44: aconst_null
      45: iconst_0
      46: aconst_null
      47: bipush        28
      49: aconst_null
      50: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
      53: aastore
      54: aload_1
      55: iconst_1
      56: new           #154                // class solutions/CHK/Offer
      59: dup
      60: iconst_3
      61: sipush        130
      64: aconst_null
      65: iconst_0
      66: aconst_null
      67: bipush        28
      69: aconst_null
      70: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
      73: aastore
      74: aload_1
      75: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      78: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
      81: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      84: aastore
      85: aload_0
      86: iconst_1
      87: bipush        66
      89: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      92: new           #145                // class solutions/CHK/Product
      95: dup
      96: bipush        30
      98: new           #154                // class solutions/CHK/Offer
     101: dup
     102: iconst_2
     103: bipush        45
     105: aconst_null
     106: iconst_0
     107: aconst_null
     108: bipush        28
     110: aconst_null
     111: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     114: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     117: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     120: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     123: aastore
     124: aload_0
     125: iconst_2
     126: bipush        67
     128: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     131: new           #145                // class solutions/CHK/Product
     134: dup
     135: bipush        20
     137: aconst_null
     138: iconst_2
     139: aconst_null
     140: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     143: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     146: aastore
     147: aload_0
     148: iconst_3
     149: bipush        68
     151: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     154: new           #145                // class solutions/CHK/Product
     157: dup
     158: bipush        15
     160: aconst_null
     161: iconst_2
     162: aconst_null
     163: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     166: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     169: aastore
     170: aload_0
     171: iconst_4
     172: bipush        69
     174: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     177: new           #145                // class solutions/CHK/Product
     180: dup
     181: bipush        40
     183: new           #154                // class solutions/CHK/Offer
     186: dup
     187: iconst_2
     188: bipush        80
     190: bipush        66
     192: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     195: iconst_0
     196: aconst_null
     197: bipush        24
     199: aconst_null
     200: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     203: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     206: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     209: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     212: aastore
     213: aload_0
     214: iconst_5
     215: bipush        70
     217: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     220: new           #145                // class solutions/CHK/Product
     223: dup
     224: bipush        10
     226: new           #154                // class solutions/CHK/Offer
     229: dup
     230: iconst_3
     231: bipush        20
     233: aconst_null
     234: iconst_0
     235: aconst_null
     236: bipush        28
     238: aconst_null
     239: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     242: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     245: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     248: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     251: aastore
     252: aload_0
     253: bipush        6
     255: bipush        71
     257: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     260: new           #145                // class solutions/CHK/Product
     263: dup
     264: bipush        20
     266: aconst_null
     267: iconst_2
     268: aconst_null
     269: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     272: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     275: aastore
     276: aload_0
     277: bipush        7
     279: bipush        72
     281: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     284: new           #145                // class solutions/CHK/Product
     287: dup
     288: bipush        10
     290: iconst_2
     291: anewarray     #154                // class solutions/CHK/Offer
     294: astore_1
     295: aload_1
     296: iconst_0
     297: new           #154                // class solutions/CHK/Offer
     300: dup
     301: bipush        10
     303: bipush        80
     305: aconst_null
     306: iconst_0
     307: aconst_null
     308: bipush        28
     310: aconst_null
     311: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     314: aastore
     315: aload_1
     316: iconst_1
     317: new           #154                // class solutions/CHK/Offer
     320: dup
     321: iconst_5
     322: bipush        45
     324: aconst_null
     325: iconst_0
     326: aconst_null
     327: bipush        28
     329: aconst_null
     330: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     333: aastore
     334: aload_1
     335: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     338: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     341: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     344: aastore
     345: aload_0
     346: bipush        8
     348: bipush        73
     350: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     353: new           #145                // class solutions/CHK/Product
     356: dup
     357: bipush        35
     359: aconst_null
     360: iconst_2
     361: aconst_null
     362: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     365: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     368: aastore
     369: aload_0
     370: bipush        9
     372: bipush        74
     374: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     377: new           #145                // class solutions/CHK/Product
     380: dup
     381: bipush        60
     383: aconst_null
     384: iconst_2
     385: aconst_null
     386: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     389: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     392: aastore
     393: aload_0
     394: bipush        10
     396: bipush        75
     398: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     401: new           #145                // class solutions/CHK/Product
     404: dup
     405: bipush        70
     407: new           #154                // class solutions/CHK/Offer
     410: dup
     411: iconst_2
     412: bipush        120
     414: aconst_null
     415: iconst_0
     416: aconst_null
     417: bipush        28
     419: aconst_null
     420: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     423: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     426: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     429: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     432: aastore
     433: aload_0
     434: bipush        11
     436: bipush        76
     438: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     441: new           #145                // class solutions/CHK/Product
     444: dup
     445: bipush        90
     447: aconst_null
     448: iconst_2
     449: aconst_null
     450: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     453: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     456: aastore
     457: aload_0
     458: bipush        12
     460: bipush        77
     462: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     465: new           #145                // class solutions/CHK/Product
     468: dup
     469: bipush        15
     471: aconst_null
     472: iconst_2
     473: aconst_null
     474: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     477: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     480: aastore
     481: aload_0
     482: bipush        13
     484: bipush        78
     486: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     489: new           #145                // class solutions/CHK/Product
     492: dup
     493: bipush        40
     495: new           #154                // class solutions/CHK/Offer
     498: dup
     499: iconst_3
     500: bipush        120
     502: bipush        77
     504: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     507: iconst_0
     508: aconst_null
     509: bipush        24
     511: aconst_null
     512: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     515: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     518: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     521: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     524: aastore
     525: aload_0
     526: bipush        14
     528: bipush        79
     530: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     533: new           #145                // class solutions/CHK/Product
     536: dup
     537: bipush        10
     539: aconst_null
     540: iconst_2
     541: aconst_null
     542: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     545: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     548: aastore
     549: aload_0
     550: bipush        15
     552: bipush        80
     554: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     557: new           #145                // class solutions/CHK/Product
     560: dup
     561: bipush        50
     563: new           #154                // class solutions/CHK/Offer
     566: dup
     567: iconst_5
     568: sipush        200
     571: aconst_null
     572: iconst_0
     573: aconst_null
     574: bipush        28
     576: aconst_null
     577: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     580: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     583: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     586: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     589: aastore
     590: aload_0
     591: bipush        16
     593: bipush        81
     595: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     598: new           #145                // class solutions/CHK/Product
     601: dup
     602: bipush        30
     604: new           #154                // class solutions/CHK/Offer
     607: dup
     608: iconst_3
     609: bipush        80
     611: aconst_null
     612: iconst_0
     613: aconst_null
     614: bipush        28
     616: aconst_null
     617: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     620: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     623: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     626: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     629: aastore
     630: aload_0
     631: bipush        17
     633: bipush        82
     635: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     638: new           #145                // class solutions/CHK/Product
     641: dup
     642: bipush        50
     644: new           #154                // class solutions/CHK/Offer
     647: dup
     648: iconst_3
     649: sipush        150
     652: bipush        81
     654: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     657: iconst_0
     658: aconst_null
     659: bipush        24
     661: aconst_null
     662: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     665: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     668: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     671: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     674: aastore
     675: aload_0
     676: bipush        18
     678: bipush        83
     680: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     683: new           #145                // class solutions/CHK/Product
     686: dup
     687: bipush        20
     689: new           #154                // class solutions/CHK/Offer
     692: dup
     693: iconst_3
     694: bipush        45
     696: aconst_null
     697: iconst_0
     698: iconst_5
     699: anewarray     #71                 // class java/lang/Character
     702: astore_1
     703: aload_1
     704: iconst_0
     705: bipush        83
     707: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     710: aastore
     711: aload_1
     712: iconst_1
     713: bipush        84
     715: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     718: aastore
     719: aload_1
     720: iconst_2
     721: bipush        88
     723: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     726: aastore
     727: aload_1
     728: iconst_3
     729: bipush        89
     731: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     734: aastore
     735: aload_1
     736: iconst_4
     737: bipush        90
     739: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     742: aastore
     743: aload_1
     744: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     747: bipush        12
     749: aconst_null
     750: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     753: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     756: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     759: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     762: aastore
     763: aload_0
     764: bipush        19
     766: bipush        84
     768: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     771: new           #145                // class solutions/CHK/Product
     774: dup
     775: bipush        20
     777: new           #154                // class solutions/CHK/Offer
     780: dup
     781: iconst_3
     782: bipush        45
     784: aconst_null
     785: iconst_0
     786: iconst_5
     787: anewarray     #71                 // class java/lang/Character
     790: astore_1
     791: aload_1
     792: iconst_0
     793: bipush        83
     795: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     798: aastore
     799: aload_1
     800: iconst_1
     801: bipush        84
     803: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     806: aastore
     807: aload_1
     808: iconst_2
     809: bipush        88
     811: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     814: aastore
     815: aload_1
     816: iconst_3
     817: bipush        89
     819: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     822: aastore
     823: aload_1
     824: iconst_4
     825: bipush        90
     827: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     830: aastore
     831: aload_1
     832: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     835: bipush        12
     837: aconst_null
     838: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     841: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     844: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     847: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     850: aastore
     851: aload_0
     852: bipush        20
     854: bipush        85
     856: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     859: new           #145                // class solutions/CHK/Product
     862: dup
     863: bipush        40
     865: new           #154                // class solutions/CHK/Offer
     868: dup
     869: iconst_4
     870: bipush        120
     872: aconst_null
     873: iconst_0
     874: aconst_null
     875: bipush        28
     877: aconst_null
     878: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     881: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     884: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     887: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     890: aastore
     891: aload_0
     892: bipush        21
     894: bipush        86
     896: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     899: new           #145                // class solutions/CHK/Product
     902: dup
     903: bipush        50
     905: iconst_2
     906: anewarray     #154                // class solutions/CHK/Offer
     909: astore_1
     910: aload_1
     911: iconst_0
     912: new           #154                // class solutions/CHK/Offer
     915: dup
     916: iconst_3
     917: sipush        130
     920: aconst_null
     921: iconst_0
     922: aconst_null
     923: bipush        28
     925: aconst_null
     926: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     929: aastore
     930: aload_1
     931: iconst_1
     932: new           #154                // class solutions/CHK/Offer
     935: dup
     936: iconst_2
     937: bipush        90
     939: aconst_null
     940: iconst_0
     941: aconst_null
     942: bipush        28
     944: aconst_null
     945: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     948: aastore
     949: aload_1
     950: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     953: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
     956: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     959: aastore
     960: aload_0
     961: bipush        22
     963: bipush        87
     965: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     968: new           #145                // class solutions/CHK/Product
     971: dup
     972: bipush        20
     974: aconst_null
     975: iconst_2
     976: aconst_null
     977: invokespecial #315                // Method solutions/CHK/Product."<init>":(ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     980: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     983: aastore
     984: aload_0
     985: bipush        23
     987: bipush        88
     989: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     992: new           #145                // class solutions/CHK/Product
     995: dup
     996: bipush        17
     998: new           #154                // class solutions/CHK/Offer
    1001: dup
    1002: iconst_3
    1003: bipush        45
    1005: aconst_null
    1006: iconst_0
    1007: iconst_5
    1008: anewarray     #71                 // class java/lang/Character
    1011: astore_1
    1012: aload_1
    1013: iconst_0
    1014: bipush        83
    1016: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1019: aastore
    1020: aload_1
    1021: iconst_1
    1022: bipush        84
    1024: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1027: aastore
    1028: aload_1
    1029: iconst_2
    1030: bipush        88
    1032: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1035: aastore
    1036: aload_1
    1037: iconst_3
    1038: bipush        89
    1040: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1043: aastore
    1044: aload_1
    1045: iconst_4
    1046: bipush        90
    1048: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1051: aastore
    1052: aload_1
    1053: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1056: bipush        12
    1058: aconst_null
    1059: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
    1062: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
    1065: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
    1068: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
    1071: aastore
    1072: aload_0
    1073: bipush        24
    1075: bipush        89
    1077: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1080: new           #145                // class solutions/CHK/Product
    1083: dup
    1084: bipush        20
    1086: new           #154                // class solutions/CHK/Offer
    1089: dup
    1090: iconst_3
    1091: bipush        45
    1093: aconst_null
    1094: iconst_0
    1095: iconst_5
    1096: anewarray     #71                 // class java/lang/Character
    1099: astore_1
    1100: aload_1
    1101: iconst_0
    1102: bipush        83
    1104: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1107: aastore
    1108: aload_1
    1109: iconst_1
    1110: bipush        84
    1112: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1115: aastore
    1116: aload_1
    1117: iconst_2
    1118: bipush        88
    1120: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1123: aastore
    1124: aload_1
    1125: iconst_3
    1126: bipush        89
    1128: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1131: aastore
    1132: aload_1
    1133: iconst_4
    1134: bipush        90
    1136: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1139: aastore
    1140: aload_1
    1141: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1144: bipush        12
    1146: aconst_null
    1147: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
    1150: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
    1153: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
    1156: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
    1159: aastore
    1160: aload_0
    1161: bipush        25
    1163: bipush        90
    1165: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1168: new           #145                // class solutions/CHK/Product
    1171: dup
    1172: bipush        21
    1174: new           #154                // class solutions/CHK/Offer
    1177: dup
    1178: iconst_3
    1179: bipush        45
    1181: aconst_null
    1182: iconst_0
    1183: iconst_5
    1184: anewarray     #71                 // class java/lang/Character
    1187: astore_1
    1188: aload_1
    1189: iconst_0
    1190: bipush        83
    1192: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1195: aastore
    1196: aload_1
    1197: iconst_1
    1198: bipush        84
    1200: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1203: aastore
    1204: aload_1
    1205: iconst_2
    1206: bipush        88
    1208: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1211: aastore
    1212: aload_1
    1213: iconst_3
    1214: bipush        89
    1216: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1219: aastore
    1220: aload_1
    1221: iconst_4
    1222: bipush        90
    1224: invokestatic  #79                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1227: aastore
    1228: aload_1
    1229: invokestatic  #300                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1232: bipush        12
    1234: aconst_null
    1235: invokespecial #296                // Method solutions/CHK/Offer."<init>":(IILjava/lang/Character;ILjava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
    1238: invokestatic  #312                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
    1241: invokespecial #303                // Method solutions/CHK/Product."<init>":(ILjava/util/List;)V
    1244: invokestatic  #309                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
    1247: aastore
    1248: aload_0
    1249: invokestatic  #319                // Method kotlin/collections/MapsKt.mutableMapOf:([Lkotlin/Pair;)Ljava/util/Map;
    1252: putstatic     #83                 // Field productMap:Ljava/util/Map;
    1255: return
}

Compiled from "_Strings.kt"
public final class solutions.CHK.CheckoutSolution$checkout$$inlined$groupingBy$1 implements kotlin.collections.Grouping<java.lang.Character, java.lang.Character> {
  final java.lang.CharSequence $this_groupingBy;

  public solutions.CHK.CheckoutSolution$checkout$$inlined$groupingBy$1(java.lang.CharSequence);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #18                 // Field $this_groupingBy:Ljava/lang/CharSequence;
       5: aload_0
       6: invokespecial #21                 // Method java/lang/Object."<init>":()V
       9: return

  public java.util.Iterator<java.lang.Character> sourceIterator();
    Code:
       0: aload_0
       1: getfield      #18                 // Field $this_groupingBy:Ljava/lang/CharSequence;
       4: invokestatic  #33                 // Method kotlin/text/StringsKt.iterator:(Ljava/lang/CharSequence;)Lkotlin/collections/CharIterator;
       7: checkcast     #35                 // class java/util/Iterator
      10: areturn

  public java.lang.Character keyOf(char);
    Code:
       0: iload_1
       1: istore_2
       2: iconst_0
       3: istore_3
       4: iload_2
       5: invokestatic  #43                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
       8: areturn

  public java.lang.Object keyOf(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #40                 // class java/lang/Character
       5: invokevirtual #53                 // Method java/lang/Character.charValue:()C
       8: invokevirtual #55                 // Method keyOf:(C)Ljava/lang/Object;
      11: areturn
}

Compiled from "Comparisons.kt"
public final class solutions.CHK.CheckoutSolution$processRegularDiscountsAndRemainingItems$lambda$5$$inlined$sortedByDescending$1<T> implements java.util.Comparator {
  public solutions.CHK.CheckoutSolution$processRegularDiscountsAndRemainingItems$lambda$5$$inlined$sortedByDescending$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_2
       1: checkcast     #23                 // class solutions/CHK/Offer
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method solutions/CHK/Offer.getRequiredCount:()I
      12: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      15: checkcast     #35                 // class java/lang/Comparable
      18: aload_1
      19: checkcast     #23                 // class solutions/CHK/Offer
      22: astore_3
      23: astore        5
      25: iconst_0
      26: istore        4
      28: aload_3
      29: invokevirtual #27                 // Method solutions/CHK/Offer.getRequiredCount:()I
      32: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aload         5
      37: swap
      38: checkcast     #35                 // class java/lang/Comparable
      41: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      44: ireturn
}

Compiled from "Comparisons.kt"
public final class solutions.CHK.CheckoutSolution$processFreeItems$lambda$14$$inlined$sortedByDescending$1<T> implements java.util.Comparator {
  public solutions.CHK.CheckoutSolution$processFreeItems$lambda$14$$inlined$sortedByDescending$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_2
       1: checkcast     #23                 // class solutions/CHK/Offer
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method solutions/CHK/Offer.getRequiredCount:()I
      12: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      15: checkcast     #35                 // class java/lang/Comparable
      18: aload_1
      19: checkcast     #23                 // class solutions/CHK/Offer
      22: astore_3
      23: astore        5
      25: iconst_0
      26: istore        4
      28: aload_3
      29: invokevirtual #27                 // Method solutions/CHK/Offer.getRequiredCount:()I
      32: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aload         5
      37: swap
      38: checkcast     #35                 // class java/lang/Comparable
      41: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      44: ireturn
}