package com.heerkirov.hedge.server.library.compiler.grammar.definintion

import kotlin.math.max

//语法分析表的定义，作用是和syntax-table.txt中的定义对应。

class SyntaxTable(internal val actionTable: Array<Array<Action?>>,
                  internal val gotoTable: Array<Array<Int?>>,
                  private val actionMap: Map<String, Int>,
                  private val gotoMap: Map<String, Int>) {
    private val reflectActionMap by lazy { actionMap.asSequence().map { (k, v) -> v to k }.toMap() }

    val statusCount: Int get() = actionTable.size

    val actionNotations: Set<String> get() = actionMap.keys

    val gotoNotations: Set<String> get() = gotoMap.keys

    fun getAction(status: Int, terminalNotation: String): Action? {
        val i = actionMap[terminalNotation] ?: throw RuntimeException("Action $terminalNotation is not exist.")
        return actionTable[status][i]
    }

    fun getGoto(status: Int, nonTerminalNotation: String): Int? {
        val i = gotoMap[nonTerminalNotation] ?: throw RuntimeException("Goto $nonTerminalNotation is not exist.")
        return gotoTable[status][i]
    }

    fun getExpected(status: Int): List<String> {
        return actionTable[status].asSequence()
            .mapIndexed { i, action -> i to action }
            .filter { (_, action) -> action != null }
            .map { (i, _) -> reflectActionMap[i]!! }
            .toList()
    }
}

/**
 * ACTION的指令。
 */
sealed class Action

data class Shift(val status: Int) : Action() {
    override fun toString() = "Shift($status)"
}

data class Reduce(val syntaxExpressionIndex: Int) : Action() {
    override fun toString() = "Reduce($syntaxExpressionIndex)"
}

object Accept : Action() {
    override fun toString() = "Accept"
}

/**
 * 读取并生成语法分析表的定义。
 */
fun readSyntaxTable(text: String): SyntaxTable {
    val lines = text.split("\n")
        .filter { it.isNotBlank() }
        .apply { if(isEmpty()) throw RuntimeException("Text of syntax table is empty.") }
        .map { it.split(Regex("\\s+")).filter { i -> i.isNotBlank() } }

    val head = lines.first().apply { if(isEmpty()) throw RuntimeException("Table head is empty.") }
    val terminalNum = head.first().toInt()
    val actionMap = head.subList(1, terminalNum + 1).asSequence().mapIndexed { i, s -> s to i }.toMap()
    val gotoMap = head.subList(terminalNum + 1, head.size).asSequence().mapIndexed { i, s -> s to i }.toMap()

    val (action, goto) = lines.subList(1, lines.size).asSequence().map { row ->
        val action = row.subList(1, terminalNum + 1).map {
            when {
                it == "_" -> null
                it == "acc" -> Accept
                it.startsWith("s") -> Shift(it.substring(1).toInt())
                it.startsWith("r") -> Reduce(it.substring(1).toInt())
                else -> throw RuntimeException("Unknown action '$it'.")
            }
        }.toTypedArray()
        val goto = row.subList(terminalNum + 1, row.size).map { if(it == "_") null else it.toInt() }.toTypedArray()
        Pair(action, goto)
    }.unzip()

    val actionTable = action.toTypedArray()
    val gotoTable = goto.toTypedArray()

    return SyntaxTable(actionTable, gotoTable, actionMap, gotoMap)
}

/**
 * 将语法分析表打印为文本定义。
 */
fun printSyntaxTable(table: SyntaxTable): String {
    //将action和goto表to string
    val actionTable = table.actionTable.map { row ->
        row.map { action ->
            if(action == null) "_" else when (action) {
                is Shift -> "s${action.status}"
                is Reduce -> "r${action.syntaxExpressionIndex}"
                is Accept -> "acc"
            }
        }
    }
    val gotoTable = table.gotoTable.map { row -> row.map { goto -> goto?.toString() ?: "_" } }
    //取得首列、action列、goto列的宽度
    val statusColWidth = max(table.statusCount.toString().length, table.actionNotations.size.toString().length)
    val actionColWidth = max(table.actionNotations.maxOf { it.length }, actionTable.flatten().maxOf { it.length })
    val gotoColWidth = max(table.gotoNotations.maxOf { it.length }, gotoTable.flatten().maxOf { it.length })

    val head = String.format("%-${statusColWidth}s %s %s",
        table.actionNotations.size,
        table.actionNotations.joinToString(" ") { String.format("%-${actionColWidth}s", it) },
        table.gotoNotations.joinToString(" ") { String.format("%-${gotoColWidth}s", it) }
    )
    val body = actionTable.zip(gotoTable).mapIndexed { i, (actionRow, gotoRow) ->
        String.format("%-${statusColWidth}s %s %s", i,
            actionRow.joinToString(" ") { String.format("%-${actionColWidth}s", it) },
            gotoRow.joinToString(" ") { String.format("%-${gotoColWidth}s", it) }
        )
    }.joinToString("\n")

    return "$head\n$body"
}

Compiled from "SyntaxTable.kt"
public final class com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTableKt {
  public static final com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable readSyntaxTable(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String text
       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: iconst_1
      11: anewarray     #19                 // class java/lang/String
      14: astore_2
      15: aload_2
      16: iconst_0
      17: ldc           #21                 // String \n
      19: aastore
      20: aload_2
      21: iconst_0
      22: iconst_0
      23: bipush        6
      25: aconst_null
      26: invokestatic  #27                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      29: checkcast     #29                 // class java/lang/Iterable
      32: astore_2
      33: nop
      34: iconst_0
      35: istore_3
      36: aload_2
      37: astore        4
      39: new           #31                 // class java/util/ArrayList
      42: dup
      43: invokespecial #35                 // Method java/util/ArrayList."<init>":()V
      46: checkcast     #37                 // class java/util/Collection
      49: astore        5
      51: iconst_0
      52: istore        6
      54: aload         4
      56: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      61: astore        7
      63: aload         7
      65: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      70: ifeq          125
      73: aload         7
      75: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      80: astore        8
      82: aload         8
      84: checkcast     #19                 // class java/lang/String
      87: astore        9
      89: iconst_0
      90: istore        10
      92: aload         9
      94: checkcast     #17                 // class java/lang/CharSequence
      97: invokestatic  #55                 // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     100: ifne          107
     103: iconst_1
     104: goto          108
     107: iconst_0
     108: nop
     109: ifeq          63
     112: aload         5
     114: aload         8
     116: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     121: pop
     122: goto          63
     125: aload         5
     127: checkcast     #61                 // class java/util/List
     130: nop
     131: astore_2
     132: aload_2
     133: astore_3
     134: iconst_0
     135: istore        4
     137: aload_3
     138: invokeinterface #64,  1           // InterfaceMethod java/util/List.isEmpty:()Z
     143: ifeq          156
     146: new           #66                 // class java/lang/RuntimeException
     149: dup
     150: ldc           #68                 // String Text of syntax table is empty.
     152: invokespecial #71                 // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
     155: athrow
     156: aload_2
     157: checkcast     #29                 // class java/lang/Iterable
     160: astore_2
     161: nop
     162: iconst_0
     163: istore_3
     164: aload_2
     165: astore        4
     167: new           #31                 // class java/util/ArrayList
     170: dup
     171: aload_2
     172: bipush        10
     174: invokestatic  #77                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     177: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     180: checkcast     #37                 // class java/util/Collection
     183: astore        5
     185: iconst_0
     186: istore        6
     188: aload         4
     190: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     195: astore        7
     197: aload         7
     199: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     204: ifeq          378
     207: aload         7
     209: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     214: astore        8
     216: aload         5
     218: aload         8
     220: checkcast     #19                 // class java/lang/String
     223: astore        9
     225: astore        20
     227: iconst_0
     228: istore        10
     230: aload         9
     232: checkcast     #17                 // class java/lang/CharSequence
     235: astore        11
     237: new           #82                 // class kotlin/text/Regex
     240: dup
     241: ldc           #84                 // String \\s+
     243: invokespecial #85                 // Method kotlin/text/Regex."<init>":(Ljava/lang/String;)V
     246: astore        12
     248: iconst_0
     249: istore        13
     251: aload         12
     253: aload         11
     255: iload         13
     257: invokevirtual #89                 // Method kotlin/text/Regex.split:(Ljava/lang/CharSequence;I)Ljava/util/List;
     260: checkcast     #29                 // class java/lang/Iterable
     263: astore        11
     265: nop
     266: iconst_0
     267: istore        12
     269: aload         11
     271: astore        13
     273: new           #31                 // class java/util/ArrayList
     276: dup
     277: invokespecial #35                 // Method java/util/ArrayList."<init>":()V
     280: checkcast     #37                 // class java/util/Collection
     283: astore        14
     285: iconst_0
     286: istore        15
     288: aload         13
     290: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     295: astore        16
     297: aload         16
     299: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     304: ifeq          359
     307: aload         16
     309: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     314: astore        17
     316: aload         17
     318: checkcast     #19                 // class java/lang/String
     321: astore        18
     323: iconst_0
     324: istore        19
     326: aload         18
     328: checkcast     #17                 // class java/lang/CharSequence
     331: invokestatic  #55                 // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     334: ifne          341
     337: iconst_1
     338: goto          342
     341: iconst_0
     342: nop
     343: ifeq          297
     346: aload         14
     348: aload         17
     350: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     355: pop
     356: goto          297
     359: aload         14
     361: checkcast     #61                 // class java/util/List
     364: nop
     365: nop
     366: aload         20
     368: swap
     369: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     374: pop
     375: goto          197
     378: aload         5
     380: checkcast     #61                 // class java/util/List
     383: nop
     384: astore_1
     385: aload_1
     386: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     389: astore_3
     390: aload_3
     391: checkcast     #61                 // class java/util/List
     394: astore        4
     396: iconst_0
     397: istore        5
     399: aload         4
     401: invokeinterface #64,  1           // InterfaceMethod java/util/List.isEmpty:()Z
     406: ifeq          419
     409: new           #66                 // class java/lang/RuntimeException
     412: dup
     413: ldc           #95                 // String Table head is empty.
     415: invokespecial #71                 // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
     418: athrow
     419: aload_3
     420: checkcast     #61                 // class java/util/List
     423: astore_2
     424: aload_2
     425: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     428: checkcast     #19                 // class java/lang/String
     431: invokestatic  #101                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     434: istore_3
     435: aload_2
     436: iconst_1
     437: iload_3
     438: iconst_1
     439: iadd
     440: invokeinterface #105,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     445: checkcast     #29                 // class java/lang/Iterable
     448: invokestatic  #109                // Method kotlin/collections/CollectionsKt.asSequence:(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence;
     451: invokedynamic #129,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function2;
     456: invokestatic  #135                // Method kotlin/sequences/SequencesKt.mapIndexed:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
     459: invokestatic  #141                // Method kotlin/collections/MapsKt.toMap:(Lkotlin/sequences/Sequence;)Ljava/util/Map;
     462: astore        4
     464: aload_2
     465: iload_3
     466: iconst_1
     467: iadd
     468: aload_2
     469: invokeinterface #145,  1          // InterfaceMethod java/util/List.size:()I
     474: invokeinterface #105,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     479: checkcast     #29                 // class java/lang/Iterable
     482: invokestatic  #109                // Method kotlin/collections/CollectionsKt.asSequence:(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence;
     485: invokedynamic #150,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function2;
     490: invokestatic  #135                // Method kotlin/sequences/SequencesKt.mapIndexed:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
     493: invokestatic  #141                // Method kotlin/collections/MapsKt.toMap:(Lkotlin/sequences/Sequence;)Ljava/util/Map;
     496: astore        5
     498: aload_1
     499: iconst_1
     500: aload_1
     501: invokeinterface #145,  1          // InterfaceMethod java/util/List.size:()I
     506: invokeinterface #105,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     511: checkcast     #29                 // class java/lang/Iterable
     514: invokestatic  #109                // Method kotlin/collections/CollectionsKt.asSequence:(Ljava/lang/Iterable;)Lkotlin/sequences/Sequence;
     517: iload_3
     518: invokedynamic #162,  0            // InvokeDynamic #2:invoke:(I)Lkotlin/jvm/functions/Function1;
     523: invokestatic  #166                // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
     526: invokestatic  #170                // Method kotlin/sequences/SequencesKt.unzip:(Lkotlin/sequences/Sequence;)Lkotlin/Pair;
     529: astore        6
     531: aload         6
     533: invokevirtual #175                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     536: checkcast     #61                 // class java/util/List
     539: astore        7
     541: aload         6
     543: invokevirtual #178                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     546: checkcast     #61                 // class java/util/List
     549: astore        8
     551: aload         7
     553: checkcast     #37                 // class java/util/Collection
     556: astore        10
     558: iconst_0
     559: istore        11
     561: aload         10
     563: astore        12
     565: aload         12
     567: iconst_0
     568: anewarray     #180                // class "[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;"
     571: invokeinterface #184,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     576: checkcast     #186                // class "[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;"
     579: astore        9
     581: aload         8
     583: checkcast     #37                 // class java/util/Collection
     586: astore        11
     588: iconst_0
     589: istore        12
     591: aload         11
     593: astore        13
     595: aload         13
     597: iconst_0
     598: anewarray     #188                // class "[Ljava/lang/Integer;"
     601: invokeinterface #184,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     606: checkcast     #190                // class "[[Ljava/lang/Integer;"
     609: astore        10
     611: new           #192                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable
     614: dup
     615: aload         9
     617: aload         10
     619: aload         4
     621: aload         5
     623: invokespecial #195                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable."<init>":([[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;[[Ljava/lang/Integer;Ljava/util/Map;Ljava/util/Map;)V
     626: areturn

  public static final java.lang.String printSyntaxTable(com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable);
    Code:
       0: aload_0
       1: ldc           #238                // String table
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #242                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getActionTable$main:()[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
      10: checkcast     #244                // class "[Ljava/lang/Object;"
      13: astore_2
      14: iconst_0
      15: istore_3
      16: aload_2
      17: astore        4
      19: new           #31                 // class java/util/ArrayList
      22: dup
      23: aload_2
      24: arraylength
      25: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      28: checkcast     #37                 // class java/util/Collection
      31: astore        5
      33: iconst_0
      34: istore        6
      36: iconst_0
      37: istore        7
      39: aload         4
      41: arraylength
      42: istore        8
      44: iload         7
      46: iload         8
      48: if_icmpge     282
      51: aload         4
      53: iload         7
      55: aaload
      56: astore        9
      58: aload         5
      60: aload         9
      62: checkcast     #180                // class "[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;"
      65: astore        10
      67: astore        24
      69: iconst_0
      70: istore        11
      72: aload         10
      74: astore        12
      76: iconst_0
      77: istore        13
      79: aload         12
      81: astore        14
      83: new           #31                 // class java/util/ArrayList
      86: dup
      87: aload         12
      89: arraylength
      90: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      93: checkcast     #37                 // class java/util/Collection
      96: astore        15
      98: iconst_0
      99: istore        16
     101: iconst_0
     102: istore        17
     104: aload         14
     106: arraylength
     107: istore        18
     109: iload         17
     111: iload         18
     113: if_icmpge     260
     116: aload         14
     118: iload         17
     120: aaload
     121: astore        19
     123: aload         15
     125: aload         19
     127: astore        20
     129: astore        21
     131: iconst_0
     132: istore        22
     134: aload         20
     136: dup
     137: ifnonnull     146
     140: pop
     141: ldc           #246                // String _
     143: goto          244
     146: astore        23
     148: aload         23
     150: instanceof    #248                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Shift
     153: ifeq          185
     156: new           #250                // class java/lang/StringBuilder
     159: dup
     160: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
     163: bipush        115
     165: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     168: aload         20
     170: checkcast     #248                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Shift
     173: invokevirtual #258                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/Shift.getStatus:()I
     176: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     179: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     182: goto          244
     185: aload         23
     187: instanceof    #267                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Reduce
     190: ifeq          222
     193: new           #250                // class java/lang/StringBuilder
     196: dup
     197: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
     200: bipush        114
     202: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     205: aload         20
     207: checkcast     #267                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Reduce
     210: invokevirtual #270                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/Reduce.getSyntaxExpressionIndex:()I
     213: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     216: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     219: goto          244
     222: aload         23
     224: instanceof    #272                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Accept
     227: ifeq          236
     230: ldc_w         #274                // String acc
     233: goto          244
     236: new           #276                // class kotlin/NoWhenBranchMatchedException
     239: dup
     240: invokespecial #277                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     243: athrow
     244: nop
     245: aload         21
     247: swap
     248: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     253: pop
     254: iinc          17, 1
     257: goto          109
     260: aload         15
     262: checkcast     #61                 // class java/util/List
     265: nop
     266: nop
     267: aload         24
     269: swap
     270: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     275: pop
     276: iinc          7, 1
     279: goto          44
     282: aload         5
     284: checkcast     #61                 // class java/util/List
     287: nop
     288: astore_1
     289: aload_0
     290: invokevirtual #281                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getGotoTable$main:()[[Ljava/lang/Integer;
     293: checkcast     #244                // class "[Ljava/lang/Object;"
     296: astore_3
     297: iconst_0
     298: istore        4
     300: aload_3
     301: astore        5
     303: new           #31                 // class java/util/ArrayList
     306: dup
     307: aload_3
     308: arraylength
     309: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     312: checkcast     #37                 // class java/util/Collection
     315: astore        6
     317: iconst_0
     318: istore        7
     320: iconst_0
     321: istore        8
     323: aload         5
     325: arraylength
     326: istore        9
     328: iload         8
     330: iload         9
     332: if_icmpge     471
     335: aload         5
     337: iload         8
     339: aaload
     340: astore        10
     342: aload         6
     344: aload         10
     346: checkcast     #188                // class "[Ljava/lang/Integer;"
     349: astore        11
     351: astore        24
     353: iconst_0
     354: istore        12
     356: aload         11
     358: astore        13
     360: iconst_0
     361: istore        14
     363: aload         13
     365: astore        15
     367: new           #31                 // class java/util/ArrayList
     370: dup
     371: aload         13
     373: arraylength
     374: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     377: checkcast     #37                 // class java/util/Collection
     380: astore        16
     382: iconst_0
     383: istore        17
     385: iconst_0
     386: istore        18
     388: aload         15
     390: arraylength
     391: istore        19
     393: iload         18
     395: iload         19
     397: if_icmpge     449
     400: aload         15
     402: iload         18
     404: aaload
     405: astore        20
     407: aload         16
     409: aload         20
     411: astore        21
     413: astore        22
     415: iconst_0
     416: istore        23
     418: aload         21
     420: dup
     421: ifnull        431
     424: invokevirtual #282                // Method java/lang/Integer.toString:()Ljava/lang/String;
     427: dup
     428: ifnonnull     434
     431: pop
     432: ldc           #246                // String _
     434: aload         22
     436: swap
     437: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     442: pop
     443: iinc          18, 1
     446: goto          393
     449: aload         16
     451: checkcast     #61                 // class java/util/List
     454: nop
     455: nop
     456: aload         24
     458: swap
     459: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     464: pop
     465: iinc          8, 1
     468: goto          328
     471: aload         6
     473: checkcast     #61                 // class java/util/List
     476: nop
     477: astore_2
     478: aload_0
     479: invokevirtual #285                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getStatusCount:()I
     482: invokestatic  #289                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
     485: invokevirtual #292                // Method java/lang/String.length:()I
     488: aload_0
     489: invokevirtual #296                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getActionNotations:()Ljava/util/Set;
     492: invokeinterface #299,  1          // InterfaceMethod java/util/Set.size:()I
     497: invokestatic  #289                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
     500: invokevirtual #292                // Method java/lang/String.length:()I
     503: invokestatic  #305                // Method java/lang/Math.max:(II)I
     506: istore_3
     507: aload_0
     508: invokevirtual #296                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getActionNotations:()Ljava/util/Set;
     511: checkcast     #29                 // class java/lang/Iterable
     514: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     519: astore        6
     521: aload         6
     523: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     528: ifne          539
     531: new           #307                // class java/util/NoSuchElementException
     534: dup
     535: invokespecial #308                // Method java/util/NoSuchElementException."<init>":()V
     538: athrow
     539: aload         6
     541: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     546: checkcast     #19                 // class java/lang/String
     549: astore        7
     551: iconst_0
     552: istore        8
     554: aload         7
     556: invokevirtual #292                // Method java/lang/String.length:()I
     559: istore        7
     561: aload         6
     563: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     568: ifeq          607
     571: aload         6
     573: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     578: checkcast     #19                 // class java/lang/String
     581: astore        8
     583: iconst_0
     584: istore        9
     586: aload         8
     588: invokevirtual #292                // Method java/lang/String.length:()I
     591: istore        8
     593: iload         7
     595: iload         8
     597: if_icmpge     561
     600: iload         8
     602: istore        7
     604: goto          561
     607: iload         7
     609: istore        5
     611: aload_1
     612: checkcast     #29                 // class java/lang/Iterable
     615: invokestatic  #312                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     618: checkcast     #29                 // class java/lang/Iterable
     621: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     626: astore        7
     628: aload         7
     630: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     635: ifne          646
     638: new           #307                // class java/util/NoSuchElementException
     641: dup
     642: invokespecial #308                // Method java/util/NoSuchElementException."<init>":()V
     645: athrow
     646: aload         7
     648: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     653: checkcast     #19                 // class java/lang/String
     656: astore        8
     658: iconst_0
     659: istore        9
     661: aload         8
     663: invokevirtual #292                // Method java/lang/String.length:()I
     666: istore        8
     668: aload         7
     670: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     675: ifeq          714
     678: aload         7
     680: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     685: checkcast     #19                 // class java/lang/String
     688: astore        9
     690: iconst_0
     691: istore        10
     693: aload         9
     695: invokevirtual #292                // Method java/lang/String.length:()I
     698: istore        9
     700: iload         8
     702: iload         9
     704: if_icmpge     668
     707: iload         9
     709: istore        8
     711: goto          668
     714: iload         8
     716: istore        6
     718: iload         5
     720: iload         6
     722: invokestatic  #305                // Method java/lang/Math.max:(II)I
     725: istore        4
     727: aload_0
     728: invokevirtual #315                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getGotoNotations:()Ljava/util/Set;
     731: checkcast     #29                 // class java/lang/Iterable
     734: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     739: astore        7
     741: aload         7
     743: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     748: ifne          759
     751: new           #307                // class java/util/NoSuchElementException
     754: dup
     755: invokespecial #308                // Method java/util/NoSuchElementException."<init>":()V
     758: athrow
     759: aload         7
     761: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     766: checkcast     #19                 // class java/lang/String
     769: astore        8
     771: iconst_0
     772: istore        9
     774: aload         8
     776: invokevirtual #292                // Method java/lang/String.length:()I
     779: istore        8
     781: aload         7
     783: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     788: ifeq          827
     791: aload         7
     793: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     798: checkcast     #19                 // class java/lang/String
     801: astore        9
     803: iconst_0
     804: istore        10
     806: aload         9
     808: invokevirtual #292                // Method java/lang/String.length:()I
     811: istore        9
     813: iload         8
     815: iload         9
     817: if_icmpge     781
     820: iload         9
     822: istore        8
     824: goto          781
     827: iload         8
     829: istore        6
     831: aload_2
     832: checkcast     #29                 // class java/lang/Iterable
     835: invokestatic  #312                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     838: checkcast     #29                 // class java/lang/Iterable
     841: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     846: astore        8
     848: aload         8
     850: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     855: ifne          866
     858: new           #307                // class java/util/NoSuchElementException
     861: dup
     862: invokespecial #308                // Method java/util/NoSuchElementException."<init>":()V
     865: athrow
     866: aload         8
     868: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     873: checkcast     #19                 // class java/lang/String
     876: astore        9
     878: iconst_0
     879: istore        10
     881: aload         9
     883: invokevirtual #292                // Method java/lang/String.length:()I
     886: istore        9
     888: aload         8
     890: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     895: ifeq          934
     898: aload         8
     900: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     905: checkcast     #19                 // class java/lang/String
     908: astore        10
     910: iconst_0
     911: istore        11
     913: aload         10
     915: invokevirtual #292                // Method java/lang/String.length:()I
     918: istore        10
     920: iload         9
     922: iload         10
     924: if_icmpge     888
     927: iload         10
     929: istore        9
     931: goto          888
     934: iload         9
     936: istore        7
     938: iload         6
     940: iload         7
     942: invokestatic  #305                // Method java/lang/Math.max:(II)I
     945: istore        5
     947: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
     950: pop
     951: new           #250                // class java/lang/StringBuilder
     954: dup
     955: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
     958: ldc_w         #323                // String %-
     961: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     964: iload_3
     965: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     968: ldc_w         #328                // String s %s %s
     971: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     974: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     977: astore        8
     979: iconst_3
     980: anewarray     #4                  // class java/lang/Object
     983: astore        9
     985: aload         9
     987: iconst_0
     988: aload_0
     989: invokevirtual #296                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getActionNotations:()Ljava/util/Set;
     992: invokeinterface #299,  1          // InterfaceMethod java/util/Set.size:()I
     997: invokestatic  #331                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1000: aastore
    1001: aload         9
    1003: iconst_1
    1004: aload_0
    1005: invokevirtual #296                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getActionNotations:()Ljava/util/Set;
    1008: checkcast     #29                 // class java/lang/Iterable
    1011: ldc_w         #333                // String
    1014: checkcast     #17                 // class java/lang/CharSequence
    1017: aconst_null
    1018: aconst_null
    1019: iconst_0
    1020: aconst_null
    1021: iload         4
    1023: invokedynamic #341,  0            // InvokeDynamic #3:invoke:(I)Lkotlin/jvm/functions/Function1;
    1028: bipush        30
    1030: aconst_null
    1031: invokestatic  #345                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1034: aastore
    1035: aload         9
    1037: iconst_2
    1038: aload_0
    1039: invokevirtual #315                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable.getGotoNotations:()Ljava/util/Set;
    1042: checkcast     #29                 // class java/lang/Iterable
    1045: ldc_w         #333                // String
    1048: checkcast     #17                 // class java/lang/CharSequence
    1051: aconst_null
    1052: aconst_null
    1053: iconst_0
    1054: aconst_null
    1055: iload         5
    1057: invokedynamic #350,  0            // InvokeDynamic #4:invoke:(I)Lkotlin/jvm/functions/Function1;
    1062: bipush        30
    1064: aconst_null
    1065: invokestatic  #345                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1068: aastore
    1069: aload         9
    1071: astore        9
    1073: aload         8
    1075: aload         9
    1077: aload         9
    1079: arraylength
    1080: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
    1083: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
    1086: dup
    1087: ldc_w         #362                // String format(...)
    1090: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
    1093: astore        6
    1095: aload_1
    1096: checkcast     #29                 // class java/lang/Iterable
    1099: aload_2
    1100: checkcast     #29                 // class java/lang/Iterable
    1103: invokestatic  #369                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
    1106: checkcast     #29                 // class java/lang/Iterable
    1109: astore        8
    1111: iconst_0
    1112: istore        9
    1114: aload         8
    1116: astore        10
    1118: new           #31                 // class java/util/ArrayList
    1121: dup
    1122: aload         8
    1124: bipush        10
    1126: invokestatic  #77                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1129: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
    1132: checkcast     #37                 // class java/util/Collection
    1135: astore        11
    1137: iconst_0
    1138: istore        12
    1140: iconst_0
    1141: istore        13
    1143: aload         10
    1145: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1150: astore        14
    1152: aload         14
    1154: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1159: ifeq          1372
    1162: aload         14
    1164: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1169: astore        15
    1171: aload         11
    1173: iload         13
    1175: iinc          13, 1
    1178: istore        16
    1180: iload         16
    1182: ifge          1188
    1185: invokestatic  #372                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
    1188: iload         16
    1190: aload         15
    1192: checkcast     #172                // class kotlin/Pair
    1195: astore        17
    1197: istore        18
    1199: astore        24
    1201: iconst_0
    1202: istore        19
    1204: aload         17
    1206: invokevirtual #175                // Method kotlin/Pair.component1:()Ljava/lang/Object;
    1209: checkcast     #61                 // class java/util/List
    1212: astore        20
    1214: aload         17
    1216: invokevirtual #178                // Method kotlin/Pair.component2:()Ljava/lang/Object;
    1219: checkcast     #61                 // class java/util/List
    1222: astore        21
    1224: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
    1227: pop
    1228: new           #250                // class java/lang/StringBuilder
    1231: dup
    1232: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
    1235: ldc_w         #323                // String %-
    1238: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    1241: iload_3
    1242: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
    1245: ldc_w         #328                // String s %s %s
    1248: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    1251: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
    1254: astore        22
    1256: iconst_3
    1257: anewarray     #4                  // class java/lang/Object
    1260: astore        23
    1262: aload         23
    1264: iconst_0
    1265: iload         18
    1267: invokestatic  #331                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1270: aastore
    1271: aload         23
    1273: iconst_1
    1274: aload         20
    1276: checkcast     #29                 // class java/lang/Iterable
    1279: ldc_w         #333                // String
    1282: checkcast     #17                 // class java/lang/CharSequence
    1285: aconst_null
    1286: aconst_null
    1287: iconst_0
    1288: aconst_null
    1289: iload         4
    1291: invokedynamic #377,  0            // InvokeDynamic #5:invoke:(I)Lkotlin/jvm/functions/Function1;
    1296: bipush        30
    1298: aconst_null
    1299: invokestatic  #345                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1302: aastore
    1303: aload         23
    1305: iconst_2
    1306: aload         21
    1308: checkcast     #29                 // class java/lang/Iterable
    1311: ldc_w         #333                // String
    1314: checkcast     #17                 // class java/lang/CharSequence
    1317: aconst_null
    1318: aconst_null
    1319: iconst_0
    1320: aconst_null
    1321: iload         5
    1323: invokedynamic #382,  0            // InvokeDynamic #6:invoke:(I)Lkotlin/jvm/functions/Function1;
    1328: bipush        30
    1330: aconst_null
    1331: invokestatic  #345                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1334: aastore
    1335: aload         23
    1337: astore        23
    1339: aload         22
    1341: aload         23
    1343: aload         23
    1345: arraylength
    1346: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
    1349: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
    1352: dup
    1353: ldc_w         #362                // String format(...)
    1356: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
    1359: nop
    1360: aload         24
    1362: swap
    1363: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1368: pop
    1369: goto          1152
    1372: aload         11
    1374: checkcast     #61                 // class java/util/List
    1377: nop
    1378: checkcast     #29                 // class java/lang/Iterable
    1381: ldc           #21                 // String \n
    1383: checkcast     #17                 // class java/lang/CharSequence
    1386: aconst_null
    1387: aconst_null
    1388: iconst_0
    1389: aconst_null
    1390: aconst_null
    1391: bipush        62
    1393: aconst_null
    1394: invokestatic  #345                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1397: astore        7
    1399: new           #250                // class java/lang/StringBuilder
    1402: dup
    1403: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
    1406: aload         6
    1408: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    1411: bipush        10
    1413: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
    1416: aload         7
    1418: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    1421: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
    1424: areturn

  private static final kotlin.Pair readSyntaxTable$lambda$5(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #410                // String s
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: iload_0
       9: invokestatic  #331                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      12: invokestatic  #416                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      15: areturn

  private static final kotlin.Pair readSyntaxTable$lambda$6(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #410                // String s
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: iload_0
       9: invokestatic  #331                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      12: invokestatic  #416                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      15: areturn

  private static final kotlin.Pair readSyntaxTable$lambda$9(int, java.util.List);
    Code:
       0: aload_1
       1: ldc_w         #417                // String row
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: iconst_1
       9: iload_0
      10: iconst_1
      11: iadd
      12: invokeinterface #105,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
      17: checkcast     #29                 // class java/lang/Iterable
      20: astore_3
      21: iconst_0
      22: istore        4
      24: aload_3
      25: astore        5
      27: new           #31                 // class java/util/ArrayList
      30: dup
      31: aload_3
      32: bipush        10
      34: invokestatic  #77                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      37: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
      40: checkcast     #37                 // class java/util/Collection
      43: astore        6
      45: iconst_0
      46: istore        7
      48: aload         5
      50: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      55: astore        8
      57: aload         8
      59: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      64: ifeq          259
      67: aload         8
      69: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      74: astore        9
      76: aload         6
      78: aload         9
      80: checkcast     #19                 // class java/lang/String
      83: astore        10
      85: astore        13
      87: iconst_0
      88: istore        11
      90: nop
      91: aload         10
      93: ldc           #246                // String _
      95: invokestatic  #421                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      98: ifeq          105
     101: aconst_null
     102: goto          246
     105: aload         10
     107: ldc_w         #274                // String acc
     110: invokestatic  #421                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     113: ifeq          125
     116: getstatic     #424                // Field com/heerkirov/hedge/server/library/compiler/grammar/definintion/Accept.INSTANCE:Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Accept;
     119: checkcast     #408                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Action
     122: goto          246
     125: aload         10
     127: ldc_w         #410                // String s
     130: iconst_0
     131: iconst_2
     132: aconst_null
     133: invokestatic  #428                // Method kotlin/text/StringsKt.startsWith$default:(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
     136: ifeq          168
     139: new           #248                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Shift
     142: dup
     143: aload         10
     145: iconst_1
     146: invokevirtual #431                // Method java/lang/String.substring:(I)Ljava/lang/String;
     149: dup
     150: ldc_w         #433                // String substring(...)
     153: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     156: invokestatic  #101                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     159: invokespecial #434                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/Shift."<init>":(I)V
     162: checkcast     #408                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Action
     165: goto          246
     168: aload         10
     170: ldc_w         #436                // String r
     173: iconst_0
     174: iconst_2
     175: aconst_null
     176: invokestatic  #428                // Method kotlin/text/StringsKt.startsWith$default:(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
     179: ifeq          211
     182: new           #267                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Reduce
     185: dup
     186: aload         10
     188: iconst_1
     189: invokevirtual #431                // Method java/lang/String.substring:(I)Ljava/lang/String;
     192: dup
     193: ldc_w         #433                // String substring(...)
     196: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     199: invokestatic  #101                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     202: invokespecial #437                // Method com/heerkirov/hedge/server/library/compiler/grammar/definintion/Reduce."<init>":(I)V
     205: checkcast     #408                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Action
     208: goto          246
     211: new           #66                 // class java/lang/RuntimeException
     214: dup
     215: new           #250                // class java/lang/StringBuilder
     218: dup
     219: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
     222: ldc_w         #439                // String Unknown action \'
     225: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     228: aload         10
     230: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     233: ldc_w         #441                // String \'.
     236: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     239: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     242: invokespecial #71                 // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
     245: athrow
     246: nop
     247: aload         13
     249: swap
     250: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     255: pop
     256: goto          57
     259: aload         6
     261: checkcast     #61                 // class java/util/List
     264: nop
     265: checkcast     #37                 // class java/util/Collection
     268: astore_3
     269: nop
     270: iconst_0
     271: istore        4
     273: aload_3
     274: astore        5
     276: aload         5
     278: iconst_0
     279: anewarray     #408                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Action
     282: invokeinterface #184,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     287: checkcast     #180                // class "[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;"
     290: astore_2
     291: aload_1
     292: iload_0
     293: iconst_1
     294: iadd
     295: aload_1
     296: invokeinterface #145,  1          // InterfaceMethod java/util/List.size:()I
     301: invokeinterface #105,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     306: checkcast     #29                 // class java/lang/Iterable
     309: astore        4
     311: iconst_0
     312: istore        5
     314: aload         4
     316: astore        6
     318: new           #31                 // class java/util/ArrayList
     321: dup
     322: aload         4
     324: bipush        10
     326: invokestatic  #77                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     329: invokespecial #80                 // Method java/util/ArrayList."<init>":(I)V
     332: checkcast     #37                 // class java/util/Collection
     335: astore        7
     337: iconst_0
     338: istore        8
     340: aload         6
     342: invokeinterface #41,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     347: astore        9
     349: aload         9
     351: invokeinterface #47,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     356: ifeq          417
     359: aload         9
     361: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     366: astore        10
     368: aload         7
     370: aload         10
     372: checkcast     #19                 // class java/lang/String
     375: astore        11
     377: astore        13
     379: iconst_0
     380: istore        12
     382: aload         11
     384: ldc           #246                // String _
     386: invokestatic  #421                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     389: ifeq          396
     392: aconst_null
     393: goto          404
     396: aload         11
     398: invokestatic  #101                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     401: invokestatic  #331                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     404: nop
     405: aload         13
     407: swap
     408: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     413: pop
     414: goto          349
     417: aload         7
     419: checkcast     #61                 // class java/util/List
     422: nop
     423: checkcast     #37                 // class java/util/Collection
     426: astore        4
     428: nop
     429: iconst_0
     430: istore        5
     432: aload         4
     434: astore        6
     436: aload         6
     438: iconst_0
     439: anewarray     #97                 // class java/lang/Integer
     442: invokeinterface #184,  2          // InterfaceMethod java/util/Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
     447: checkcast     #188                // class "[Ljava/lang/Integer;"
     450: astore_3
     451: new           #172                // class kotlin/Pair
     454: dup
     455: aload_2
     456: aload_3
     457: invokespecial #444                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     460: areturn

  private static final java.lang.CharSequence printSyntaxTable$lambda$18(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #448                // String it
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
      10: pop
      11: new           #250                // class java/lang/StringBuilder
      14: dup
      15: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
      18: ldc_w         #323                // String %-
      21: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: iload_0
      25: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      28: bipush        115
      30: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      33: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      36: astore_2
      37: iconst_1
      38: anewarray     #4                  // class java/lang/Object
      41: astore_3
      42: aload_3
      43: iconst_0
      44: aload_1
      45: aastore
      46: aload_3
      47: astore_3
      48: aload_2
      49: aload_3
      50: aload_3
      51: arraylength
      52: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
      55: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      58: dup
      59: ldc_w         #362                // String format(...)
      62: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      65: checkcast     #17                 // class java/lang/CharSequence
      68: areturn

  private static final java.lang.CharSequence printSyntaxTable$lambda$19(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #448                // String it
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
      10: pop
      11: new           #250                // class java/lang/StringBuilder
      14: dup
      15: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
      18: ldc_w         #323                // String %-
      21: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: iload_0
      25: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      28: bipush        115
      30: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      33: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      36: astore_2
      37: iconst_1
      38: anewarray     #4                  // class java/lang/Object
      41: astore_3
      42: aload_3
      43: iconst_0
      44: aload_1
      45: aastore
      46: aload_3
      47: astore_3
      48: aload_2
      49: aload_3
      50: aload_3
      51: arraylength
      52: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
      55: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      58: dup
      59: ldc_w         #362                // String format(...)
      62: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      65: checkcast     #17                 // class java/lang/CharSequence
      68: areturn

  private static final java.lang.CharSequence printSyntaxTable$lambda$22$lambda$20(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #448                // String it
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
      10: pop
      11: new           #250                // class java/lang/StringBuilder
      14: dup
      15: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
      18: ldc_w         #323                // String %-
      21: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: iload_0
      25: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      28: bipush        115
      30: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      33: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      36: astore_2
      37: iconst_1
      38: anewarray     #4                  // class java/lang/Object
      41: astore_3
      42: aload_3
      43: iconst_0
      44: aload_1
      45: aastore
      46: aload_3
      47: astore_3
      48: aload_2
      49: aload_3
      50: aload_3
      51: arraylength
      52: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
      55: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      58: dup
      59: ldc_w         #362                // String format(...)
      62: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      65: checkcast     #17                 // class java/lang/CharSequence
      68: areturn

  private static final java.lang.CharSequence printSyntaxTable$lambda$22$lambda$21(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #448                // String it
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: getstatic     #321                // Field kotlin/jvm/internal/StringCompanionObject.INSTANCE:Lkotlin/jvm/internal/StringCompanionObject;
      10: pop
      11: new           #250                // class java/lang/StringBuilder
      14: dup
      15: invokespecial #251                // Method java/lang/StringBuilder."<init>":()V
      18: ldc_w         #323                // String %-
      21: invokevirtual #326                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: iload_0
      25: invokevirtual #261                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      28: bipush        115
      30: invokevirtual #255                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      33: invokevirtual #265                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      36: astore_2
      37: iconst_1
      38: anewarray     #4                  // class java/lang/Object
      41: astore_3
      42: aload_3
      43: iconst_0
      44: aload_1
      45: aastore
      46: aload_3
      47: astore_3
      48: aload_2
      49: aload_3
      50: aload_3
      51: arraylength
      52: invokestatic  #356                // Method java/util/Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
      55: invokestatic  #360                // Method java/lang/String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      58: dup
      59: ldc_w         #362                // String format(...)
      62: invokestatic  #365                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      65: checkcast     #17                 // class java/lang/CharSequence
      68: areturn
}

Compiled from "SyntaxTable.kt"
public final class com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable {
  private final com.heerkirov.hedge.server.library.compiler.grammar.definintion.Action[][] actionTable;

  private final java.lang.Integer[][] gotoTable;

  private final java.util.Map<java.lang.String, java.lang.Integer> actionMap;

  private final java.util.Map<java.lang.String, java.lang.Integer> gotoMap;

  private final kotlin.Lazy reflectActionMap$delegate;

  public com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable(com.heerkirov.hedge.server.library.compiler.grammar.definintion.Action[][], java.lang.Integer[][], java.util.Map<java.lang.String, java.lang.Integer>, java.util.Map<java.lang.String, java.lang.Integer>);
    Code:
       0: aload_1
       1: ldc           #10                 // String actionTable
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String gotoTable
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_3
      13: ldc           #20                 // String actionMap
      15: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      18: aload         4
      20: ldc           #22                 // String gotoMap
      22: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      25: aload_0
      26: invokespecial #25                 // Method java/lang/Object."<init>":()V
      29: aload_0
      30: aload_1
      31: putfield      #28                 // Field actionTable:[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
      34: aload_0
      35: aload_2
      36: putfield      #31                 // Field gotoTable:[[Ljava/lang/Integer;
      39: aload_0
      40: aload_3
      41: putfield      #34                 // Field actionMap:Ljava/util/Map;
      44: aload_0
      45: aload         4
      47: putfield      #36                 // Field gotoMap:Ljava/util/Map;
      50: aload_0
      51: aload_0
      52: invokedynamic #56,  0             // InvokeDynamic #0:invoke:(Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable;)Lkotlin/jvm/functions/Function0;
      57: invokestatic  #62                 // Method kotlin/LazyKt.lazy:(Lkotlin/jvm/functions/Function0;)Lkotlin/Lazy;
      60: putfield      #66                 // Field reflectActionMap$delegate:Lkotlin/Lazy;
      63: return

  public final com.heerkirov.hedge.server.library.compiler.grammar.definintion.Action[][] getActionTable$main();
    Code:
       0: aload_0
       1: getfield      #28                 // Field actionTable:[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
       4: areturn

  public final java.lang.Integer[][] getGotoTable$main();
    Code:
       0: aload_0
       1: getfield      #31                 // Field gotoTable:[[Ljava/lang/Integer;
       4: areturn

  private final java.util.Map<java.lang.Integer, java.lang.String> getReflectActionMap();
    Code:
       0: aload_0
       1: getfield      #66                 // Field reflectActionMap$delegate:Lkotlin/Lazy;
       4: astore_1
       5: aload_1
       6: invokeinterface #79,  1           // InterfaceMethod kotlin/Lazy.getValue:()Ljava/lang/Object;
      11: checkcast     #81                 // class java/util/Map
      14: areturn

  public final int getStatusCount();
    Code:
       0: aload_0
       1: getfield      #28                 // Field actionTable:[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
       4: checkcast     #85                 // class "[Ljava/lang/Object;"
       7: arraylength
       8: ireturn

  public final java.util.Set<java.lang.String> getActionNotations();
    Code:
       0: aload_0
       1: getfield      #34                 // Field actionMap:Ljava/util/Map;
       4: invokeinterface #91,  1           // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
       9: areturn

  public final java.util.Set<java.lang.String> getGotoNotations();
    Code:
       0: aload_0
       1: getfield      #36                 // Field gotoMap:Ljava/util/Map;
       4: invokeinterface #91,  1           // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
       9: areturn

  public final com.heerkirov.hedge.server.library.compiler.grammar.definintion.Action getAction(int, java.lang.String);
    Code:
       0: aload_2
       1: ldc           #97                 // String terminalNotation
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #34                 // Field actionMap:Ljava/util/Map;
      10: aload_2
      11: invokeinterface #101,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #103                // class java/lang/Integer
      19: dup
      20: ifnull        29
      23: invokevirtual #106                // Method java/lang/Integer.intValue:()I
      26: goto          62
      29: pop
      30: new           #108                // class java/lang/RuntimeException
      33: dup
      34: new           #110                // class java/lang/StringBuilder
      37: dup
      38: invokespecial #111                // Method java/lang/StringBuilder."<init>":()V
      41: ldc           #113                // String Action
      43: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      46: aload_2
      47: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      50: ldc           #119                // String  is not exist.
      52: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      55: invokevirtual #123                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      58: invokespecial #126                // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
      61: athrow
      62: istore_3
      63: aload_0
      64: getfield      #28                 // Field actionTable:[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
      67: iload_1
      68: aaload
      69: iload_3
      70: aaload
      71: areturn

  public final java.lang.Integer getGoto(int, java.lang.String);
    Code:
       0: aload_2
       1: ldc           #134                // String nonTerminalNotation
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #36                 // Field gotoMap:Ljava/util/Map;
      10: aload_2
      11: invokeinterface #101,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #103                // class java/lang/Integer
      19: dup
      20: ifnull        29
      23: invokevirtual #106                // Method java/lang/Integer.intValue:()I
      26: goto          62
      29: pop
      30: new           #108                // class java/lang/RuntimeException
      33: dup
      34: new           #110                // class java/lang/StringBuilder
      37: dup
      38: invokespecial #111                // Method java/lang/StringBuilder."<init>":()V
      41: ldc           #136                // String Goto
      43: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      46: aload_2
      47: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      50: ldc           #119                // String  is not exist.
      52: invokevirtual #117                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      55: invokevirtual #123                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      58: invokespecial #126                // Method java/lang/RuntimeException."<init>":(Ljava/lang/String;)V
      61: athrow
      62: istore_3
      63: aload_0
      64: getfield      #31                 // Field gotoTable:[[Ljava/lang/Integer;
      67: iload_1
      68: aaload
      69: iload_3
      70: aaload
      71: areturn

  public final java.util.List<java.lang.String> getExpected(int);
    Code:
       0: aload_0
       1: getfield      #28                 // Field actionTable:[[Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/Action;
       4: iload_1
       5: aaload
       6: invokestatic  #145                // Method kotlin/collections/ArraysKt.asSequence:([Ljava/lang/Object;)Lkotlin/sequences/Sequence;
       9: invokedynamic #157,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function2;
      14: invokestatic  #163                // Method kotlin/sequences/SequencesKt.mapIndexed:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function2;)Lkotlin/sequences/Sequence;
      17: invokedynamic #174,  0            // InvokeDynamic #2:invoke:()Lkotlin/jvm/functions/Function1;
      22: invokestatic  #178                // Method kotlin/sequences/SequencesKt.filter:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
      25: aload_0
      26: invokedynamic #188,  0            // InvokeDynamic #3:invoke:(Lcom/heerkirov/hedge/server/library/compiler/grammar/definintion/SyntaxTable;)Lkotlin/jvm/functions/Function1;
      31: invokestatic  #191                // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
      34: invokestatic  #195                // Method kotlin/sequences/SequencesKt.toList:(Lkotlin/sequences/Sequence;)Ljava/util/List;
      37: areturn

  private static final kotlin.Pair reflectActionMap_delegate$lambda$1$lambda$0(java.util.Map$Entry);
    Code:
       0: aload_0
       1: ldc           #199                // String <destruct>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokeinterface #204,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      12: checkcast     #206                // class java/lang/String
      15: astore_1
      16: aload_0
      17: invokeinterface #207,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
      22: checkcast     #209                // class java/lang/Number
      25: invokevirtual #210                // Method java/lang/Number.intValue:()I
      28: istore_2
      29: iload_2
      30: invokestatic  #214                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      33: aload_1
      34: invokestatic  #220                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      37: areturn

  private static final java.util.Map reflectActionMap_delegate$lambda$1(com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable);
    Code:
       0: aload_0
       1: getfield      #34                 // Field actionMap:Ljava/util/Map;
       4: invokestatic  #227                // Method kotlin/collections/MapsKt.asSequence:(Ljava/util/Map;)Lkotlin/sequences/Sequence;
       7: invokedynamic #232,  0            // InvokeDynamic #4:invoke:()Lkotlin/jvm/functions/Function1;
      12: invokestatic  #191                // Method kotlin/sequences/SequencesKt.map:(Lkotlin/sequences/Sequence;Lkotlin/jvm/functions/Function1;)Lkotlin/sequences/Sequence;
      15: invokestatic  #236                // Method kotlin/collections/MapsKt.toMap:(Lkotlin/sequences/Sequence;)Ljava/util/Map;
      18: areturn

  private static final kotlin.Pair getExpected$lambda$2(int, com.heerkirov.hedge.server.library.compiler.grammar.definintion.Action);
    Code:
       0: iload_0
       1: invokestatic  #214                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
       4: aload_1
       5: invokestatic  #220                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
       8: areturn

  private static final boolean getExpected$lambda$3(kotlin.Pair);
    Code:
       0: aload_0
       1: ldc           #199                // String <destruct>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #244                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      10: checkcast     #246                // class com/heerkirov/hedge/server/library/compiler/grammar/definintion/Action
      13: astore_1
      14: aload_1
      15: ifnull        22
      18: iconst_1
      19: goto          23
      22: iconst_0
      23: ireturn

  private static final java.lang.String getExpected$lambda$4(com.heerkirov.hedge.server.library.compiler.grammar.definintion.SyntaxTable, kotlin.Pair);
    Code:
       0: aload_1
       1: ldc           #199                // String <destruct>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokevirtual #249                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      10: checkcast     #209                // class java/lang/Number
      13: invokevirtual #210                // Method java/lang/Number.intValue:()I
      16: istore_2
      17: aload_0
      18: invokespecial #251                // Method getReflectActionMap:()Ljava/util/Map;
      21: iload_2
      22: invokestatic  #214                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      25: invokeinterface #101,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      30: dup
      31: invokestatic  #255                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      34: checkcast     #206                // class java/lang/String
      37: areturn
}