import java.util.*

val Pair<Int, Int>.a: Int get() = first
val Pair<Int, Int>.b: Int get() = second

fun <T, R> Sequence<T>.reductions(initial: R, operation: (acc: R, T) -> R) : Sequence<R> = sequence {
    var last = initial
    forEach {
        last = operation(last, it)
        yield(last)
    }
}

class Atom(val data: IntArray) {

    override fun toString() = Arrays.toString(this.data)

    operator fun get(index: Atom) = Atom(data.sliceArray(index.data.toList()))

    operator fun set(index: Atom, value: Atom) {
        (index.data zip value.data).map { pair: Pair<Int, Int> ->
            val (index, value) = pair
            this.data[index] = value
        }
    }

    operator fun plus(b: Int) = Atom(data.map { it + b }.toIntArray())
    operator fun plus(other: Atom) = Atom((data zip other.data).map { it.a + it.b }.toIntArray())

    operator fun minus(b: Int) = Atom(data.map { it - b }.toIntArray())
    operator fun minus(other: Atom) = Atom((data zip other.data).map { it.a - it.b }.toIntArray())

    operator fun times(b: Int) = Atom(data.map { it * b }.toIntArray())
    operator fun times(other: Atom) = Atom((data zip other.data).map { it.a * it.b }.toIntArray())

    operator fun div(b: Int) = Atom(data.map { it / b }.toIntArray())
    operator fun div(other: Atom) = Atom((data zip other.data).map { it.a / it.b }.toIntArray())

    operator fun rem(b: Int) = Atom(data.map { it % b }.toIntArray())
    operator fun rem(other: Atom) = Atom((data zip other.data).map { it.a % it.b }.toIntArray())

    //Todo - implement this like rl.range
    operator fun rangeTo(b: Int): Atom = TODO("Not specified yet") //Atom(data.map { it % b }.toIntArray())
    operator fun rangeTo(other: Atom): Atom = TODO("Not specified yet") //Atom((data zip other.data).map { it.a % it.b }.toIntArray())

    fun cumsum(): Atom {
        var last = 0
        return Atom(data.map {
            last += it
            last
        }.toIntArray())
    }

    fun repeat(count: Int): Atom {
        return Atom(this.data.flatMap {
            value ->
            IntRange(1, count).map { value }
        }.toIntArray())
    }

    fun repeat(counts: IntArray): Atom {
        return Atom(this.data.zip(counts).flatMap {
            pair ->
            val (value, count) = pair
            IntRange(1, count).map { value }
        }.toIntArray())
    }

    fun repeat(counts: Atom): Atom {
        return this.repeat(counts.data)
    }
}

fun main(args: Array<String>) {
    val x = Atom(arrayOf(1, 2, 3, 4).toIntArray())
    val y = Atom(arrayOf(1, 3).toIntArray())
    println("x = $x")
    println("y = $y")
    println("x[y] = ${x[y]}")
    println("x + 1 = ${x + 1}")
    println("x + x = ${x + x}")
    println("x - 1 = ${x - 1}")
    println("x - x = ${x - x}")
    println("x * 1 = ${x * 1}")
    println("x * x = ${x * x}")
    println("x / 2 = ${x / 2}")
    println("x / (x * 2) = ${x / (x * 2)}")
    println("x % 2 = ${x % 2}")
    println("x % (x * 2) = ${x % Atom(arrayOf(2, 2, 2, 2).toIntArray())}")
    x[y] = y + 2; println("x[y] = y + 2; x = ${x}")
    try {
        x[y]..2
    } catch (ex: NotImplementedError) {
        println("TODO - Think of a useful way of using ..")
    }
    try {
        x[y]..y
    } catch (ex: NotImplementedError) {
        println("TODO - Think of a useful way of using ..")
    }
    println(x)
    println(x.cumsum())
    //SequenceOf
    println(sequenceOf(0, 1, 2, 3, 4).reductions(0) { last, it -> last + it }.toList()) //Cumsum
    println(sequenceOf(0, 1, 2, 3, 4).reduce { last, it -> last + it }) //Sum
    println(x.repeat(3))
    println(x.repeat(x))
}

Compiled from "Atom.kt"
public final class AtomKt {
  public static final int getA(kotlin.Pair<java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc           #10                 // String <this>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #22                 // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      10: checkcast     #24                 // class java/lang/Number
      13: invokevirtual #28                 // Method java/lang/Number.intValue:()I
      16: ireturn

  public static final int getB(kotlin.Pair<java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc           #10                 // String <this>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #34                 // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
      10: checkcast     #24                 // class java/lang/Number
      13: invokevirtual #28                 // Method java/lang/Number.intValue:()I
      16: ireturn

  public static final <T, R> kotlin.sequences.Sequence<R> reductions(kotlin.sequences.Sequence<? extends T>, R, kotlin.jvm.functions.Function2<? super R, ? super T, ? extends R>);
    Code:
       0: aload_0
       1: ldc           #10                 // String <this>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #40                 // String operation
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: new           #42                 // class AtomKt$reductions$1
      15: dup
      16: aload_1
      17: aload_0
      18: aload_2
      19: aconst_null
      20: invokespecial #46                 // Method AtomKt$reductions$1."<init>":(Ljava/lang/Object;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
      23: checkcast     #48                 // class kotlin/jvm/functions/Function2
      26: invokestatic  #54                 // Method kotlin/sequences/SequencesKt.sequence:(Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
      29: areturn

  public static final void main(java.lang.String[]);
    Code:
       0: aload_0
       1: ldc           #65                 // String args
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #67                 // class Atom
       9: dup
      10: iconst_4
      11: anewarray     #69                 // class java/lang/Integer
      14: astore_2
      15: aload_2
      16: iconst_0
      17: iconst_1
      18: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      21: aastore
      22: aload_2
      23: iconst_1
      24: iconst_2
      25: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      28: aastore
      29: aload_2
      30: iconst_2
      31: iconst_3
      32: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aastore
      36: aload_2
      37: iconst_3
      38: iconst_4
      39: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      42: aastore
      43: aload_2
      44: invokestatic  #79                 // Method kotlin/collections/ArraysKt.toIntArray:([Ljava/lang/Integer;)[I
      47: invokespecial #82                 // Method Atom."<init>":([I)V
      50: astore_1
      51: new           #67                 // class Atom
      54: dup
      55: iconst_2
      56: anewarray     #69                 // class java/lang/Integer
      59: astore_3
      60: aload_3
      61: iconst_0
      62: iconst_1
      63: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      66: aastore
      67: aload_3
      68: iconst_1
      69: iconst_3
      70: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      73: aastore
      74: aload_3
      75: invokestatic  #79                 // Method kotlin/collections/ArraysKt.toIntArray:([Ljava/lang/Integer;)[I
      78: invokespecial #82                 // Method Atom."<init>":([I)V
      81: astore_2
      82: new           #84                 // class java/lang/StringBuilder
      85: dup
      86: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
      89: ldc           #89                 // String x =
      91: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      94: aload_1
      95: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      98: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     101: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     104: swap
     105: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     108: new           #84                 // class java/lang/StringBuilder
     111: dup
     112: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     115: ldc           #114                // String y =
     117: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     120: aload_2
     121: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     124: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     127: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     130: swap
     131: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     134: new           #84                 // class java/lang/StringBuilder
     137: dup
     138: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     141: ldc           #116                // String x[y] =
     143: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     146: aload_1
     147: aload_2
     148: invokevirtual #120                // Method Atom.get:(LAtom;)LAtom;
     151: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     154: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     157: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     160: swap
     161: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     164: new           #84                 // class java/lang/StringBuilder
     167: dup
     168: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     171: ldc           #122                // String x + 1 =
     173: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     176: aload_1
     177: iconst_1
     178: invokevirtual #126                // Method Atom.plus:(I)LAtom;
     181: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     184: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     187: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     190: swap
     191: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     194: new           #84                 // class java/lang/StringBuilder
     197: dup
     198: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     201: ldc           #128                // String x + x =
     203: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     206: aload_1
     207: aload_1
     208: invokevirtual #130                // Method Atom.plus:(LAtom;)LAtom;
     211: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     214: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     217: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     220: swap
     221: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     224: new           #84                 // class java/lang/StringBuilder
     227: dup
     228: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     231: ldc           #132                // String x - 1 =
     233: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     236: aload_1
     237: iconst_1
     238: invokevirtual #135                // Method Atom.minus:(I)LAtom;
     241: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     244: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     247: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     250: swap
     251: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     254: new           #84                 // class java/lang/StringBuilder
     257: dup
     258: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     261: ldc           #137                // String x - x =
     263: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     266: aload_1
     267: aload_1
     268: invokevirtual #139                // Method Atom.minus:(LAtom;)LAtom;
     271: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     274: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     277: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     280: swap
     281: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     284: new           #84                 // class java/lang/StringBuilder
     287: dup
     288: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     291: ldc           #141                // String x * 1 =
     293: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     296: aload_1
     297: iconst_1
     298: invokevirtual #144                // Method Atom.times:(I)LAtom;
     301: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     304: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     307: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     310: swap
     311: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     314: new           #84                 // class java/lang/StringBuilder
     317: dup
     318: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     321: ldc           #146                // String x * x =
     323: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     326: aload_1
     327: aload_1
     328: invokevirtual #148                // Method Atom.times:(LAtom;)LAtom;
     331: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     334: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     337: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     340: swap
     341: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     344: new           #84                 // class java/lang/StringBuilder
     347: dup
     348: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     351: ldc           #150                // String x / 2 =
     353: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     356: aload_1
     357: iconst_2
     358: invokevirtual #153                // Method Atom.div:(I)LAtom;
     361: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     364: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     367: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     370: swap
     371: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     374: new           #84                 // class java/lang/StringBuilder
     377: dup
     378: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     381: ldc           #155                // String x / (x * 2) =
     383: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     386: aload_1
     387: aload_1
     388: iconst_2
     389: invokevirtual #144                // Method Atom.times:(I)LAtom;
     392: invokevirtual #157                // Method Atom.div:(LAtom;)LAtom;
     395: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     398: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     401: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     404: swap
     405: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     408: new           #84                 // class java/lang/StringBuilder
     411: dup
     412: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     415: ldc           #159                // String x % 2 =
     417: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     420: aload_1
     421: iconst_2
     422: invokevirtual #162                // Method Atom.rem:(I)LAtom;
     425: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     428: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     431: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     434: swap
     435: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     438: new           #84                 // class java/lang/StringBuilder
     441: dup
     442: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     445: ldc           #164                // String x % (x * 2) =
     447: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     450: aload_1
     451: new           #67                 // class Atom
     454: dup
     455: iconst_4
     456: anewarray     #69                 // class java/lang/Integer
     459: astore_3
     460: aload_3
     461: iconst_0
     462: iconst_2
     463: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     466: aastore
     467: aload_3
     468: iconst_1
     469: iconst_2
     470: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     473: aastore
     474: aload_3
     475: iconst_2
     476: iconst_2
     477: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     480: aastore
     481: aload_3
     482: iconst_3
     483: iconst_2
     484: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     487: aastore
     488: aload_3
     489: invokestatic  #79                 // Method kotlin/collections/ArraysKt.toIntArray:([Ljava/lang/Integer;)[I
     492: invokespecial #82                 // Method Atom."<init>":([I)V
     495: invokevirtual #166                // Method Atom.rem:(LAtom;)LAtom;
     498: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     501: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     504: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     507: swap
     508: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     511: aload_1
     512: aload_2
     513: aload_2
     514: iconst_2
     515: invokevirtual #126                // Method Atom.plus:(I)LAtom;
     518: invokevirtual #170                // Method Atom.set:(LAtom;LAtom;)V
     521: new           #84                 // class java/lang/StringBuilder
     524: dup
     525: invokespecial #87                 // Method java/lang/StringBuilder."<init>":()V
     528: ldc           #172                // String x[y] = y + 2; x =
     530: invokevirtual #93                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     533: aload_1
     534: invokevirtual #96                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
     537: invokevirtual #100                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     540: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     543: swap
     544: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     547: nop
     548: aload_1
     549: aload_2
     550: invokevirtual #120                // Method Atom.get:(LAtom;)LAtom;
     553: iconst_2
     554: invokevirtual #175                // Method Atom.rangeTo:(I)LAtom;
     557: pop
     558: goto          572
     561: astore        4
     563: ldc           #177                // String TODO - Think of a useful way of using ..
     565: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     568: swap
     569: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     572: nop
     573: aload_1
     574: aload_2
     575: invokevirtual #120                // Method Atom.get:(LAtom;)LAtom;
     578: aload_2
     579: invokevirtual #179                // Method Atom.rangeTo:(LAtom;)LAtom;
     582: pop
     583: goto          597
     586: astore        4
     588: ldc           #177                // String TODO - Think of a useful way of using ..
     590: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     593: swap
     594: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     597: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     600: aload_1
     601: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     604: aload_1
     605: invokevirtual #183                // Method Atom.cumsum:()LAtom;
     608: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     611: swap
     612: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     615: iconst_5
     616: anewarray     #69                 // class java/lang/Integer
     619: astore_3
     620: aload_3
     621: iconst_0
     622: iconst_0
     623: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     626: aastore
     627: aload_3
     628: iconst_1
     629: iconst_1
     630: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     633: aastore
     634: aload_3
     635: iconst_2
     636: iconst_2
     637: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     640: aastore
     641: aload_3
     642: iconst_3
     643: iconst_3
     644: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     647: aastore
     648: aload_3
     649: iconst_4
     650: iconst_4
     651: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     654: aastore
     655: aload_3
     656: invokestatic  #187                // Method kotlin/sequences/SequencesKt.sequenceOf:([Ljava/lang/Object;)Lkotlin/sequences/Sequence;
     659: iconst_0
     660: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     663: invokedynamic #207,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function2;
     668: invokestatic  #209                // Method reductions:(Lkotlin/sequences/Sequence;Ljava/lang/Object;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
     671: invokestatic  #213                // Method kotlin/sequences/SequencesKt.toList:(Lkotlin/sequences/Sequence;)Ljava/util/List;
     674: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     677: swap
     678: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     681: iconst_5
     682: anewarray     #69                 // class java/lang/Integer
     685: astore_3
     686: aload_3
     687: iconst_0
     688: iconst_0
     689: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     692: aastore
     693: aload_3
     694: iconst_1
     695: iconst_1
     696: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     699: aastore
     700: aload_3
     701: iconst_2
     702: iconst_2
     703: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     706: aastore
     707: aload_3
     708: iconst_3
     709: iconst_3
     710: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     713: aastore
     714: aload_3
     715: iconst_4
     716: iconst_4
     717: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     720: aastore
     721: aload_3
     722: invokestatic  #187                // Method kotlin/sequences/SequencesKt.sequenceOf:([Ljava/lang/Object;)Lkotlin/sequences/Sequence;
     725: astore_3
     726: iconst_0
     727: istore        4
     729: aload_3
     730: invokeinterface #219,  1          // InterfaceMethod kotlin/sequences/Sequence.iterator:()Ljava/util/Iterator;
     735: astore        5
     737: aload         5
     739: invokeinterface #225,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     744: ifne          757
     747: new           #227                // class java/lang/UnsupportedOperationException
     750: dup
     751: ldc           #229                // String Empty sequence can\'t be reduced.
     753: invokespecial #232                // Method java/lang/UnsupportedOperationException."<init>":(Ljava/lang/String;)V
     756: athrow
     757: aload         5
     759: invokeinterface #235,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     764: astore        6
     766: aload         5
     768: invokeinterface #225,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
     773: ifeq          817
     776: aload         6
     778: aload         5
     780: invokeinterface #235,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     785: checkcast     #24                 // class java/lang/Number
     788: invokevirtual #28                 // Method java/lang/Number.intValue:()I
     791: istore        7
     793: checkcast     #24                 // class java/lang/Number
     796: invokevirtual #28                 // Method java/lang/Number.intValue:()I
     799: istore        8
     801: iconst_0
     802: istore        9
     804: iload         8
     806: iload         7
     808: iadd
     809: invokestatic  #73                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     812: astore        6
     814: goto          766
     817: aload         6
     819: checkcast     #24                 // class java/lang/Number
     822: invokevirtual #28                 // Method java/lang/Number.intValue:()I
     825: istore_3
     826: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     829: iload_3
     830: invokevirtual #238                // Method java/io/PrintStream.println:(I)V
     833: aload_1
     834: iconst_3
     835: invokevirtual #241                // Method Atom.repeat:(I)LAtom;
     838: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     841: swap
     842: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     845: aload_1
     846: aload_1
     847: invokevirtual #243                // Method Atom.repeat:(LAtom;)LAtom;
     850: getstatic     #106                // Field java/lang/System.out:Ljava/io/PrintStream;
     853: swap
     854: invokevirtual #112                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     857: return
    Exception table:
       from    to  target type
         547   558   561   Class kotlin/NotImplementedError
         572   583   586   Class kotlin/NotImplementedError

  private static final int main$lambda$0(int, int);
    Code:
       0: iload_0
       1: iload_1
       2: iadd
       3: ireturn
}

Compiled from "Atom.kt"
final class AtomKt$reductions$1 extends kotlin.coroutines.jvm.internal.RestrictedSuspendLambda implements kotlin.jvm.functions.Function2<kotlin.sequences.SequenceScope<? super R>, kotlin.coroutines.Continuation<? super kotlin.Unit>, java.lang.Object> {
  java.lang.Object L$1;

  java.lang.Object L$2;

  java.lang.Object L$3;

  int label;

  private java.lang.Object L$0;

  final R $initial;

  final kotlin.sequences.Sequence<T> $this_reductions;

  final kotlin.jvm.functions.Function2<R, T, R> $operation;

  AtomKt$reductions$1(R, kotlin.sequences.Sequence<? extends T>, kotlin.jvm.functions.Function2<? super R, ? super T, ? extends R>, kotlin.coroutines.Continuation<? super AtomKt$reductions$1>);
    Code:
       0: aload_0
       1: aload_1
       2: putfield      #14                 // Field $initial:Ljava/lang/Object;
       5: aload_0
       6: aload_2
       7: putfield      #18                 // Field $this_reductions:Lkotlin/sequences/Sequence;
      10: aload_0
      11: aload_3
      12: putfield      #22                 // Field $operation:Lkotlin/jvm/functions/Function2;
      15: aload_0
      16: iconst_2
      17: aload         4
      19: invokespecial #25                 // Method kotlin/coroutines/jvm/internal/RestrictedSuspendLambda."<init>":(ILkotlin/coroutines/Continuation;)V
      22: return

  public final java.lang.Object invokeSuspend(java.lang.Object);
    Code:
       0: invokestatic  #55                 // Method kotlin/coroutines/intrinsics/IntrinsicsKt.getCOROUTINE_SUSPENDED:()Ljava/lang/Object;
       3: astore        11
       5: aload_0
       6: getfield      #59                 // Field label:I
       9: tableswitch   { // 0 to 1
                     0: 32
                     1: 172
               default: 226
          }
      32: aload_1
      33: invokestatic  #65                 // Method kotlin/ResultKt.throwOnFailure:(Ljava/lang/Object;)V
      36: aload_0
      37: getfield      #67                 // Field L$0:Ljava/lang/Object;
      40: checkcast     #69                 // class kotlin/sequences/SequenceScope
      43: astore_2
      44: new           #71                 // class kotlin/jvm/internal/Ref$ObjectRef
      47: dup
      48: invokespecial #74                 // Method kotlin/jvm/internal/Ref$ObjectRef."<init>":()V
      51: astore_3
      52: aload_3
      53: aload_0
      54: getfield      #14                 // Field $initial:Ljava/lang/Object;
      57: putfield      #77                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      60: aload_0
      61: getfield      #18                 // Field $this_reductions:Lkotlin/sequences/Sequence;
      64: astore        4
      66: aload_0
      67: getfield      #22                 // Field $operation:Lkotlin/jvm/functions/Function2;
      70: astore        5
      72: iconst_0
      73: istore        6
      75: aload         4
      77: invokeinterface #83,  1           // InterfaceMethod kotlin/sequences/Sequence.iterator:()Ljava/util/Iterator;
      82: astore        7
      84: aload         7
      86: invokeinterface #89,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      91: ifeq          221
      94: aload         7
      96: invokeinterface #92,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     101: astore        8
     103: aload         8
     105: astore        9
     107: iconst_0
     108: istore        10
     110: aload_3
     111: aload         5
     113: aload_3
     114: getfield      #77                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     117: aload         9
     119: invokeinterface #96,  3           // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     124: putfield      #77                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     127: aload_2
     128: aload_3
     129: getfield      #77                 // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
     132: aload_0
     133: aload_0
     134: aload_2
     135: putfield      #67                 // Field L$0:Ljava/lang/Object;
     138: aload_0
     139: aload_3
     140: putfield      #98                 // Field L$1:Ljava/lang/Object;
     143: aload_0
     144: aload         5
     146: putfield      #100                // Field L$2:Ljava/lang/Object;
     149: aload_0
     150: aload         7
     152: putfield      #102                // Field L$3:Ljava/lang/Object;
     155: aload_0
     156: iconst_1
     157: putfield      #59                 // Field label:I
     160: invokevirtual #106                // Method kotlin/sequences/SequenceScope.yield:(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
     163: dup
     164: aload         11
     166: if_acmpne     217
     169: aload         11
     171: areturn
     172: iconst_0
     173: istore        6
     175: iconst_0
     176: istore        10
     178: aload_0
     179: getfield      #102                // Field L$3:Ljava/lang/Object;
     182: checkcast     #85                 // class java/util/Iterator
     185: astore        7
     187: aload_0
     188: getfield      #100                // Field L$2:Ljava/lang/Object;
     191: checkcast     #7                  // class kotlin/jvm/functions/Function2
     194: astore        5
     196: aload_0
     197: getfield      #98                 // Field L$1:Ljava/lang/Object;
     200: checkcast     #71                 // class kotlin/jvm/internal/Ref$ObjectRef
     203: astore_3
     204: aload_0
     205: getfield      #67                 // Field L$0:Ljava/lang/Object;
     208: checkcast     #69                 // class kotlin/sequences/SequenceScope
     211: astore_2
     212: aload_1
     213: invokestatic  #65                 // Method kotlin/ResultKt.throwOnFailure:(Ljava/lang/Object;)V
     216: aload_1
     217: pop
     218: goto          84
     221: nop
     222: getstatic     #112                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     225: areturn
     226: new           #114                // class java/lang/IllegalStateException
     229: dup
     230: ldc           #116                // String call to \'resume\' before \'invoke\' with coroutine
     232: invokespecial #119                // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
     235: athrow

  public final kotlin.coroutines.Continuation<kotlin.Unit> create(java.lang.Object, kotlin.coroutines.Continuation<?>);
    Code:
       0: new           #2                  // class AtomKt$reductions$1
       3: dup
       4: aload_0
       5: getfield      #14                 // Field $initial:Ljava/lang/Object;
       8: aload_0
       9: getfield      #18                 // Field $this_reductions:Lkotlin/sequences/Sequence;
      12: aload_0
      13: getfield      #22                 // Field $operation:Lkotlin/jvm/functions/Function2;
      16: aload_2
      17: invokespecial #134                // Method "<init>":(Ljava/lang/Object;Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)V
      20: astore_3
      21: aload_3
      22: aload_1
      23: putfield      #67                 // Field L$0:Ljava/lang/Object;
      26: aload_3
      27: checkcast     #136                // class kotlin/coroutines/Continuation
      30: areturn

  public final java.lang.Object invoke(kotlin.sequences.SequenceScope<? super R>, kotlin.coroutines.Continuation<? super kotlin.Unit>);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokevirtual #141                // Method create:(Ljava/lang/Object;Lkotlin/coroutines/Continuation;)Lkotlin/coroutines/Continuation;
       6: checkcast     #2                  // class AtomKt$reductions$1
       9: getstatic     #112                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      12: invokevirtual #143                // Method invokeSuspend:(Ljava/lang/Object;)Ljava/lang/Object;
      15: areturn

  public java.lang.Object invoke(java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #69                 // class kotlin/sequences/SequenceScope
       5: aload_2
       6: checkcast     #136                // class kotlin/coroutines/Continuation
       9: invokevirtual #147                // Method invoke:(Lkotlin/sequences/SequenceScope;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
      12: areturn
}

Compiled from "Atom.kt"
public final class Atom {
  private final int[] data;

  public Atom(int[]);
    Code:
       0: aload_1
       1: ldc           #9                  // String data
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #18                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #21                 // Field data:[I
      15: return

  public final int[] getData();
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: areturn

  public java.lang.String toString();
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: invokestatic  #32                 // Method java/util/Arrays.toString:([I)Ljava/lang/String;
       7: areturn

  public final Atom get(Atom);
    Code:
       0: aload_1
       1: ldc           #36                 // String index
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #2                  // class Atom
       9: dup
      10: aload_0
      11: getfield      #21                 // Field data:[I
      14: aload_1
      15: getfield      #21                 // Field data:[I
      18: invokestatic  #42                 // Method kotlin/collections/ArraysKt.toList:([I)Ljava/util/List;
      21: checkcast     #44                 // class java/util/Collection
      24: invokestatic  #48                 // Method kotlin/collections/ArraysKt.sliceArray:([ILjava/util/Collection;)[I
      27: invokespecial #50                 // Method "<init>":([I)V
      30: areturn

  public final void set(Atom, Atom);
    Code:
       0: aload_1
       1: ldc           #36                 // String index
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #54                 // String value
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_1
      13: getfield      #21                 // Field data:[I
      16: aload_2
      17: getfield      #21                 // Field data:[I
      20: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      23: checkcast     #60                 // class java/lang/Iterable
      26: astore_3
      27: iconst_0
      28: istore        4
      30: aload_3
      31: astore        5
      33: new           #62                 // class java/util/ArrayList
      36: dup
      37: aload_3
      38: bipush        10
      40: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      43: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      46: checkcast     #44                 // class java/util/Collection
      49: astore        6
      51: iconst_0
      52: istore        7
      54: aload         5
      56: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      61: astore        8
      63: aload         8
      65: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      70: ifeq          146
      73: aload         8
      75: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      80: astore        9
      82: aload         6
      84: aload         9
      86: checkcast     #87                 // class kotlin/Pair
      89: astore        10
      91: astore        14
      93: iconst_0
      94: istore        11
      96: aload         10
      98: invokevirtual #90                 // Method kotlin/Pair.component1:()Ljava/lang/Object;
     101: checkcast     #92                 // class java/lang/Number
     104: invokevirtual #96                 // Method java/lang/Number.intValue:()I
     107: istore        12
     109: aload         10
     111: invokevirtual #99                 // Method kotlin/Pair.component2:()Ljava/lang/Object;
     114: checkcast     #92                 // class java/lang/Number
     117: invokevirtual #96                 // Method java/lang/Number.intValue:()I
     120: istore        13
     122: aload_0
     123: getfield      #21                 // Field data:[I
     126: iload         12
     128: iload         13
     130: iastore
     131: nop
     132: aload         14
     134: getstatic     #105                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     137: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     142: pop
     143: goto          63
     146: aload         6
     148: checkcast     #111                // class java/util/List
     151: nop
     152: pop
     153: return

  public final Atom plus(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: arraylength
      16: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      19: checkcast     #44                 // class java/util/Collection
      22: astore        5
      24: iconst_0
      25: istore        6
      27: iconst_0
      28: istore        7
      30: aload         4
      32: arraylength
      33: istore        8
      35: iload         7
      37: iload         8
      39: if_icmpge     82
      42: aload         4
      44: iload         7
      46: iaload
      47: istore        9
      49: aload         5
      51: iload         9
      53: istore        10
      55: astore        12
      57: iconst_0
      58: istore        11
      60: iload         10
      62: iload_1
      63: iadd
      64: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: aload         12
      69: swap
      70: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      75: pop
      76: iinc          7, 1
      79: goto          35
      82: aload         5
      84: checkcast     #111                // class java/util/List
      87: nop
      88: checkcast     #44                 // class java/util/Collection
      91: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      94: astore        13
      96: new           #2                  // class Atom
      99: dup
     100: aload         13
     102: invokespecial #50                 // Method "<init>":([I)V
     105: areturn

  public final Atom plus(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: getfield      #21                 // Field data:[I
      14: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      17: checkcast     #60                 // class java/lang/Iterable
      20: astore_2
      21: iconst_0
      22: istore_3
      23: aload_2
      24: astore        4
      26: new           #62                 // class java/util/ArrayList
      29: dup
      30: aload_2
      31: bipush        10
      33: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      36: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      39: checkcast     #44                 // class java/util/Collection
      42: astore        5
      44: iconst_0
      45: istore        6
      47: aload         4
      49: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        7
      56: aload         7
      58: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          115
      66: aload         7
      68: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        8
      75: aload         5
      77: aload         8
      79: checkcast     #87                 // class kotlin/Pair
      82: astore        9
      84: astore        11
      86: iconst_0
      87: istore        10
      89: aload         9
      91: invokestatic  #148                // Method AtomKt.getA:(Lkotlin/Pair;)I
      94: aload         9
      96: invokestatic  #151                // Method AtomKt.getB:(Lkotlin/Pair;)I
      99: iadd
     100: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     103: aload         11
     105: swap
     106: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     111: pop
     112: goto          56
     115: aload         5
     117: checkcast     #111                // class java/util/List
     120: nop
     121: checkcast     #44                 // class java/util/Collection
     124: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     127: astore        12
     129: new           #2                  // class Atom
     132: dup
     133: aload         12
     135: invokespecial #50                 // Method "<init>":([I)V
     138: areturn

  public final Atom minus(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: arraylength
      16: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      19: checkcast     #44                 // class java/util/Collection
      22: astore        5
      24: iconst_0
      25: istore        6
      27: iconst_0
      28: istore        7
      30: aload         4
      32: arraylength
      33: istore        8
      35: iload         7
      37: iload         8
      39: if_icmpge     82
      42: aload         4
      44: iload         7
      46: iaload
      47: istore        9
      49: aload         5
      51: iload         9
      53: istore        10
      55: astore        12
      57: iconst_0
      58: istore        11
      60: iload         10
      62: iload_1
      63: isub
      64: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: aload         12
      69: swap
      70: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      75: pop
      76: iinc          7, 1
      79: goto          35
      82: aload         5
      84: checkcast     #111                // class java/util/List
      87: nop
      88: checkcast     #44                 // class java/util/Collection
      91: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      94: astore        13
      96: new           #2                  // class Atom
      99: dup
     100: aload         13
     102: invokespecial #50                 // Method "<init>":([I)V
     105: areturn

  public final Atom minus(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: getfield      #21                 // Field data:[I
      14: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      17: checkcast     #60                 // class java/lang/Iterable
      20: astore_2
      21: iconst_0
      22: istore_3
      23: aload_2
      24: astore        4
      26: new           #62                 // class java/util/ArrayList
      29: dup
      30: aload_2
      31: bipush        10
      33: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      36: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      39: checkcast     #44                 // class java/util/Collection
      42: astore        5
      44: iconst_0
      45: istore        6
      47: aload         4
      49: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        7
      56: aload         7
      58: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          115
      66: aload         7
      68: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        8
      75: aload         5
      77: aload         8
      79: checkcast     #87                 // class kotlin/Pair
      82: astore        9
      84: astore        11
      86: iconst_0
      87: istore        10
      89: aload         9
      91: invokestatic  #148                // Method AtomKt.getA:(Lkotlin/Pair;)I
      94: aload         9
      96: invokestatic  #151                // Method AtomKt.getB:(Lkotlin/Pair;)I
      99: isub
     100: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     103: aload         11
     105: swap
     106: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     111: pop
     112: goto          56
     115: aload         5
     117: checkcast     #111                // class java/util/List
     120: nop
     121: checkcast     #44                 // class java/util/Collection
     124: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     127: astore        12
     129: new           #2                  // class Atom
     132: dup
     133: aload         12
     135: invokespecial #50                 // Method "<init>":([I)V
     138: areturn

  public final Atom times(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: arraylength
      16: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      19: checkcast     #44                 // class java/util/Collection
      22: astore        5
      24: iconst_0
      25: istore        6
      27: iconst_0
      28: istore        7
      30: aload         4
      32: arraylength
      33: istore        8
      35: iload         7
      37: iload         8
      39: if_icmpge     82
      42: aload         4
      44: iload         7
      46: iaload
      47: istore        9
      49: aload         5
      51: iload         9
      53: istore        10
      55: astore        12
      57: iconst_0
      58: istore        11
      60: iload         10
      62: iload_1
      63: imul
      64: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: aload         12
      69: swap
      70: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      75: pop
      76: iinc          7, 1
      79: goto          35
      82: aload         5
      84: checkcast     #111                // class java/util/List
      87: nop
      88: checkcast     #44                 // class java/util/Collection
      91: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      94: astore        13
      96: new           #2                  // class Atom
      99: dup
     100: aload         13
     102: invokespecial #50                 // Method "<init>":([I)V
     105: areturn

  public final Atom times(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: getfield      #21                 // Field data:[I
      14: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      17: checkcast     #60                 // class java/lang/Iterable
      20: astore_2
      21: iconst_0
      22: istore_3
      23: aload_2
      24: astore        4
      26: new           #62                 // class java/util/ArrayList
      29: dup
      30: aload_2
      31: bipush        10
      33: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      36: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      39: checkcast     #44                 // class java/util/Collection
      42: astore        5
      44: iconst_0
      45: istore        6
      47: aload         4
      49: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        7
      56: aload         7
      58: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          115
      66: aload         7
      68: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        8
      75: aload         5
      77: aload         8
      79: checkcast     #87                 // class kotlin/Pair
      82: astore        9
      84: astore        11
      86: iconst_0
      87: istore        10
      89: aload         9
      91: invokestatic  #148                // Method AtomKt.getA:(Lkotlin/Pair;)I
      94: aload         9
      96: invokestatic  #151                // Method AtomKt.getB:(Lkotlin/Pair;)I
      99: imul
     100: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     103: aload         11
     105: swap
     106: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     111: pop
     112: goto          56
     115: aload         5
     117: checkcast     #111                // class java/util/List
     120: nop
     121: checkcast     #44                 // class java/util/Collection
     124: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     127: astore        12
     129: new           #2                  // class Atom
     132: dup
     133: aload         12
     135: invokespecial #50                 // Method "<init>":([I)V
     138: areturn

  public final Atom div(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: arraylength
      16: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      19: checkcast     #44                 // class java/util/Collection
      22: astore        5
      24: iconst_0
      25: istore        6
      27: iconst_0
      28: istore        7
      30: aload         4
      32: arraylength
      33: istore        8
      35: iload         7
      37: iload         8
      39: if_icmpge     82
      42: aload         4
      44: iload         7
      46: iaload
      47: istore        9
      49: aload         5
      51: iload         9
      53: istore        10
      55: astore        12
      57: iconst_0
      58: istore        11
      60: iload         10
      62: iload_1
      63: idiv
      64: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: aload         12
      69: swap
      70: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      75: pop
      76: iinc          7, 1
      79: goto          35
      82: aload         5
      84: checkcast     #111                // class java/util/List
      87: nop
      88: checkcast     #44                 // class java/util/Collection
      91: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      94: astore        13
      96: new           #2                  // class Atom
      99: dup
     100: aload         13
     102: invokespecial #50                 // Method "<init>":([I)V
     105: areturn

  public final Atom div(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: getfield      #21                 // Field data:[I
      14: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      17: checkcast     #60                 // class java/lang/Iterable
      20: astore_2
      21: iconst_0
      22: istore_3
      23: aload_2
      24: astore        4
      26: new           #62                 // class java/util/ArrayList
      29: dup
      30: aload_2
      31: bipush        10
      33: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      36: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      39: checkcast     #44                 // class java/util/Collection
      42: astore        5
      44: iconst_0
      45: istore        6
      47: aload         4
      49: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        7
      56: aload         7
      58: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          115
      66: aload         7
      68: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        8
      75: aload         5
      77: aload         8
      79: checkcast     #87                 // class kotlin/Pair
      82: astore        9
      84: astore        11
      86: iconst_0
      87: istore        10
      89: aload         9
      91: invokestatic  #148                // Method AtomKt.getA:(Lkotlin/Pair;)I
      94: aload         9
      96: invokestatic  #151                // Method AtomKt.getB:(Lkotlin/Pair;)I
      99: idiv
     100: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     103: aload         11
     105: swap
     106: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     111: pop
     112: goto          56
     115: aload         5
     117: checkcast     #111                // class java/util/List
     120: nop
     121: checkcast     #44                 // class java/util/Collection
     124: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     127: astore        12
     129: new           #2                  // class Atom
     132: dup
     133: aload         12
     135: invokespecial #50                 // Method "<init>":([I)V
     138: areturn

  public final Atom rem(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: aload_2
      15: arraylength
      16: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      19: checkcast     #44                 // class java/util/Collection
      22: astore        5
      24: iconst_0
      25: istore        6
      27: iconst_0
      28: istore        7
      30: aload         4
      32: arraylength
      33: istore        8
      35: iload         7
      37: iload         8
      39: if_icmpge     82
      42: aload         4
      44: iload         7
      46: iaload
      47: istore        9
      49: aload         5
      51: iload         9
      53: istore        10
      55: astore        12
      57: iconst_0
      58: istore        11
      60: iload         10
      62: iload_1
      63: irem
      64: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: aload         12
      69: swap
      70: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      75: pop
      76: iinc          7, 1
      79: goto          35
      82: aload         5
      84: checkcast     #111                // class java/util/List
      87: nop
      88: checkcast     #44                 // class java/util/Collection
      91: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      94: astore        13
      96: new           #2                  // class Atom
      99: dup
     100: aload         13
     102: invokespecial #50                 // Method "<init>":([I)V
     105: areturn

  public final Atom rem(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: getfield      #21                 // Field data:[I
      14: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      17: checkcast     #60                 // class java/lang/Iterable
      20: astore_2
      21: iconst_0
      22: istore_3
      23: aload_2
      24: astore        4
      26: new           #62                 // class java/util/ArrayList
      29: dup
      30: aload_2
      31: bipush        10
      33: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      36: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      39: checkcast     #44                 // class java/util/Collection
      42: astore        5
      44: iconst_0
      45: istore        6
      47: aload         4
      49: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        7
      56: aload         7
      58: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          115
      66: aload         7
      68: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        8
      75: aload         5
      77: aload         8
      79: checkcast     #87                 // class kotlin/Pair
      82: astore        9
      84: astore        11
      86: iconst_0
      87: istore        10
      89: aload         9
      91: invokestatic  #148                // Method AtomKt.getA:(Lkotlin/Pair;)I
      94: aload         9
      96: invokestatic  #151                // Method AtomKt.getB:(Lkotlin/Pair;)I
      99: irem
     100: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     103: aload         11
     105: swap
     106: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     111: pop
     112: goto          56
     115: aload         5
     117: checkcast     #111                // class java/util/List
     120: nop
     121: checkcast     #44                 // class java/util/Collection
     124: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     127: astore        12
     129: new           #2                  // class Atom
     132: dup
     133: aload         12
     135: invokespecial #50                 // Method "<init>":([I)V
     138: areturn

  public final Atom rangeTo(int);
    Code:
       0: ldc           #167                // String Not specified yet
       2: astore_2
       3: new           #169                // class kotlin/NotImplementedError
       6: dup
       7: new           #171                // class java/lang/StringBuilder
      10: dup
      11: invokespecial #172                // Method java/lang/StringBuilder."<init>":()V
      14: ldc           #174                // String An operation is not implemented:
      16: invokevirtual #178                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      19: aload_2
      20: invokevirtual #178                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      23: invokevirtual #180                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      26: invokespecial #183                // Method kotlin/NotImplementedError."<init>":(Ljava/lang/String;)V
      29: athrow

  public final Atom rangeTo(Atom);
    Code:
       0: aload_1
       1: ldc           #142                // String other
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: ldc           #167                // String Not specified yet
       8: astore_2
       9: new           #169                // class kotlin/NotImplementedError
      12: dup
      13: new           #171                // class java/lang/StringBuilder
      16: dup
      17: invokespecial #172                // Method java/lang/StringBuilder."<init>":()V
      20: ldc           #174                // String An operation is not implemented:
      22: invokevirtual #178                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      25: aload_2
      26: invokevirtual #178                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      29: invokevirtual #180                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      32: invokespecial #183                // Method kotlin/NotImplementedError."<init>":(Ljava/lang/String;)V
      35: athrow

  public final Atom cumsum();
    Code:
       0: iconst_0
       1: istore_1
       2: aload_0
       3: getfield      #21                 // Field data:[I
       6: astore_2
       7: iconst_0
       8: istore_3
       9: aload_2
      10: astore        4
      12: new           #62                 // class java/util/ArrayList
      15: dup
      16: aload_2
      17: arraylength
      18: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      21: checkcast     #44                 // class java/util/Collection
      24: astore        5
      26: iconst_0
      27: istore        6
      29: iconst_0
      30: istore        7
      32: aload         4
      34: arraylength
      35: istore        8
      37: iload         7
      39: iload         8
      41: if_icmpge     86
      44: aload         4
      46: iload         7
      48: iaload
      49: istore        9
      51: aload         5
      53: iload         9
      55: istore        10
      57: astore        12
      59: iconst_0
      60: istore        11
      62: iload_1
      63: iload         10
      65: iadd
      66: istore_1
      67: iload_1
      68: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      71: aload         12
      73: swap
      74: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      79: pop
      80: iinc          7, 1
      83: goto          37
      86: aload         5
      88: checkcast     #111                // class java/util/List
      91: nop
      92: checkcast     #44                 // class java/util/Collection
      95: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
      98: astore        13
     100: new           #2                  // class Atom
     103: dup
     104: aload         13
     106: invokespecial #50                 // Method "<init>":([I)V
     109: areturn

  public final Atom repeat(int);
    Code:
       0: aload_0
       1: getfield      #21                 // Field data:[I
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #62                 // class java/util/ArrayList
      13: dup
      14: invokespecial #189                // Method java/util/ArrayList."<init>":()V
      17: checkcast     #44                 // class java/util/Collection
      20: astore        5
      22: iconst_0
      23: istore        6
      25: iconst_0
      26: istore        7
      28: aload         4
      30: arraylength
      31: istore        8
      33: iload         7
      35: iload         8
      37: if_icmpge     180
      40: aload         4
      42: iload         7
      44: iaload
      45: istore        9
      47: iload         9
      49: istore        10
      51: iconst_0
      52: istore        11
      54: new           #191                // class kotlin/ranges/IntRange
      57: dup
      58: iconst_1
      59: iload_1
      60: invokespecial #194                // Method kotlin/ranges/IntRange."<init>":(II)V
      63: checkcast     #60                 // class java/lang/Iterable
      66: astore        12
      68: iconst_0
      69: istore        13
      71: aload         12
      73: astore        14
      75: new           #62                 // class java/util/ArrayList
      78: dup
      79: aload         12
      81: bipush        10
      83: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      86: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
      89: checkcast     #44                 // class java/util/Collection
      92: astore        15
      94: iconst_0
      95: istore        16
      97: aload         14
      99: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     104: astore        17
     106: aload         17
     108: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     113: ifeq          154
     116: aload         17
     118: checkcast     #196                // class kotlin/collections/IntIterator
     121: invokevirtual #199                // Method kotlin/collections/IntIterator.nextInt:()I
     124: istore        18
     126: aload         15
     128: iload         18
     130: istore        19
     132: astore        20
     134: iconst_0
     135: istore        21
     137: iload         10
     139: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     142: aload         20
     144: swap
     145: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     150: pop
     151: goto          106
     154: aload         15
     156: checkcast     #111                // class java/util/List
     159: nop
     160: checkcast     #60                 // class java/lang/Iterable
     163: nop
     164: astore        10
     166: aload         5
     168: aload         10
     170: invokestatic  #203                // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     173: pop
     174: iinc          7, 1
     177: goto          33
     180: aload         5
     182: checkcast     #111                // class java/util/List
     185: nop
     186: checkcast     #44                 // class java/util/Collection
     189: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     192: astore        22
     194: new           #2                  // class Atom
     197: dup
     198: aload         22
     200: invokespecial #50                 // Method "<init>":([I)V
     203: areturn

  public final Atom repeat(int[]);
    Code:
       0: aload_1
       1: ldc           #215                // String counts
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #21                 // Field data:[I
      10: aload_1
      11: invokestatic  #58                 // Method kotlin/collections/ArraysKt.zip:([I[I)Ljava/util/List;
      14: checkcast     #60                 // class java/lang/Iterable
      17: astore_2
      18: iconst_0
      19: istore_3
      20: aload_2
      21: astore        4
      23: new           #62                 // class java/util/ArrayList
      26: dup
      27: invokespecial #189                // Method java/util/ArrayList."<init>":()V
      30: checkcast     #44                 // class java/util/Collection
      33: astore        5
      35: iconst_0
      36: istore        6
      38: aload         4
      40: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        7
      47: aload         7
      49: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          226
      57: aload         7
      59: invokeinterface #85,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        8
      66: aload         8
      68: checkcast     #87                 // class kotlin/Pair
      71: astore        9
      73: iconst_0
      74: istore        10
      76: aload         9
      78: invokevirtual #90                 // Method kotlin/Pair.component1:()Ljava/lang/Object;
      81: checkcast     #92                 // class java/lang/Number
      84: invokevirtual #96                 // Method java/lang/Number.intValue:()I
      87: istore        11
      89: aload         9
      91: invokevirtual #99                 // Method kotlin/Pair.component2:()Ljava/lang/Object;
      94: checkcast     #92                 // class java/lang/Number
      97: invokevirtual #96                 // Method java/lang/Number.intValue:()I
     100: istore        12
     102: new           #191                // class kotlin/ranges/IntRange
     105: dup
     106: iconst_1
     107: iload         12
     109: invokespecial #194                // Method kotlin/ranges/IntRange."<init>":(II)V
     112: checkcast     #60                 // class java/lang/Iterable
     115: astore        13
     117: iconst_0
     118: istore        14
     120: aload         13
     122: astore        15
     124: new           #62                 // class java/util/ArrayList
     127: dup
     128: aload         13
     130: bipush        10
     132: invokestatic  #68                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     135: invokespecial #71                 // Method java/util/ArrayList."<init>":(I)V
     138: checkcast     #44                 // class java/util/Collection
     141: astore        16
     143: iconst_0
     144: istore        17
     146: aload         15
     148: invokeinterface #75,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     153: astore        18
     155: aload         18
     157: invokeinterface #81,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     162: ifeq          203
     165: aload         18
     167: checkcast     #196                // class kotlin/collections/IntIterator
     170: invokevirtual #199                // Method kotlin/collections/IntIterator.nextInt:()I
     173: istore        19
     175: aload         16
     177: iload         19
     179: istore        20
     181: astore        21
     183: iconst_0
     184: istore        22
     186: iload         11
     188: invokestatic  #132                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     191: aload         21
     193: swap
     194: invokeinterface #109,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     199: pop
     200: goto          155
     203: aload         16
     205: checkcast     #111                // class java/util/List
     208: nop
     209: checkcast     #60                 // class java/lang/Iterable
     212: nop
     213: astore        9
     215: aload         5
     217: aload         9
     219: invokestatic  #203                // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     222: pop
     223: goto          47
     226: aload         5
     228: checkcast     #111                // class java/util/List
     231: nop
     232: checkcast     #44                 // class java/util/Collection
     235: invokestatic  #136                // Method kotlin/collections/CollectionsKt.toIntArray:(Ljava/util/Collection;)[I
     238: astore        23
     240: new           #2                  // class Atom
     243: dup
     244: aload         23
     246: invokespecial #50                 // Method "<init>":([I)V
     249: areturn

  public final Atom repeat(Atom);
    Code:
       0: aload_1
       1: ldc           #215                // String counts
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: getfield      #21                 // Field data:[I
      11: invokevirtual #219                // Method repeat:([I)LAtom;
      14: areturn
}