package com.garmin.android.aquamarine

// Exercise 1

open class Account(var balance: Float) {

    open fun withdraw(sumToWithdraw: Float) {
        balance -= sumToWithdraw
    }

    fun deposit(sumToDeposit: Float) {
        balance += sumToDeposit
    }
}

class SavingAccount(balance: Float) : Account(balance) {

    override fun withdraw(sumToWithdraw: Float) {
        if (sumToWithdraw > balance) {
            throw IllegalArgumentException()
        }

        super.withdraw(sumToWithdraw)
    }
}

// Exercise 2

//      N
//  W       E
//      S

fun getCardinalDirections(angle: Int): String {
    return when (angle) {
        in 45..134 -> "E"
        in 135..224 -> "S"
        in 225..314 -> "W"
        else -> "N"
    }
}

// Exercise 3

val vocals = listOf('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')

fun getVocalsCount(input: String): Int = input.count { vocals.contains(it) }

// Exercise 4 A

class RectangularShape(var x: Int, var y: Int, var with: Int, var height: Int, var color: Int) {
    fun measure() {}
    fun render() {}
}

fun validateShape(shape: RectangularShape): Boolean {
    return when {
        shape.x < 0 || shape.y < 0 -> {
            print("invalid position"); false
        }
        shape.with > 1024 || shape.height > 1024 -> {
            print("shape too big"); false
        }
        shape.color < 0 || shape.color > 0xFFFFFF -> {
            print("invalid color"); false
        }
        else -> true
    }
}

// Exercise 4 B

fun initShape(shape: RectangularShape?) {
    shape?.apply {
        x = 10
        y = 20
        with = 100
        height = 200
        color = 0xFF0066
    } ?: throw IllegalArgumentException()
}

// Exercise 4 C

fun drawShape(shape: RectangularShape?) {
    shape?.also {
        validateShape(it)
        it.measure()
        it.render()
    }
}

// Exercise 5

val data = listOf(4, 6, 34, 9, 2, 4, 7)

fun solveExercise5() {

    // A

    print(data)

    // B

    print(data.reversed())

    // C

    print(data.distinct())

    // D

    print(data.subList(0, 3))

    // E

    val min: Int? = data.min()
    if (min != null && min >= 0) print(data)

    // F

    print(data.map { it * it })

    // G

    print(data.filter { it % 2 == 0 })

    // H

    data.forEachIndexed { i, v -> if (v % 2 == 0) print(i) }

    // I

    fun isPrime(number: Int): Boolean {
        when (number) {
            in 0..1 -> return false
            2 -> return true
            else -> {
                if(number % 2 == 0) return false
                for (i in 3 until number step 2) {
                    if(number % i == 0)
                        return false
                }
            }
        }
        return true
    }

    print( data.filter { isPrime(it) } )

    // J

    data.last { isPrime(it) }
}

// Exercise 6

data class Student(val name: String, val address: String, val grade: Int)

val students = listOf(
    Student("John", "Boston", 6), Student("Jacob", "Baltimore", 2),
    Student("Edward", "New York", 7), Student("William", "Providence", 6),
    Student("Alice", "Philadelphia", 4), Student("Robert", "Boston", 7),
    Student("Richard", "Boston", 10), Student("Steven", "New York", 3)
)

fun solveExercise6() {

    // A

    print(students)

    // B

    print(students.sortedBy { it.name })

    // C

    students.map { it.name }
        .sortedBy { it }
        .forEach { print(it) }

    // D

    students.sortedWith(compareBy({ it.grade }, { it.name }))
        .forEach { print(it) }

    // E

    print(students.groupBy { it.address })
}

fun vineri6() {
    val str = "abcdef"

    str[0]
    str.subSequence(0, 2)

    for(l in str) print("$l ")

    fun isEven(input : Int): Boolean {
        return input % 2 == 0
    }

    isEven(300)

    fun filterC(text : String) = text.filter { it !in "aeiouAEIOU" }

    filterC(str)

    fun String.consonants() = filter { it !in "aeiouAEIOU" }

    str.consonants()
}

Compiled from "Comparisons.kt"
public final class com.garmin.android.aquamarine.BasicKt$solveExercise6$$inlined$sortedBy$2<T> implements java.util.Comparator {
  public com.garmin.android.aquamarine.BasicKt$solveExercise6$$inlined$sortedBy$2();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_1
       1: checkcast     #23                 // class java/lang/String
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: checkcast     #25                 // class java/lang/Comparable
      12: aload_2
      13: checkcast     #23                 // class java/lang/String
      16: astore_3
      17: astore        5
      19: iconst_0
      20: istore        4
      22: aload_3
      23: aload         5
      25: swap
      26: checkcast     #25                 // class java/lang/Comparable
      29: invokestatic  #31                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      32: ireturn
}

Compiled from "Basic.kt"
public final class com.garmin.android.aquamarine.BasicKt {
  private static final java.util.List<java.lang.Character> vocals;

  private static final java.util.List<java.lang.Integer> data;

  private static final java.util.List<com.garmin.android.aquamarine.Student> students;

  public static final java.lang.String getCardinalDirections(int);
    Code:
       0: iload_0
       1: istore_1
       2: bipush        45
       4: iload_1
       5: if_icmpgt     23
       8: iload_1
       9: sipush        135
      12: if_icmpge     19
      15: iconst_1
      16: goto          24
      19: iconst_0
      20: goto          24
      23: iconst_0
      24: ifeq          32
      27: ldc           #9                  // String E
      29: goto          96
      32: sipush        135
      35: iload_1
      36: if_icmpgt     54
      39: iload_1
      40: sipush        225
      43: if_icmpge     50
      46: iconst_1
      47: goto          55
      50: iconst_0
      51: goto          55
      54: iconst_0
      55: ifeq          63
      58: ldc           #11                 // String S
      60: goto          96
      63: sipush        225
      66: iload_1
      67: if_icmpgt     85
      70: iload_1
      71: sipush        315
      74: if_icmpge     81
      77: iconst_1
      78: goto          86
      81: iconst_0
      82: goto          86
      85: iconst_0
      86: ifeq          94
      89: ldc           #13                 // String W
      91: goto          96
      94: ldc           #15                 // String N
      96: areturn

  public static final java.util.List<java.lang.Character> getVocals();
    Code:
       0: getstatic     #26                 // Field vocals:Ljava/util/List;
       3: areturn

  public static final int getVocalsCount(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #30                 // String input
       3: invokestatic  #36                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: checkcast     #38                 // class java/lang/CharSequence
      10: astore_1
      11: iconst_0
      12: istore_2
      13: iconst_0
      14: istore_3
      15: iconst_0
      16: istore        4
      18: iload         4
      20: aload_1
      21: invokeinterface #42,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      26: if_icmpge     71
      29: aload_1
      30: iload         4
      32: invokeinterface #46,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
      37: istore        5
      39: iload         5
      41: istore        6
      43: iconst_0
      44: istore        7
      46: getstatic     #26                 // Field vocals:Ljava/util/List;
      49: iload         6
      51: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      54: invokeinterface #58,  2           // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
      59: ifeq          65
      62: iinc          3, 1
      65: iinc          4, 1
      68: goto          18
      71: iload_3
      72: ireturn

  public static final boolean validateShape(com.garmin.android.aquamarine.RectangularShape);
    Code:
       0: aload_0
       1: ldc           #71                 // String shape
       3: invokestatic  #36                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: nop
       7: aload_0
       8: invokevirtual #76                 // Method com/garmin/android/aquamarine/RectangularShape.getX:()I
      11: iflt          21
      14: aload_0
      15: invokevirtual #79                 // Method com/garmin/android/aquamarine/RectangularShape.getY:()I
      18: ifge          34
      21: ldc           #81                 // String invalid position
      23: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      26: swap
      27: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      30: iconst_0
      31: goto          97
      34: aload_0
      35: invokevirtual #96                 // Method com/garmin/android/aquamarine/RectangularShape.getWith:()I
      38: sipush        1024
      41: if_icmpgt     54
      44: aload_0
      45: invokevirtual #99                 // Method com/garmin/android/aquamarine/RectangularShape.getHeight:()I
      48: sipush        1024
      51: if_icmple     67
      54: ldc           #101                // String shape too big
      56: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      59: swap
      60: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      63: iconst_0
      64: goto          97
      67: aload_0
      68: invokevirtual #104                // Method com/garmin/android/aquamarine/RectangularShape.getColor:()I
      71: iflt          83
      74: aload_0
      75: invokevirtual #104                // Method com/garmin/android/aquamarine/RectangularShape.getColor:()I
      78: ldc           #105                // int 16777215
      80: if_icmple     96
      83: ldc           #107                // String invalid color
      85: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      88: swap
      89: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      92: iconst_0
      93: goto          97
      96: iconst_1
      97: ireturn

  public static final void initShape(com.garmin.android.aquamarine.RectangularShape);
    Code:
       0: aload_0
       1: dup
       2: ifnull        46
       5: astore_1
       6: aload_1
       7: astore_2
       8: iconst_0
       9: istore_3
      10: aload_2
      11: bipush        10
      13: invokevirtual #115                // Method com/garmin/android/aquamarine/RectangularShape.setX:(I)V
      16: aload_2
      17: bipush        20
      19: invokevirtual #118                // Method com/garmin/android/aquamarine/RectangularShape.setY:(I)V
      22: aload_2
      23: bipush        100
      25: invokevirtual #121                // Method com/garmin/android/aquamarine/RectangularShape.setWith:(I)V
      28: aload_2
      29: sipush        200
      32: invokevirtual #124                // Method com/garmin/android/aquamarine/RectangularShape.setHeight:(I)V
      35: aload_2
      36: ldc           #125                // int 16711782
      38: invokevirtual #128                // Method com/garmin/android/aquamarine/RectangularShape.setColor:(I)V
      41: nop
      42: nop
      43: goto          55
      46: pop
      47: new           #130                // class java/lang/IllegalArgumentException
      50: dup
      51: invokespecial #134                // Method java/lang/IllegalArgumentException."<init>":()V
      54: athrow
      55: return

  public static final void drawShape(com.garmin.android.aquamarine.RectangularShape);
    Code:
       0: aload_0
       1: dup
       2: ifnull        27
       5: astore_1
       6: aload_1
       7: astore_2
       8: iconst_0
       9: istore_3
      10: aload_2
      11: invokestatic  #139                // Method validateShape:(Lcom/garmin/android/aquamarine/RectangularShape;)Z
      14: pop
      15: aload_2
      16: invokevirtual #142                // Method com/garmin/android/aquamarine/RectangularShape.measure:()V
      19: aload_2
      20: invokevirtual #145                // Method com/garmin/android/aquamarine/RectangularShape.render:()V
      23: nop
      24: goto          29
      27: pop
      28: nop
      29: return

  public static final java.util.List<java.lang.Integer> getData();
    Code:
       0: getstatic     #151                // Field data:Ljava/util/List;
       3: areturn

  public static final void solveExercise5();
    Code:
       0: getstatic     #151                // Field data:Ljava/util/List;
       3: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
       6: swap
       7: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      10: getstatic     #151                // Field data:Ljava/util/List;
      13: checkcast     #154                // class java/lang/Iterable
      16: invokestatic  #160                // Method kotlin/collections/CollectionsKt.reversed:(Ljava/lang/Iterable;)Ljava/util/List;
      19: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      22: swap
      23: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      26: getstatic     #151                // Field data:Ljava/util/List;
      29: checkcast     #154                // class java/lang/Iterable
      32: invokestatic  #163                // Method kotlin/collections/CollectionsKt.distinct:(Ljava/lang/Iterable;)Ljava/util/List;
      35: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      38: swap
      39: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      42: getstatic     #151                // Field data:Ljava/util/List;
      45: iconst_0
      46: iconst_3
      47: invokeinterface #167,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
      52: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      55: swap
      56: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      59: getstatic     #151                // Field data:Ljava/util/List;
      62: checkcast     #154                // class java/lang/Iterable
      65: invokestatic  #171                // Method kotlin/collections/CollectionsKt.minOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
      68: checkcast     #173                // class java/lang/Integer
      71: astore_0
      72: aload_0
      73: ifnull        93
      76: aload_0
      77: invokevirtual #176                // Method java/lang/Integer.intValue:()I
      80: iflt          93
      83: getstatic     #151                // Field data:Ljava/util/List;
      86: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      89: swap
      90: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      93: getstatic     #151                // Field data:Ljava/util/List;
      96: checkcast     #154                // class java/lang/Iterable
      99: astore_1
     100: iconst_0
     101: istore_2
     102: aload_1
     103: astore_3
     104: new           #178                // class java/util/ArrayList
     107: dup
     108: aload_1
     109: bipush        10
     111: invokestatic  #182                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     114: invokespecial #184                // Method java/util/ArrayList."<init>":(I)V
     117: checkcast     #186                // class java/util/Collection
     120: astore        4
     122: iconst_0
     123: istore        5
     125: aload_3
     126: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     131: astore        6
     133: aload         6
     135: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     140: ifeq          189
     143: aload         6
     145: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     150: astore        7
     152: aload         4
     154: aload         7
     156: checkcast     #202                // class java/lang/Number
     159: invokevirtual #203                // Method java/lang/Number.intValue:()I
     162: istore        8
     164: astore        10
     166: iconst_0
     167: istore        9
     169: iload         8
     171: iload         8
     173: imul
     174: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     177: aload         10
     179: swap
     180: invokeinterface #209,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     185: pop
     186: goto          133
     189: aload         4
     191: checkcast     #54                 // class java/util/List
     194: nop
     195: astore_1
     196: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     199: aload_1
     200: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     203: getstatic     #151                // Field data:Ljava/util/List;
     206: checkcast     #154                // class java/lang/Iterable
     209: astore_1
     210: iconst_0
     211: istore_2
     212: aload_1
     213: astore_3
     214: new           #178                // class java/util/ArrayList
     217: dup
     218: invokespecial #210                // Method java/util/ArrayList."<init>":()V
     221: checkcast     #186                // class java/util/Collection
     224: astore        4
     226: iconst_0
     227: istore        5
     229: aload_3
     230: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     235: astore        6
     237: aload         6
     239: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     244: ifeq          297
     247: aload         6
     249: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     254: astore        7
     256: aload         7
     258: checkcast     #202                // class java/lang/Number
     261: invokevirtual #203                // Method java/lang/Number.intValue:()I
     264: istore        8
     266: iconst_0
     267: istore        9
     269: iload         8
     271: iconst_2
     272: irem
     273: ifne          280
     276: iconst_1
     277: goto          281
     280: iconst_0
     281: ifeq          237
     284: aload         4
     286: aload         7
     288: invokeinterface #209,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     293: pop
     294: goto          237
     297: aload         4
     299: checkcast     #54                 // class java/util/List
     302: nop
     303: astore_1
     304: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     307: aload_1
     308: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     311: getstatic     #151                // Field data:Ljava/util/List;
     314: checkcast     #154                // class java/lang/Iterable
     317: astore_1
     318: iconst_0
     319: istore_2
     320: iconst_0
     321: istore_3
     322: aload_1
     323: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     328: astore        4
     330: aload         4
     332: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     337: ifeq          400
     340: aload         4
     342: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     347: astore        5
     349: iload_3
     350: iinc          3, 1
     353: istore        6
     355: iload         6
     357: ifge          363
     360: invokestatic  #213                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     363: iload         6
     365: aload         5
     367: checkcast     #202                // class java/lang/Number
     370: invokevirtual #203                // Method java/lang/Number.intValue:()I
     373: istore        7
     375: istore        8
     377: iconst_0
     378: istore        9
     380: iload         7
     382: iconst_2
     383: irem
     384: ifne          395
     387: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     390: iload         8
     392: invokevirtual #215                // Method java/io/PrintStream.print:(I)V
     395: nop
     396: nop
     397: goto          330
     400: nop
     401: getstatic     #151                // Field data:Ljava/util/List;
     404: checkcast     #154                // class java/lang/Iterable
     407: astore_1
     408: iconst_0
     409: istore_2
     410: aload_1
     411: astore_3
     412: new           #178                // class java/util/ArrayList
     415: dup
     416: invokespecial #210                // Method java/util/ArrayList."<init>":()V
     419: checkcast     #186                // class java/util/Collection
     422: astore        4
     424: iconst_0
     425: istore        5
     427: aload_3
     428: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     433: astore        6
     435: aload         6
     437: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     442: ifeq          488
     445: aload         6
     447: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     452: astore        7
     454: aload         7
     456: checkcast     #202                // class java/lang/Number
     459: invokevirtual #203                // Method java/lang/Number.intValue:()I
     462: istore        8
     464: iconst_0
     465: istore        9
     467: iload         8
     469: invokestatic  #219                // Method solveExercise5$isPrime:(I)Z
     472: ifeq          435
     475: aload         4
     477: aload         7
     479: invokeinterface #209,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     484: pop
     485: goto          435
     488: aload         4
     490: checkcast     #54                 // class java/util/List
     493: nop
     494: astore_1
     495: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     498: aload_1
     499: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     502: getstatic     #151                // Field data:Ljava/util/List;
     505: astore_1
     506: iconst_0
     507: istore_2
     508: aload_1
     509: aload_1
     510: invokeinterface #222,  1          // InterfaceMethod java/util/List.size:()I
     515: invokeinterface #226,  2          // InterfaceMethod java/util/List.listIterator:(I)Ljava/util/ListIterator;
     520: astore_3
     521: aload_3
     522: invokeinterface #231,  1          // InterfaceMethod java/util/ListIterator.hasPrevious:()Z
     527: ifeq          562
     530: aload_3
     531: invokeinterface #234,  1          // InterfaceMethod java/util/ListIterator.previous:()Ljava/lang/Object;
     536: astore        4
     538: aload         4
     540: checkcast     #202                // class java/lang/Number
     543: invokevirtual #203                // Method java/lang/Number.intValue:()I
     546: istore        5
     548: iconst_0
     549: istore        6
     551: iload         5
     553: invokestatic  #219                // Method solveExercise5$isPrime:(I)Z
     556: ifeq          521
     559: goto          572
     562: new           #236                // class java/util/NoSuchElementException
     565: dup
     566: ldc           #238                // String List contains no element matching the predicate.
     568: invokespecial #241                // Method java/util/NoSuchElementException."<init>":(Ljava/lang/String;)V
     571: athrow
     572: return

  public static final java.util.List<com.garmin.android.aquamarine.Student> getStudents();
    Code:
       0: getstatic     #277                // Field students:Ljava/util/List;
       3: areturn

  public static final void solveExercise6();
    Code:
       0: getstatic     #277                // Field students:Ljava/util/List;
       3: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
       6: swap
       7: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      10: getstatic     #277                // Field students:Ljava/util/List;
      13: checkcast     #154                // class java/lang/Iterable
      16: astore_0
      17: iconst_0
      18: istore_1
      19: aload_0
      20: new           #280                // class com/garmin/android/aquamarine/BasicKt$solveExercise6$$inlined$sortedBy$1
      23: dup
      24: invokespecial #281                // Method com/garmin/android/aquamarine/BasicKt$solveExercise6$$inlined$sortedBy$1."<init>":()V
      27: checkcast     #283                // class java/util/Comparator
      30: invokestatic  #287                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
      33: astore_0
      34: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      37: aload_0
      38: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      41: getstatic     #277                // Field students:Ljava/util/List;
      44: checkcast     #154                // class java/lang/Iterable
      47: astore_0
      48: iconst_0
      49: istore_1
      50: aload_0
      51: astore_2
      52: new           #178                // class java/util/ArrayList
      55: dup
      56: aload_0
      57: bipush        10
      59: invokestatic  #182                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      62: invokespecial #184                // Method java/util/ArrayList."<init>":(I)V
      65: checkcast     #186                // class java/util/Collection
      68: astore_3
      69: iconst_0
      70: istore        4
      72: aload_2
      73: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      78: astore        5
      80: aload         5
      82: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      87: ifeq          129
      90: aload         5
      92: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      97: astore        6
      99: aload_3
     100: aload         6
     102: checkcast     #289                // class com/garmin/android/aquamarine/Student
     105: astore        7
     107: astore        14
     109: iconst_0
     110: istore        8
     112: aload         7
     114: invokevirtual #293                // Method com/garmin/android/aquamarine/Student.getName:()Ljava/lang/String;
     117: aload         14
     119: swap
     120: invokeinterface #209,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     125: pop
     126: goto          80
     129: aload_3
     130: checkcast     #54                 // class java/util/List
     133: nop
     134: checkcast     #154                // class java/lang/Iterable
     137: astore_0
     138: nop
     139: iconst_0
     140: istore_1
     141: aload_0
     142: new           #295                // class com/garmin/android/aquamarine/BasicKt$solveExercise6$$inlined$sortedBy$2
     145: dup
     146: invokespecial #296                // Method com/garmin/android/aquamarine/BasicKt$solveExercise6$$inlined$sortedBy$2."<init>":()V
     149: checkcast     #283                // class java/util/Comparator
     152: invokestatic  #287                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     155: checkcast     #154                // class java/lang/Iterable
     158: astore_0
     159: nop
     160: iconst_0
     161: istore_1
     162: aload_0
     163: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     168: astore_2
     169: aload_2
     170: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     175: ifeq          207
     178: aload_2
     179: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     184: astore_3
     185: aload_3
     186: checkcast     #19                 // class java/lang/String
     189: astore        4
     191: iconst_0
     192: istore        5
     194: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     197: aload         4
     199: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     202: nop
     203: nop
     204: goto          169
     207: nop
     208: getstatic     #277                // Field students:Ljava/util/List;
     211: checkcast     #154                // class java/lang/Iterable
     214: iconst_2
     215: anewarray     #298                // class kotlin/jvm/functions/Function1
     218: astore_0
     219: aload_0
     220: iconst_0
     221: invokedynamic #317,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function1;
     226: aastore
     227: aload_0
     228: iconst_1
     229: invokedynamic #322,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function1;
     234: aastore
     235: aload_0
     236: invokestatic  #328                // Method kotlin/comparisons/ComparisonsKt.compareBy:([Lkotlin/jvm/functions/Function1;)Ljava/util/Comparator;
     239: invokestatic  #287                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     242: checkcast     #154                // class java/lang/Iterable
     245: astore_0
     246: nop
     247: iconst_0
     248: istore_1
     249: aload_0
     250: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     255: astore_2
     256: aload_2
     257: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     262: ifeq          294
     265: aload_2
     266: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     271: astore_3
     272: aload_3
     273: checkcast     #289                // class com/garmin/android/aquamarine/Student
     276: astore        4
     278: iconst_0
     279: istore        5
     281: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     284: aload         4
     286: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     289: nop
     290: nop
     291: goto          256
     294: nop
     295: getstatic     #277                // Field students:Ljava/util/List;
     298: checkcast     #154                // class java/lang/Iterable
     301: astore_0
     302: iconst_0
     303: istore_1
     304: aload_0
     305: astore_2
     306: new           #330                // class java/util/LinkedHashMap
     309: dup
     310: invokespecial #331                // Method java/util/LinkedHashMap."<init>":()V
     313: checkcast     #333                // class java/util/Map
     316: astore_3
     317: iconst_0
     318: istore        4
     320: aload_2
     321: invokeinterface #190,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     326: astore        5
     328: aload         5
     330: invokeinterface #196,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     335: ifeq          439
     338: aload         5
     340: invokeinterface #200,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     345: astore        6
     347: aload         6
     349: checkcast     #289                // class com/garmin/android/aquamarine/Student
     352: astore        7
     354: iconst_0
     355: istore        8
     357: aload         7
     359: invokevirtual #336                // Method com/garmin/android/aquamarine/Student.getAddress:()Ljava/lang/String;
     362: astore        9
     364: aload_3
     365: astore        10
     367: iconst_0
     368: istore        11
     370: aload         10
     372: aload         9
     374: invokeinterface #339,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     379: astore        12
     381: aload         12
     383: ifnonnull     418
     386: iconst_0
     387: istore        13
     389: new           #178                // class java/util/ArrayList
     392: dup
     393: invokespecial #210                // Method java/util/ArrayList."<init>":()V
     396: checkcast     #54                 // class java/util/List
     399: astore        13
     401: aload         10
     403: aload         9
     405: aload         13
     407: invokeinterface #343,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     412: pop
     413: aload         13
     415: goto          420
     418: aload         12
     420: nop
     421: checkcast     #54                 // class java/util/List
     424: astore        7
     426: aload         7
     428: aload         6
     430: invokeinterface #344,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     435: pop
     436: goto          328
     439: aload_3
     440: nop
     441: astore_0
     442: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
     445: aload_0
     446: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
     449: return

  public static final void vineri6();
    Code:
       0: ldc_w         #368                // String abcdef
       3: astore_0
       4: aload_0
       5: iconst_0
       6: invokevirtual #369                // Method java/lang/String.charAt:(I)C
       9: pop
      10: aload_0
      11: iconst_0
      12: iconst_2
      13: invokevirtual #373                // Method java/lang/String.subSequence:(II)Ljava/lang/CharSequence;
      16: pop
      17: iconst_0
      18: istore_1
      19: aload_0
      20: invokevirtual #374                // Method java/lang/String.length:()I
      23: istore_2
      24: iload_1
      25: iload_2
      26: if_icmpge     67
      29: aload_0
      30: iload_1
      31: invokevirtual #369                // Method java/lang/String.charAt:(I)C
      34: istore_3
      35: new           #376                // class java/lang/StringBuilder
      38: dup
      39: invokespecial #377                // Method java/lang/StringBuilder."<init>":()V
      42: iload_3
      43: invokevirtual #381                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      46: bipush        32
      48: invokevirtual #381                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      51: invokevirtual #384                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      54: getstatic     #87                 // Field java/lang/System.out:Ljava/io/PrintStream;
      57: swap
      58: invokevirtual #93                 // Method java/io/PrintStream.print:(Ljava/lang/Object;)V
      61: iinc          1, 1
      64: goto          24
      67: sipush        300
      70: invokestatic  #387                // Method vineri6$isEven:(I)Z
      73: pop
      74: aload_0
      75: invokestatic  #391                // Method vineri6$filterC:(Ljava/lang/String;)Ljava/lang/String;
      78: pop
      79: aload_0
      80: invokestatic  #394                // Method vineri6$consonants:(Ljava/lang/String;)Ljava/lang/String;
      83: pop
      84: return

  private static final boolean solveExercise5$isPrime(int);
    Code:
       0: iload_0
       1: istore_1
       2: iconst_0
       3: iload_1
       4: if_icmpgt     20
       7: iload_1
       8: iconst_2
       9: if_icmpge     16
      12: iconst_1
      13: goto          21
      16: iconst_0
      17: goto          21
      20: iconst_0
      21: ifeq          26
      24: iconst_0
      25: ireturn
      26: iload_1
      27: iconst_2
      28: if_icmpne     33
      31: iconst_1
      32: ireturn
      33: iload_0
      34: iconst_2
      35: irem
      36: ifne          41
      39: iconst_0
      40: ireturn
      41: iconst_3
      42: iload_0
      43: invokestatic  #402                // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
      46: checkcast     #404                // class kotlin/ranges/IntProgression
      49: iconst_2
      50: invokestatic  #408                // Method kotlin/ranges/RangesKt.step:(Lkotlin/ranges/IntProgression;I)Lkotlin/ranges/IntProgression;
      53: astore_2
      54: aload_2
      55: invokevirtual #411                // Method kotlin/ranges/IntProgression.getFirst:()I
      58: istore_3
      59: aload_2
      60: invokevirtual #414                // Method kotlin/ranges/IntProgression.getLast:()I
      63: istore        4
      65: aload_2
      66: invokevirtual #417                // Method kotlin/ranges/IntProgression.getStep:()I
      69: istore        5
      71: iload         5
      73: ifle          82
      76: iload_3
      77: iload         4
      79: if_icmple     93
      82: iload         5
      84: ifge          115
      87: iload         4
      89: iload_3
      90: if_icmpgt     115
      93: iload_0
      94: iload_3
      95: irem
      96: ifne          101
      99: iconst_0
     100: ireturn
     101: iload_3
     102: iload         4
     104: if_icmpeq     115
     107: iload_3
     108: iload         5
     110: iadd
     111: istore_3
     112: goto          93
     115: iconst_1
     116: ireturn

  private static final java.lang.Comparable solveExercise6$lambda$12(com.garmin.android.aquamarine.Student);
    Code:
       0: aload_0
       1: ldc_w         #419                // String it
       4: invokestatic  #36                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #422                // Method com/garmin/android/aquamarine/Student.getGrade:()I
      11: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      14: checkcast     #424                // class java/lang/Comparable
      17: areturn

  private static final java.lang.Comparable solveExercise6$lambda$13(com.garmin.android.aquamarine.Student);
    Code:
       0: aload_0
       1: ldc_w         #419                // String it
       4: invokestatic  #36                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #293                // Method com/garmin/android/aquamarine/Student.getName:()Ljava/lang/String;
      11: checkcast     #424                // class java/lang/Comparable
      14: areturn

  private static final boolean vineri6$isEven(int);
    Code:
       0: iload_0
       1: iconst_2
       2: irem
       3: ifne          10
       6: iconst_1
       7: goto          11
      10: iconst_0
      11: ireturn

  private static final java.lang.String vineri6$filterC(java.lang.String);
    Code:
       0: aload_0
       1: astore_1
       2: iconst_0
       3: istore_2
       4: aload_1
       5: checkcast     #38                 // class java/lang/CharSequence
       8: astore_3
       9: new           #376                // class java/lang/StringBuilder
      12: dup
      13: invokespecial #377                // Method java/lang/StringBuilder."<init>":()V
      16: checkcast     #426                // class java/lang/Appendable
      19: astore        4
      21: iconst_0
      22: istore        5
      24: iconst_0
      25: istore        6
      27: aload_3
      28: invokeinterface #42,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      33: istore        7
      35: iload         6
      37: iload         7
      39: if_icmpge     100
      42: aload_3
      43: iload         6
      45: invokeinterface #46,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
      50: istore        8
      52: iload         8
      54: istore        9
      56: iconst_0
      57: istore        10
      59: ldc_w         #428                // String aeiouAEIOU
      62: checkcast     #38                 // class java/lang/CharSequence
      65: iload         9
      67: iconst_0
      68: iconst_2
      69: aconst_null
      70: invokestatic  #434                // Method kotlin/text/StringsKt.contains$default:(Ljava/lang/CharSequence;CZILjava/lang/Object;)Z
      73: ifne          80
      76: iconst_1
      77: goto          81
      80: iconst_0
      81: ifeq          94
      84: aload         4
      86: iload         8
      88: invokeinterface #437,  2          // InterfaceMethod java/lang/Appendable.append:(C)Ljava/lang/Appendable;
      93: pop
      94: iinc          6, 1
      97: goto          35
     100: aload         4
     102: checkcast     #376                // class java/lang/StringBuilder
     105: invokevirtual #384                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     108: areturn

  private static final java.lang.String vineri6$consonants(java.lang.String);
    Code:
       0: aload_0
       1: astore_1
       2: iconst_0
       3: istore_2
       4: aload_1
       5: checkcast     #38                 // class java/lang/CharSequence
       8: astore_3
       9: new           #376                // class java/lang/StringBuilder
      12: dup
      13: invokespecial #377                // Method java/lang/StringBuilder."<init>":()V
      16: checkcast     #426                // class java/lang/Appendable
      19: astore        4
      21: iconst_0
      22: istore        5
      24: iconst_0
      25: istore        6
      27: aload_3
      28: invokeinterface #42,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      33: istore        7
      35: iload         6
      37: iload         7
      39: if_icmpge     100
      42: aload_3
      43: iload         6
      45: invokeinterface #46,  2           // InterfaceMethod java/lang/CharSequence.charAt:(I)C
      50: istore        8
      52: iload         8
      54: istore        9
      56: iconst_0
      57: istore        10
      59: ldc_w         #428                // String aeiouAEIOU
      62: checkcast     #38                 // class java/lang/CharSequence
      65: iload         9
      67: iconst_0
      68: iconst_2
      69: aconst_null
      70: invokestatic  #434                // Method kotlin/text/StringsKt.contains$default:(Ljava/lang/CharSequence;CZILjava/lang/Object;)Z
      73: ifne          80
      76: iconst_1
      77: goto          81
      80: iconst_0
      81: ifeq          94
      84: aload         4
      86: iload         8
      88: invokeinterface #437,  2          // InterfaceMethod java/lang/Appendable.append:(C)Ljava/lang/Appendable;
      93: pop
      94: iinc          6, 1
      97: goto          35
     100: aload         4
     102: checkcast     #376                // class java/lang/StringBuilder
     105: invokevirtual #384                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     108: areturn

  static {};
    Code:
       0: bipush        10
       2: anewarray     #48                 // class java/lang/Character
       5: astore_0
       6: aload_0
       7: iconst_0
       8: bipush        97
      10: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      13: aastore
      14: aload_0
      15: iconst_1
      16: bipush        101
      18: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      21: aastore
      22: aload_0
      23: iconst_2
      24: bipush        105
      26: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      29: aastore
      30: aload_0
      31: iconst_3
      32: bipush        111
      34: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      37: aastore
      38: aload_0
      39: iconst_4
      40: bipush        117
      42: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      45: aastore
      46: aload_0
      47: iconst_5
      48: bipush        65
      50: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      53: aastore
      54: aload_0
      55: bipush        6
      57: bipush        69
      59: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      62: aastore
      63: aload_0
      64: bipush        7
      66: bipush        73
      68: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      71: aastore
      72: aload_0
      73: bipush        8
      75: bipush        79
      77: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      80: aastore
      81: aload_0
      82: bipush        9
      84: bipush        85
      86: invokestatic  #52                 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      89: aastore
      90: aload_0
      91: invokestatic  #448                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      94: putstatic     #26                 // Field vocals:Ljava/util/List;
      97: bipush        7
      99: anewarray     #173                // class java/lang/Integer
     102: astore_0
     103: aload_0
     104: iconst_0
     105: iconst_4
     106: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     109: aastore
     110: aload_0
     111: iconst_1
     112: bipush        6
     114: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     117: aastore
     118: aload_0
     119: iconst_2
     120: bipush        34
     122: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     125: aastore
     126: aload_0
     127: iconst_3
     128: bipush        9
     130: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     133: aastore
     134: aload_0
     135: iconst_4
     136: iconst_2
     137: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     140: aastore
     141: aload_0
     142: iconst_5
     143: iconst_4
     144: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     147: aastore
     148: aload_0
     149: bipush        6
     151: bipush        7
     153: invokestatic  #206                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     156: aastore
     157: aload_0
     158: invokestatic  #448                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     161: putstatic     #151                // Field data:Ljava/util/List;
     164: bipush        8
     166: anewarray     #289                // class com/garmin/android/aquamarine/Student
     169: astore_0
     170: aload_0
     171: iconst_0
     172: new           #289                // class com/garmin/android/aquamarine/Student
     175: dup
     176: ldc_w         #450                // String John
     179: ldc_w         #452                // String Boston
     182: bipush        6
     184: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     187: aastore
     188: aload_0
     189: iconst_1
     190: new           #289                // class com/garmin/android/aquamarine/Student
     193: dup
     194: ldc_w         #457                // String Jacob
     197: ldc_w         #459                // String Baltimore
     200: iconst_2
     201: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     204: aastore
     205: aload_0
     206: iconst_2
     207: new           #289                // class com/garmin/android/aquamarine/Student
     210: dup
     211: ldc_w         #461                // String Edward
     214: ldc_w         #463                // String New York
     217: bipush        7
     219: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     222: aastore
     223: aload_0
     224: iconst_3
     225: new           #289                // class com/garmin/android/aquamarine/Student
     228: dup
     229: ldc_w         #465                // String William
     232: ldc_w         #467                // String Providence
     235: bipush        6
     237: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     240: aastore
     241: aload_0
     242: iconst_4
     243: new           #289                // class com/garmin/android/aquamarine/Student
     246: dup
     247: ldc_w         #469                // String Alice
     250: ldc_w         #471                // String Philadelphia
     253: iconst_4
     254: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     257: aastore
     258: aload_0
     259: iconst_5
     260: new           #289                // class com/garmin/android/aquamarine/Student
     263: dup
     264: ldc_w         #473                // String Robert
     267: ldc_w         #452                // String Boston
     270: bipush        7
     272: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     275: aastore
     276: aload_0
     277: bipush        6
     279: new           #289                // class com/garmin/android/aquamarine/Student
     282: dup
     283: ldc_w         #475                // String Richard
     286: ldc_w         #452                // String Boston
     289: bipush        10
     291: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     294: aastore
     295: aload_0
     296: bipush        7
     298: new           #289                // class com/garmin/android/aquamarine/Student
     301: dup
     302: ldc_w         #477                // String Steven
     305: ldc_w         #463                // String New York
     308: iconst_3
     309: invokespecial #455                // Method com/garmin/android/aquamarine/Student."<init>":(Ljava/lang/String;Ljava/lang/String;I)V
     312: aastore
     313: aload_0
     314: invokestatic  #448                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     317: putstatic     #277                // Field students:Ljava/util/List;
     320: return
}

Compiled from "Comparisons.kt"
public final class com.garmin.android.aquamarine.BasicKt$solveExercise6$$inlined$sortedBy$1<T> implements java.util.Comparator {
  public com.garmin.android.aquamarine.BasicKt$solveExercise6$$inlined$sortedBy$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_1
       1: checkcast     #23                 // class com/garmin/android/aquamarine/Student
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method com/garmin/android/aquamarine/Student.getName:()Ljava/lang/String;
      12: checkcast     #29                 // class java/lang/Comparable
      15: aload_2
      16: checkcast     #23                 // class com/garmin/android/aquamarine/Student
      19: astore_3
      20: astore        5
      22: iconst_0
      23: istore        4
      25: aload_3
      26: invokevirtual #27                 // Method com/garmin/android/aquamarine/Student.getName:()Ljava/lang/String;
      29: aload         5
      31: swap
      32: checkcast     #29                 // class java/lang/Comparable
      35: invokestatic  #35                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      38: ireturn
}


package org.livingdoc.engine.algo

import java.lang.Math.min

/**
 * Calculates the Damerau-Levenshtein distance, a string similarity metric used e.g. by spell checkers.
 *
 * By default, the algorithm calculates the minimum number of four different editing operations
 * required to turn one string into another. The four operations are
 *

 *
<emph>insertion:</emph> a character is inserted

 *
<emph>deletion:</emph> a character is deleted

 *
<emph>substitution:</emph> a character is exchanged with another

 *
<emph>transposition:</emph> two adjacent characters are swapped

 *

 *
 * It is possible to specify a weight for each of these operations to tune the metric.
 *
 * The implementation is linear in space, but O(n²) in time. To avoid expensive comparisons of long
 * strings, you can specify a cutoff distance, beyond which the algorithm will abort.
 *
 * @param cutoffDistance maximum distance at which the algorithm aborts (default: no cutoff)
 * @param weightInsertion weight of an insert operation (default: 1)
 * @param weightDeletion weight of a deletion operation (default: 1)
 * @param weightSubstitution weight of a substitution operation (default: 1)
 * @param weightTransposition weight of a transposition operation (default: 1)
 */
class DamerauLevenshtein(
    val cutoffDistance: Int = 0,
    val weightInsertion: Int = 1,
    val weightDeletion: Int = 1,
    val weightSubstitution: Int = 1,
    val weightTransposition: Int = 1
) {

    /*
     * This dynamic programming algorithm calculates a m*n matrix of distance values. The
     * final result is the distance between the two given strings a and b. The values in between
     * are locally minimal distances for the respective substrings of a and b.
     *
     *     L i v i n g D o c - b
     *    0 1 2 3 4 5 6 7 8 9
     * L  1 0 2 3 4 5 6 7 8 9
     * o  2 1 1 2 3 4 5 6 7 8
     * v  3 2 2 1 2 3 4 5 6 7
     * i  4 3 2 2 1 2 3 4 5 6
     * g  5 4 3 3 2 2 3 4 5 6
     * n  6 5 4 4 3 2 2 3 4 5
     * D  7 6 5 5 4 3 3 2 3 4
     * e  8 7 6 6 5 4 4 3 3 4
     * a  9 8 7 7 6 5 5 4 4 4
     * d 10 9 8 8 7 6 6 5 5 5 <-- distance result
     * |
     * a
     *
     * As only the last three rows are needed to calculate the next distance value, only those are kept
     * in memory.
     */

    /**
     * Calculates the editing distance between the given strings.
     */
    @Suppress("ComplexCondition")
    fun distance(a: String, b: String): Int {
        var secondToLastRow = IntArray(b.length + 1)
        var lastRow = IntArray(b.length + 1)
        var currentRow = IntArray(b.length + 1)

        for (j in 0..b.length) {
            lastRow[j] = j * weightInsertion
        }

        for (i in 0 until a.length) {
            var currentDistance = Int.MAX_VALUE
            currentRow[0] = (i + 1) * weightDeletion

            for (j in 0 until b.length) {
                currentRow[j + 1] = currentRow[j] + weightInsertion
                currentRow[j + 1] = min(currentRow[j + 1], lastRow[j + 1] + weightDeletion)
                currentRow[j + 1] = min(currentRow[j + 1], lastRow[j] + if (a[i] != b[j]) weightSubstitution else 0)
                if (i > 0 && j > 0 && a[i - 1] == b[j] && a[i] == b[j - 1]) {
                    currentRow[j + 1] = min(currentRow[j + 1], secondToLastRow[j - 1] + weightTransposition)
                }

                currentDistance = min(currentDistance, currentRow[j + 1])
            }
            // check cutoff
            if (cutoffDistance in 1..currentDistance) {
                return currentDistance
            }

            // rotate rows
            val tempRow = secondToLastRow
            secondToLastRow = lastRow
            lastRow = currentRow
            currentRow = tempRow
        }

        return lastRow[b.length]
    }
}

Compiled from "DamerauLevenshtein.kt"
public final class org.livingdoc.engine.algo.DamerauLevenshtein {
  private final int cutoffDistance;

  private final int weightInsertion;

  private final int weightDeletion;

  private final int weightSubstitution;

  private final int weightTransposition;

  public org.livingdoc.engine.algo.DamerauLevenshtein(int, int, int, int, int);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field cutoffDistance:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field weightInsertion:I
      14: aload_0
      15: iload_3
      16: putfield      #19                 // Field weightDeletion:I
      19: aload_0
      20: iload         4
      22: putfield      #22                 // Field weightSubstitution:I
      25: aload_0
      26: iload         5
      28: putfield      #25                 // Field weightTransposition:I
      31: return

  public org.livingdoc.engine.algo.DamerauLevenshtein(int, int, int, int, int, int, kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: iload         6
       2: iconst_1
       3: iand
       4: ifeq          9
       7: iconst_0
       8: istore_1
       9: iload         6
      11: iconst_2
      12: iand
      13: ifeq          18
      16: iconst_1
      17: istore_2
      18: iload         6
      20: iconst_4
      21: iand
      22: ifeq          27
      25: iconst_1
      26: istore_3
      27: iload         6
      29: bipush        8
      31: iand
      32: ifeq          38
      35: iconst_1
      36: istore        4
      38: iload         6
      40: bipush        16
      42: iand
      43: ifeq          49
      46: iconst_1
      47: istore        5
      49: aload_0
      50: iload_1
      51: iload_2
      52: iload_3
      53: iload         4
      55: iload         5
      57: invokespecial #30                 // Method "<init>":(IIIII)V
      60: return

  public final int getCutoffDistance();
    Code:
       0: aload_0
       1: getfield      #13                 // Field cutoffDistance:I
       4: ireturn

  public final int getWeightInsertion();
    Code:
       0: aload_0
       1: getfield      #16                 // Field weightInsertion:I
       4: ireturn

  public final int getWeightDeletion();
    Code:
       0: aload_0
       1: getfield      #19                 // Field weightDeletion:I
       4: ireturn

  public final int getWeightSubstitution();
    Code:
       0: aload_0
       1: getfield      #22                 // Field weightSubstitution:I
       4: ireturn

  public final int getWeightTransposition();
    Code:
       0: aload_0
       1: getfield      #25                 // Field weightTransposition:I
       4: ireturn

  public final int distance(java.lang.String, java.lang.String);
    Code:
       0: aload_1
       1: ldc           #41                 // String a
       3: invokestatic  #47                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #49                 // String b
       9: invokestatic  #47                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_2
      13: invokevirtual #54                 // Method java/lang/String.length:()I
      16: iconst_1
      17: iadd
      18: newarray       int
      20: astore_3
      21: aload_2
      22: invokevirtual #54                 // Method java/lang/String.length:()I
      25: iconst_1
      26: iadd
      27: newarray       int
      29: astore        4
      31: aload_2
      32: invokevirtual #54                 // Method java/lang/String.length:()I
      35: iconst_1
      36: iadd
      37: newarray       int
      39: astore        5
      41: iconst_0
      42: istore        6
      44: aload_2
      45: invokevirtual #54                 // Method java/lang/String.length:()I
      48: istore        7
      50: iload         6
      52: iload         7
      54: if_icmpgt     82
      57: aload         4
      59: iload         6
      61: iload         6
      63: aload_0
      64: getfield      #16                 // Field weightInsertion:I
      67: imul
      68: iastore
      69: iload         6
      71: iload         7
      73: if_icmpeq     82
      76: iinc          6, 1
      79: goto          57
      82: iconst_0
      83: istore        6
      85: aload_1
      86: invokevirtual #54                 // Method java/lang/String.length:()I
      89: istore        7
      91: iload         6
      93: iload         7
      95: if_icmpge     369
      98: ldc           #55                 // int 2147483647
     100: istore        8
     102: aload         5
     104: iconst_0
     105: iload         6
     107: iconst_1
     108: iadd
     109: aload_0
     110: getfield      #19                 // Field weightDeletion:I
     113: imul
     114: iastore
     115: iconst_0
     116: istore        9
     118: aload_2
     119: invokevirtual #54                 // Method java/lang/String.length:()I
     122: istore        10
     124: iload         9
     126: iload         10
     128: if_icmpge     315
     131: aload         5
     133: iload         9
     135: iconst_1
     136: iadd
     137: aload         5
     139: iload         9
     141: iaload
     142: aload_0
     143: getfield      #16                 // Field weightInsertion:I
     146: iadd
     147: iastore
     148: aload         5
     150: iload         9
     152: iconst_1
     153: iadd
     154: aload         5
     156: iload         9
     158: iconst_1
     159: iadd
     160: iaload
     161: aload         4
     163: iload         9
     165: iconst_1
     166: iadd
     167: iaload
     168: aload_0
     169: getfield      #19                 // Field weightDeletion:I
     172: iadd
     173: invokestatic  #61                 // Method java/lang/Math.min:(II)I
     176: iastore
     177: aload         5
     179: iload         9
     181: iconst_1
     182: iadd
     183: aload         5
     185: iload         9
     187: iconst_1
     188: iadd
     189: iaload
     190: aload         4
     192: iload         9
     194: iaload
     195: aload_1
     196: iload         6
     198: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     201: aload_2
     202: iload         9
     204: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     207: if_icmpeq     217
     210: aload_0
     211: getfield      #22                 // Field weightSubstitution:I
     214: goto          218
     217: iconst_0
     218: iadd
     219: invokestatic  #61                 // Method java/lang/Math.min:(II)I
     222: iastore
     223: iload         6
     225: ifle          295
     228: iload         9
     230: ifle          295
     233: aload_1
     234: iload         6
     236: iconst_1
     237: isub
     238: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     241: aload_2
     242: iload         9
     244: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     247: if_icmpne     295
     250: aload_1
     251: iload         6
     253: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     256: aload_2
     257: iload         9
     259: iconst_1
     260: isub
     261: invokevirtual #65                 // Method java/lang/String.charAt:(I)C
     264: if_icmpne     295
     267: aload         5
     269: iload         9
     271: iconst_1
     272: iadd
     273: aload         5
     275: iload         9
     277: iconst_1
     278: iadd
     279: iaload
     280: aload_3
     281: iload         9
     283: iconst_1
     284: isub
     285: iaload
     286: aload_0
     287: getfield      #25                 // Field weightTransposition:I
     290: iadd
     291: invokestatic  #61                 // Method java/lang/Math.min:(II)I
     294: iastore
     295: iload         8
     297: aload         5
     299: iload         9
     301: iconst_1
     302: iadd
     303: iaload
     304: invokestatic  #61                 // Method java/lang/Math.min:(II)I
     307: istore        8
     309: iinc          9, 1
     312: goto          124
     315: aload_0
     316: getfield      #13                 // Field cutoffDistance:I
     319: istore        9
     321: iconst_1
     322: iload         9
     324: if_icmpgt     342
     327: iload         9
     329: iload         8
     331: if_icmpgt     338
     334: iconst_1
     335: goto          343
     338: iconst_0
     339: goto          343
     342: iconst_0
     343: ifeq          349
     346: iload         8
     348: ireturn
     349: aload_3
     350: astore        9
     352: aload         4
     354: astore_3
     355: aload         5
     357: astore        4
     359: aload         9
     361: astore        5
     363: iinc          6, 1
     366: goto          91
     369: aload         4
     371: aload_2
     372: invokevirtual #54                 // Method java/lang/String.length:()I
     375: iaload
     376: ireturn

  public org.livingdoc.engine.algo.DamerauLevenshtein();
    Code:
       0: aload_0
       1: iconst_0
       2: iconst_0
       3: iconst_0
       4: iconst_0
       5: iconst_0
       6: bipush        31
       8: aconst_null
       9: invokespecial #77                 // Method "<init>":(IIIIIILkotlin/jvm/internal/DefaultConstructorMarker;)V
      12: return
}


package me.olegthelilfix.leetcoding.old

//Given a string s, return the longest palindromic substring in s.
fun isPalindrome(s: String): Boolean {
    if (s.isEmpty()) {
        return false
    }

    for (i in 0 .. s.length/2) {
        if(s[i] != s[s.length-i-1]) {
            return false
        }
    }

    return true
}

fun longestPalindrome(s: String): String {
    if (s.length == 1) {
        return s
    }

    if (isPalindrome(s)) {
        return s
    }

    var longest = s[0].toString()

    for (i in 0 until s.length - 1) {
        s.slice(0..10)
        var substring: String = s[i].toString()
        for (j in i + 1 until s.length) {
            substring += s[j]
            if (isPalindrome(substring) && substring.length > longest.length) {
                longest = substring
            }
        }
    }

    return longest
}

fun main() {
//    isPalindrome("abcba")
    var t = System.currentTimeMillis()
    longestPalindrome("<KEY>")
    var t2 = System.currentTimeMillis()

    print(t2-t)
}

Compiled from "LongestPalindrome.kt"
public final class me.olegthelilfix.leetcoding.old.LongestPalindromeKt {
  public static final boolean isPalindrome(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String s
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: checkcast     #17                 // class java/lang/CharSequence
      10: invokeinterface #21,  1           // InterfaceMethod java/lang/CharSequence.length:()I
      15: ifne          22
      18: iconst_1
      19: goto          23
      22: iconst_0
      23: ifeq          28
      26: iconst_0
      27: ireturn
      28: iconst_0
      29: istore_1
      30: aload_0
      31: invokevirtual #24                 // Method java/lang/String.length:()I
      34: iconst_2
      35: idiv
      36: istore_2
      37: iload_1
      38: iload_2
      39: if_icmpgt     75
      42: aload_0
      43: iload_1
      44: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      47: aload_0
      48: aload_0
      49: invokevirtual #24                 // Method java/lang/String.length:()I
      52: iload_1
      53: isub
      54: iconst_1
      55: isub
      56: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      59: if_icmpeq     64
      62: iconst_0
      63: ireturn
      64: iload_1
      65: iload_2
      66: if_icmpeq     75
      69: iinc          1, 1
      72: goto          42
      75: iconst_1
      76: ireturn

  public static final java.lang.String longestPalindrome(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String s
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #24                 // Method java/lang/String.length:()I
      10: iconst_1
      11: if_icmpne     16
      14: aload_0
      15: areturn
      16: aload_0
      17: invokestatic  #35                 // Method isPalindrome:(Ljava/lang/String;)Z
      20: ifeq          25
      23: aload_0
      24: areturn
      25: aload_0
      26: iconst_0
      27: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      30: invokestatic  #39                 // Method java/lang/String.valueOf:(C)Ljava/lang/String;
      33: astore_1
      34: iconst_0
      35: istore_2
      36: aload_0
      37: invokevirtual #24                 // Method java/lang/String.length:()I
      40: iconst_1
      41: isub
      42: istore_3
      43: iload_2
      44: iload_3
      45: if_icmpge     152
      48: aload_0
      49: new           #41                 // class kotlin/ranges/IntRange
      52: dup
      53: iconst_0
      54: bipush        10
      56: invokespecial #45                 // Method kotlin/ranges/IntRange."<init>":(II)V
      59: invokestatic  #51                 // Method kotlin/text/StringsKt.slice:(Ljava/lang/String;Lkotlin/ranges/IntRange;)Ljava/lang/String;
      62: pop
      63: aload_0
      64: iload_2
      65: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      68: invokestatic  #39                 // Method java/lang/String.valueOf:(C)Ljava/lang/String;
      71: astore        4
      73: iload_2
      74: iconst_1
      75: iadd
      76: istore        5
      78: aload_0
      79: invokevirtual #24                 // Method java/lang/String.length:()I
      82: istore        6
      84: iload         5
      86: iload         6
      88: if_icmpge     146
      91: new           #53                 // class java/lang/StringBuilder
      94: dup
      95: invokespecial #56                 // Method java/lang/StringBuilder."<init>":()V
      98: aload         4
     100: invokevirtual #60                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     103: aload_0
     104: iload         5
     106: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
     109: invokevirtual #63                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     112: invokevirtual #67                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     115: astore        4
     117: aload         4
     119: invokestatic  #35                 // Method isPalindrome:(Ljava/lang/String;)Z
     122: ifeq          140
     125: aload         4
     127: invokevirtual #24                 // Method java/lang/String.length:()I
     130: aload_1
     131: invokevirtual #24                 // Method java/lang/String.length:()I
     134: if_icmple     140
     137: aload         4
     139: astore_1
     140: iinc          5, 1
     143: goto          84
     146: iinc          2, 1
     149: goto          43
     152: aload_1
     153: areturn

  public static final void main();
    Code:
       0: invokestatic  #77                 // Method java/lang/System.currentTimeMillis:()J
       3: lstore_0
       4: ldc           #79                 // String <KEY>
       6: invokestatic  #81                 // Method longestPalindrome:(Ljava/lang/String;)Ljava/lang/String;
       9: pop
      10: invokestatic  #77                 // Method java/lang/System.currentTimeMillis:()J
      13: lstore_2
      14: lload_2
      15: lload_0
      16: lsub
      17: lstore        4
      19: getstatic     #85                 // Field java/lang/System.out:Ljava/io/PrintStream;
      22: lload         4
      24: invokevirtual #91                 // Method java/io/PrintStream.print:(J)V
      27: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #97                 // Method main:()V
       3: return
}


package me.olegthelilfix.leetcoding.old

/**
 * Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.
 * The overall run time complexity should be O(log (m+n)).
 */
class FindMedianSortedArrays {
    fun findMedianSortedArrays(nums1: IntArray, nums2: IntArray): Double {
        val result = IntArray(nums1.size + nums2.size)

        var i = 0
        var j = 0

        var index = 0

        val s1 = nums1.size
        val s2 = nums2.size

        while (index < result.size) {
            val n1 = if (s1 > i) nums1[i] else Int.MAX_VALUE
            val n2 = if (s2 > j) nums2[j] else Int.MAX_VALUE

            if(n1 < n2) {
                result[index] = nums1[i]
                i++
            }
            else {
                result[index] = nums2[j]
                j++
            }
            index++
        }

        return if ((result.size) % 2 != 0) {
            result[(result.size) / 2].toDouble()
        }
        else {
            (result[result.size/2] +result[result.size/2 - 1])/2.0
        }
    }
}

fun main() {
    println(
        FindMedianSortedArrays().findMedianSortedArrays(
            listOf(1, 2).toIntArray(),
            listOf(3, 4).toIntArray(),
    ))
}

Compiled from "FindMedianSortedArrays.kt"
public final class me.olegthelilfix.leetcoding.old.FindMedianSortedArrays {
  public me.olegthelilfix.leetcoding.old.FindMedianSortedArrays();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final double findMedianSortedArrays(int[], int[]);
    Code:
       0: aload_1
       1: ldc           #15                 // String nums1
       3: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #23                 // String nums2
       9: invokestatic  #21                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_1
      13: arraylength
      14: aload_2
      15: arraylength
      16: iadd
      17: newarray       int
      19: astore_3
      20: iconst_0
      21: istore        4
      23: iconst_0
      24: istore        5
      26: iconst_0
      27: istore        6
      29: aload_1
      30: arraylength
      31: istore        7
      33: aload_2
      34: arraylength
      35: istore        8
      37: iload         6
      39: aload_3
      40: arraylength
      41: if_icmpge     118
      44: iload         7
      46: iload         4
      48: if_icmple     58
      51: aload_1
      52: iload         4
      54: iaload
      55: goto          60
      58: ldc           #24                 // int 2147483647
      60: istore        9
      62: iload         8
      64: iload         5
      66: if_icmple     76
      69: aload_2
      70: iload         5
      72: iaload
      73: goto          78
      76: ldc           #24                 // int 2147483647
      78: istore        10
      80: iload         9
      82: iload         10
      84: if_icmpge     101
      87: aload_3
      88: iload         6
      90: aload_1
      91: iload         4
      93: iaload
      94: iastore
      95: iinc          4, 1
      98: goto          112
     101: aload_3
     102: iload         6
     104: aload_2
     105: iload         5
     107: iaload
     108: iastore
     109: iinc          5, 1
     112: iinc          6, 1
     115: goto          37
     118: aload_3
     119: arraylength
     120: iconst_2
     121: irem
     122: ifeq          135
     125: aload_3
     126: aload_3
     127: arraylength
     128: iconst_2
     129: idiv
     130: iaload
     131: i2d
     132: goto          155
     135: aload_3
     136: aload_3
     137: arraylength
     138: iconst_2
     139: idiv
     140: iaload
     141: aload_3
     142: aload_3
     143: arraylength
     144: iconst_2
     145: idiv
     146: iconst_1
     147: isub
     148: iaload
     149: iadd
     150: i2d
     151: ldc2_w        #25                 // double 2.0d
     154: ddiv
     155: dreturn
}

Compiled from "FindMedianSortedArrays.kt"
public final class me.olegthelilfix.leetcoding.old.FindMedianSortedArraysKt {
  public static final void main();
    Code:
       0: new           #8                  // class me/olegthelilfix/leetcoding/old/FindMedianSortedArrays
       3: dup
       4: invokespecial #11                 // Method me/olegthelilfix/leetcoding/old/FindMedianSortedArrays."<init>":()V
       7: iconst_2
       8: anewarray     #13                 // class java/lang/Integer
      11: astore_0
      12: aload_0
      13: iconst_0
      14: iconst_1
      15: invokestatic  #17                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      18: aastore
      19: aload_0
      20: iconst_1
      21: iconst_2
      22: invokestatic  #17                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      25: aastore
      26: aload_0
      27: invokestatic  #23                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      30: checkcast     #25                 // class java/util/Collection
      33: invokestatic  #29                 // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      36: iconst_2
      37: anewarray     #13                 // class java/lang/Integer
      40: astore_0
      41: aload_0
      42: iconst_0
      43: iconst_3
      44: invokestatic  #17                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      47: aastore
      48: aload_0
      49: iconst_1
      50: iconst_4
      51: invokestatic  #17                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: aastore
      55: aload_0
      56: invokestatic  #23                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      59: checkcast     #25                 // class java/util/Collection
      62: invokestatic  #29                 // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      65: invokevirtual #33                 // Method me/olegthelilfix/leetcoding/old/FindMedianSortedArrays.findMedianSortedArrays:([I[I)D
      68: dstore_0
      69: getstatic     #39                 // Field java/lang/System.out:Ljava/io/PrintStream;
      72: dload_0
      73: invokevirtual #45                 // Method java/io/PrintStream.println:(D)V
      76: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #48                 // Method main:()V
       3: return
}