package org.chalup.parser

import org.chalup.parser.Json.JsonBool
import org.chalup.parser.Json.JsonInt
import org.chalup.parser.Json.JsonNull
import org.chalup.parser.LeBoolean.LeFalse
import org.chalup.parser.LeBoolean.LeOr
import org.chalup.parser.LeBoolean.LeTrue
import org.chalup.parser.LoopStep.Done
import org.chalup.parser.LoopStep.Loop
import org.chalup.parser.ParserStep.Bad
import org.chalup.parser.ParserStep.Good
import org.chalup.parser.Problem.Custom
import org.chalup.parser.Problem.ExpectedKeyword
import org.chalup.parser.Problem.ExpectedSymbol
import org.chalup.parser.Problem.ExpectingFloat
import org.chalup.parser.Problem.ExpectingInt
import org.chalup.parser.Problem.UnexpectedChar
import org.chalup.parser.Result.Error
import org.chalup.parser.Result.Ok
import org.chalup.parser.TrailingSeparatorTreatment.FORBIDDEN
import org.chalup.parser.TrailingSeparatorTreatment.MANDATORY
import org.chalup.parser.TrailingSeparatorTreatment.OPTIONAL

sealed class Result<out ErrorT, out OkT> {
    data class Error<T>(val error: T) : Result<T, Nothing>()
    data class Ok<T>(val value: T) : Result<Nothing, T>()
}

data class State(val src: String,
                 val offset: Int,
                 val indent: Int,
                 val row: Int,
                 val col: Int)

sealed class ParserStep<out T> {
    data class Good<T>(val progress: Boolean,
                       val value: T,
                       val state: State) : ParserStep<T>()

    data class Bad(val progress: Boolean,
                   val problems: List<DeadEnd>) : ParserStep<Nothing>()
}

sealed class Problem {
    data class ExpectedSymbol(val str: String) : Problem()
    data class ExpectedKeyword(val str: String) : Problem()
    object ExpectingInt : Problem()
    object ExpectingFloat : Problem()
    object UnexpectedChar : Problem()
    data class Custom(val message: String) : Problem()
}

data class Token(val str: String, val problem: Problem, val delimiterPredicate: (Char) -> Boolean)

data class DeadEnd(val row: Int,
                   val col: Int,
                   val problem: Problem) {
    constructor(state: State, problem: Problem) : this(state.row, state.col, problem)
}

class Parser<T>(val parse: (State) -> ParserStep<T>) {
    fun run(input: String): Result<List<DeadEnd>, T> =
        when (val step = parse(State(src = input, offset = 0, indent = 1, row = 1, col = 1))) {
            is Good -> Ok(step.value)
            is Bad -> Error(step.problems)
        }
}

fun isSubstring(str: String, offset: Int, row: Int, col: Int, bigString: String): Triple<Int, Int, Int> {
    var newOffset = offset
    var newRow = row
    var newCol = col

    var isGood = offset + str.length <= bigString.length
    var i = 0

    while (isGood && i < str.length) {
        val isNewline = bigString[newOffset] == '\n'
        isGood = str[i++] == bigString[newOffset++]
        if (isNewline) {
            newRow++; newCol = 1
        } else {
            newCol++
        }
    }

    return Triple(if (isGood) newOffset else -1, newRow, newCol)
}

val int: Parser<Int> = number(NumberContext(
    int = Ok { n: Int -> n },
    float = Error(ExpectingInt),
    invalid = ExpectingInt,
    expecting = ExpectingInt
))

val float: Parser<Float> = number(NumberContext(
    int = Ok { n: Int -> n.toFloat() },
    float = Ok { n: Float -> n },
    invalid = ExpectingFloat,
    expecting = ExpectingFloat
))

data class NumberContext<out T>(val int: Result<Problem, (Int) -> T>,
                                val float: Result<Problem, (Float) -> T>,
                                val invalid: Problem,
                                val expecting: Problem)

fun <T> number(context: NumberContext<T>): Parser<T> = Parser { s ->
    val (intOffset, n) = consumeBase(10, s.offset, s.src)
    finalizeFloat(context, intOffset, n, s)
}

fun consumeBase(base: Int, offset: Int, string: String): Pair<Int, Int> {
    var total = 0
    var newOffset = offset

    while (newOffset < string.length) {
        val digit = string[newOffset] - '0'
        if (digit < 0 || digit >= base) break
        total = base * total + digit
        newOffset++
    }

    return newOffset to total
}

fun <T> finalizeFloat(context: NumberContext<T>, intOffset: Int, n: Int, s: State): ParserStep<T> {
    val floatOffset = consumeDotAndExp(intOffset, s.src)

    return when {
        floatOffset < 0 -> Bad(progress = true,
                               problems = listOf(DeadEnd(row = s.row,
                                                         col = s.col - (floatOffset + s.offset),
                                                         problem = context.invalid)))
        s.offset == floatOffset -> Bad(progress = false,
                                       problems = fromState(s, context.expecting))
        intOffset == floatOffset -> finalizeInt(context.invalid, context.int, s.offset, intOffset, n, s)
        else -> when (context.float) {
            is Error -> Bad(progress = true,
                            problems = listOf(DeadEnd(s, context.invalid))) // shouldn't we take the problem from the handler?
            is Ok -> s.src.substring(s.offset, floatOffset).toFloatOrNull()
                ?.let {
                    Good(progress = true,
                         value = context.float.value(it),
                         state = s.bumpOffset(floatOffset))
                }
                ?: Bad(progress = true,
                       problems = fromState(s, context.invalid))
        }
    }
}

fun <T> finalizeInt(invalid: Problem,
                    handler: Result<Problem, (Int) -> T>,
                    startOffset: Int,
                    endOffset: Int,
                    n: Int,
                    s: State): ParserStep<T> =
    when (handler) {
        is Error -> Bad(progress = true, problems = fromState(s, handler.error))
        is Ok ->
            if (startOffset == endOffset) Bad(progress = s.offset < startOffset, problems = fromState(s, invalid))
            else Good(progress = true, value = handler.value(n), state = s.bumpOffset(endOffset))
    }

private fun State.bumpOffset(newOffset: Int) = copy(
    offset = newOffset,
    col = col + (newOffset - offset)
)

fun fromState(s: State, x: Problem) = listOf(DeadEnd(s, x))

fun consumeDotAndExp(offset: Int, src: String): Int =
    if (src.at(offset) == '.') consumeExp(chompBase10(offset + 1, src), src)
    else consumeExp(offset, src)

fun chompBase10(offset: Int, src: String): Int {
    var newOffset = offset

    while (newOffset < src.length) {
        val char = src[newOffset]
        if (char < '0' || char > '9') break
        newOffset++
    }

    return newOffset
}

fun consumeExp(offset: Int, src: String): Int {
    if (src.at(offset) == 'e' || src.at(offset) == 'E') {
        val eOffset = offset + 1
        val expOffset = if (src[eOffset] == '+' || src[eOffset] == '-') eOffset + 1 else eOffset
        val newOffset = chompBase10(expOffset, src)

        if (expOffset == newOffset) {
            return -newOffset
        } else {
            return newOffset
        }
    } else {
        return offset
    }
}

// Elm version uses under the hood some Javascript method which returns 'NaN' when reaching
// outside of the valid offset range. I'm duplicating this logic here to keep the reset of
// the code the same.
fun String.at(offset: Int) = if (offset >= length) null else get(offset)

fun symbol(str: String): Parser<Unit> = token(Token(str, ExpectedSymbol(str), delimiterPredicate = { false }))
fun keyword(str: String): Parser<Unit> = token(Token(str, ExpectedKeyword(str), delimiterPredicate = { it.isLetterOrDigit() || it == '_' }))
fun token(token: Token) = Parser { s ->
    val (newOffset, newRow, newCol) = isSubstring(token.str, s.offset, s.row, s.col, s.src)

    if (newOffset == -1 || isSubChar(token.delimiterPredicate, newOffset, s.src) >= 0) Bad(progress = false, problems = fromState(s, token.problem))
    else Good(progress = token.str.isNotEmpty(),
              value = Unit,
              state = s.copy(offset = newOffset,
                             row = newRow,
                             col = newCol))
}

val spaces: Parser<Unit> = chompWhile { it.isWhitespace() }

fun chompWhile(predicate: (Char) -> Boolean): Parser<Unit> = Parser { state ->
    tailrec fun helper(offset: Int, row: Int, col: Int): ParserStep<Unit> =
        when (val newOffset = isSubChar(predicate, offset, state.src)) {
            -1 -> Good(progress = state.offset < offset,
                       value = Unit,
                       state = state.copy(offset = offset,
                                          row = row,
                                          col = col))
            -2 -> helper(offset + 1, row + 1, 1)
            else -> helper(newOffset, row, col + 1)
        }

    helper(state.offset, state.row, state.col)
}

fun chompIf(predicate: (Char) -> Boolean): Parser<Unit> = Parser { s ->
    when (val newOffset = isSubChar(predicate, s.offset, s.src)) {
        -1 -> Bad(progress = false, problems = fromState(s, UnexpectedChar))
        -2 -> Good(progress = true,
                   value = Unit,
                   state = s.copy(offset = s.offset + 1,
                                  row = s.row + 1,
                                  col = 1))
        else -> Good(progress = true,
                     value = Unit,
                     state = s.copy(offset = newOffset,
                                    col = s.col + 1))
    }
}

fun isSubChar(predicate: (Char) -> Boolean, offset: Int, string: String): Int = when {
    string.length <= offset -> -1
    predicate(string[offset]) -> if (string[offset] == '\n') -2 else offset + 1
    else -> -1
}

fun <T> succeed(v: T): Parser<T> = Parser { state ->
    Good(progress = false,
         value = v,
         state = state)
}

fun problem(message: String): Parser<Nothing> = Parser { s ->
    Bad(progress = false,
        problems = fromState(s, Custom(message)))
}

fun <T> oneOf(parsers: List<Parser<out T>>): Parser<T> = Parser { s ->
    tailrec fun helper(problems: List<DeadEnd>, parsers: List<Parser<out T>>): ParserStep<T> =
        if (parsers.isEmpty()) Bad(progress = false, problems = problems)
        else when (val step = parsers.first().parse(s)) {
            is Good -> step
            is Bad ->
                if (step.progress) step
                else helper(problems + step.problems, parsers.drop(1))
        }

    helper(problems = emptyList(), parsers = parsers)
}

fun <T> oneOf(vararg parsers: Parser<out T>): Parser<T> = oneOf(parsers.asList())

fun <T> parser(block: (self: Parser<T>) -> Parser<T>): Parser<T> {
    var stubParser: Parser<T> = Parser { throw IllegalStateException("Using stubbed parser!") }
    val selfParser: Parser<T> = Parser { s -> stubParser.parse(s) }

    return block(selfParser).also { stubParser = it }
}

fun <T, R> map(func: (T) -> R, parser: Parser<T>): Parser<R> = Parser { s ->
    when (val step = parser.parse(s)) {
        is Good -> Good(progress = step.progress,
                        value = func(step.value),
                        state = step.state)
        is Bad -> step
    }
}

infix fun <T, R> Parser<T>.mapTo(func: (T) -> R): Parser<R> = map(func, this)

fun <T1, T2, R> map2(func: (T1, T2) -> R, parserA: Parser<T1>, parserB: Parser<T2>): Parser<R> = Parser { s ->
    when (val stepA = parserA.parse(s)) {
        is Bad -> stepA
        is Good -> when (val stepB = parserB.parse(stepA.state)) {
            is Bad -> Bad(progress = stepA.progress || stepB.progress,
                          problems = stepB.problems)
            is Good -> Good(progress = stepA.progress || stepB.progress,
                            value = func(stepA.value, stepB.value),
                            state = stepB.state)
        }
    }
}

fun getChompedString(parser: Parser<*>): Parser<String> = Parser { s ->
    when (val step = parser.parse(s)) {
        is Bad -> step
        is Good -> Good(progress = step.progress,
                        value = s.src.substring(s.offset, step.state.offset),
                        state = step.state)
    }
}

infix fun <T, R> Parser<T>.andThen(func: (T) -> Parser<out R>): Parser<R> = Parser { s ->
    when (val stepA = parse(s)) {
        is Bad -> stepA
        is Good -> when (val stepB = func(stepA.value).parse(stepA.state)) {
            is Bad -> Bad(progress = stepA.progress || stepB.progress,
                          problems = stepB.problems)
            is Good -> Good(progress = stepA.progress || stepB.progress,
                            value = stepB.value,
                            state = stepB.state)
        }
    }
}

infix fun <T, R> Parser<(T) -> R>.keep(keepParser: Parser<T>): Parser<R> = map2(
    func = { f, arg -> f(arg) },
    parserA = this,
    parserB = keepParser
)

infix fun <T1, T2, R> Parser<(T1, T2) -> R>.keep2(keepParser: Parser<T1>): Parser<(T2) -> R> = map2(
    func = { f, a1 -> { a2: T2 -> f(a1, a2) } },
    parserA = this,
    parserB = keepParser
)

infix fun <KeepT, SkipT> Parser<KeepT>.skip(skip: Parser<SkipT>): Parser<KeepT> = map2(
    func = { a: KeepT, _: SkipT -> a },
    parserA = this,
    parserB = skip
)

sealed class LoopStep<out S, out T> {
    data class Loop<S>(val state: S) : LoopStep<S, Nothing>()
    data class Done<T>(val result: T) : LoopStep<Nothing, T>()
}

fun <S, T> loop(loopState: S, callback: (S) -> Parser<LoopStep<S, T>>): Parser<T> = Parser { s ->
    tailrec fun helper(progress: Boolean, loopState: S, parserState: State): ParserStep<T> =
        when (val step = callback(loopState).parse(parserState)) {
            is Good -> when (val nextLoopStep = step.value) {
                is Loop -> helper(progress = progress || step.progress,
                                  loopState = nextLoopStep.state,
                                  parserState = step.state)
                is Done -> Good(progress = progress || step.progress,
                                value = nextLoopStep.result,
                                state = step.state)
            }
            is Bad -> Bad(progress = progress || step.progress,
                          problems = step.problems)
        }

    helper(false, loopState, s)
}

enum class TrailingSeparatorTreatment { FORBIDDEN, OPTIONAL, MANDATORY }

// TODO mark internal?
infix fun <SkipT, KeepT> Parser<SkipT>.skipThen(keep: Parser<KeepT>): Parser<KeepT> = map2(
    func = { _: SkipT, b: KeepT -> b },
    parserA = this,
    parserB = keep
)

fun <T> sequence(start: String,
                 separator: String,
                 end: String,
                 trailingSeparatorTreatment: TrailingSeparatorTreatment,
                 itemParser: Parser<T>,
                 spacesParser: Parser<Unit> = spaces): Parser<List<T>> {
    return symbol(start) skipThen spacesParser skipThen sequenceEnd(endParser = symbol(end),
                                                                    spacesParser = spacesParser,
                                                                    separatorParser = symbol(separator),
                                                                    trailingSeparatorTreatment = trailingSeparatorTreatment,
                                                                    itemParser = itemParser)
}

fun <T> sequenceEnd(endParser: Parser<Unit>,
                    spacesParser: Parser<Unit>,
                    itemParser: Parser<T>,
                    separatorParser: Parser<Unit>,
                    trailingSeparatorTreatment: TrailingSeparatorTreatment): Parser<List<T>> {
    val chompRest: (T) -> Parser<List<T>> = { item: T ->
        when (trailingSeparatorTreatment) {
            FORBIDDEN -> loop(listOf(item), { s -> sequenceEndForbidden(endParser, spacesParser, itemParser, separatorParser, s) })
            OPTIONAL -> loop(listOf(item), { s -> sequenceEndOptional(endParser, spacesParser, itemParser, separatorParser, s) })
            MANDATORY -> (spacesParser skipThen separatorParser skipThen spacesParser skipThen loop(listOf(item), { s -> sequenceEndMandatory(spacesParser, itemParser, separatorParser, s)})) skip endParser
        }
    }

    return oneOf(
        itemParser andThen chompRest,
        endParser mapTo { emptyList<T>() }
    )
}

fun <T> sequenceEndForbidden(endParser: Parser<Unit>,
                             spacesParser: Parser<Unit>,
                             itemParser: Parser<T>,
                             separatorParser: Parser<Unit>,
                             items: List<T>): Parser<LoopStep<List<T>, List<T>>> =
    spacesParser skipThen oneOf(separatorParser skipThen spacesParser skipThen (itemParser mapTo { item -> Loop(items + item) }),
                                endParser mapTo { Done(items) })

fun <T> sequenceEndOptional(endParser: Parser<Unit>,
                            spacesParser: Parser<Unit>,
                            itemParser: Parser<T>,
                            separatorParser: Parser<Unit>,
                            items: List<T>): Parser<LoopStep<List<T>, List<T>>> {
    val parseEnd = endParser mapTo { Done(items) }

    return spacesParser skipThen oneOf(separatorParser skipThen spacesParser skipThen oneOf(itemParser mapTo { item -> Loop(items + item) },
                                                                                parseEnd),
                                       parseEnd)
}

fun <T> sequenceEndMandatory(spacesParser: Parser<Unit>,
                             itemParser: Parser<T>,
                             separatorParser: Parser<Unit>,
                             items: List<T>): Parser<LoopStep<List<T>, List<T>>> {
    return oneOf(
        itemParser skip spacesParser skip separatorParser skip spacesParser mapTo { item -> Loop(items + item) },
        succeed(Unit) mapTo { Done(items) }
    )
}

enum class Suite(val symbol: Char) {
    CLUBS('c'), HEARTS('h'), DIAMONDS('d'), SPADES('s')
}

enum class Rank(val symbol: Char) {
    TWO('2'),
    THREE('3'),
    FOUR('4'),
    FIVE('5'),
    SIX('6'),
    SEVEN('7'),
    EIGHT('8'),
    NINE('9'),
    TEN('T'),
    JACK('J'),
    QUEEN('Q'),
    KING('K'),
    ACE('A')
}

data class Card(val rank: Rank, val suite: Suite) {
    override fun toString(): String = "${rank.symbol}${suite.symbol}"
}

data class Point(val x: Int, val y: Int)

sealed class Json {
    data class JsonInt(val int: Int) : Json()
    data class JsonBool(val boolean: Boolean) : Json()
    object JsonNull : Json() {
        override fun toString() = "null"
    }
}

sealed class LeBoolean {
    object LeTrue : LeBoolean() {
        override fun toString() = "true"
    }

    object LeFalse : LeBoolean() {
        override fun toString() = "false"
    }

    data class LeOr(val lhs: LeBoolean, val rhs: LeBoolean) : LeBoolean() {
        override fun toString() = "($lhs || $rhs)"
    }
}

fun main() {
    val leBooleanParser: Parser<LeBoolean> = parser { leBoolean ->
        oneOf(
            succeed(LeTrue) skip keyword("true"),
            succeed(LeFalse) skip keyword("false"),
            (succeed { l: LeBoolean, r: LeBoolean -> LeOr(l, r) }
                    skip symbol("(")
                    skip spaces
                    keep2 leBoolean
                    skip spaces
                    skip symbol("||")
                    skip spaces
                    keep leBoolean
                    skip spaces
                    skip symbol(")")
                    )
        )
    }

    val jsonParser: Parser<Json> =
        oneOf(
            int mapTo { JsonInt(it) },
            keyword("true") mapTo { JsonBool(true) },
            keyword("false") mapTo { JsonBool(false) },
            keyword("null") mapTo { JsonNull }
        )

    val parser: Parser<Point> = (
            succeed { x: Int, y: Int -> Point(x, y) }
                    skip symbol("(")
                    skip spaces
                    keep2 int
                    skip spaces
                    skip symbol(",")
                    skip spaces
                    keep int
                    skip spaces
                    skip symbol(")")
            )

    val phpParser = getChompedString(
        succeed(Unit)
                skip chompIf { it == '$' }
                skip chompIf { it.isLetter() || it == '_' }
                skip chompWhile { it.isLetterOrDigit() || it == '_' }
    )

    val zipCodeParser = getChompedString(chompWhile { it.isDigit() })
        .andThen { code ->
            if (code.length == 5) succeed(code)
            else problem("a U.S. zip code has exactly 5 digits, but I found '$code'")
        }

    val letKeywordParser = keyword("let")

    val suiteParser = oneOf(Suite.values().map { suite -> symbol("${suite.symbol}") mapTo { suite } })
    val rankParser = oneOf(Rank.values().map { rank -> symbol("${rank.symbol}") mapTo { rank } })

    val cardParser = (
            succeed { rank: Rank, suite: Suite -> Card(rank, suite) }
                    keep2 rankParser
                    keep suiteParser
            )

    val handsParser = sequence(
        start = "[",
        end = "]",
        separator = ",",
        trailingSeparatorTreatment = MANDATORY,
        itemParser = cardParser
    )

    println(parser.run("(10,20)"))
    println(int.run("123"))
    println(float.run("123"))
    println(float.run("123.123"))
    println(jsonParser.run("10"))
    println(jsonParser.run("null"))
    println(leBooleanParser.run("(true || (true || false))"))
    println(letKeywordParser.run("let"))
    println(letKeywordParser.run("letters"))
    println(phpParser.run("\$txt"))
    println(phpParser.run("\$x"))
    println(zipCodeParser.run("12345"))
    println(zipCodeParser.run("test"))
    println(zipCodeParser.run("123456789"))
    println(cardParser.run("Kh"))
    println(cardParser.run("Qs"))
    println(cardParser.run("*K"))
    println(cardParser.run("KK"))
    println(handsParser.run("[Kh, Qs]"))
    println(handsParser.run("[Kh, Qs,]"))
}

Compiled from "Parser.kt"
public final class org.chalup.parser.ParserKt$WhenMappings {
  public static final int[] $EnumSwitchMapping$0;

  static {};
    Code:
       0: invokestatic  #14                 // Method org/chalup/parser/TrailingSeparatorTreatment.values:()[Lorg/chalup/parser/TrailingSeparatorTreatment;
       3: arraylength
       4: newarray       int
       6: astore_0
       7: nop
       8: aload_0
       9: getstatic     #18                 // Field org/chalup/parser/TrailingSeparatorTreatment.FORBIDDEN:Lorg/chalup/parser/TrailingSeparatorTreatment;
      12: invokevirtual #22                 // Method org/chalup/parser/TrailingSeparatorTreatment.ordinal:()I
      15: iconst_1
      16: iastore
      17: goto          21
      20: astore_1
      21: nop
      22: aload_0
      23: getstatic     #25                 // Field org/chalup/parser/TrailingSeparatorTreatment.OPTIONAL:Lorg/chalup/parser/TrailingSeparatorTreatment;
      26: invokevirtual #22                 // Method org/chalup/parser/TrailingSeparatorTreatment.ordinal:()I
      29: iconst_2
      30: iastore
      31: goto          35
      34: astore_1
      35: nop
      36: aload_0
      37: getstatic     #28                 // Field org/chalup/parser/TrailingSeparatorTreatment.MANDATORY:Lorg/chalup/parser/TrailingSeparatorTreatment;
      40: invokevirtual #22                 // Method org/chalup/parser/TrailingSeparatorTreatment.ordinal:()I
      43: iconst_3
      44: iastore
      45: goto          49
      48: astore_1
      49: aload_0
      50: putstatic     #32                 // Field $EnumSwitchMapping$0:[I
      53: return
    Exception table:
       from    to  target type
           7    17    20   Class java/lang/NoSuchFieldError
          21    31    34   Class java/lang/NoSuchFieldError
          35    45    48   Class java/lang/NoSuchFieldError
}

Compiled from "Parser.kt"
public final class org.chalup.parser.ParserKt {
  private static final org.chalup.parser.Parser<java.lang.Integer> int;

  private static final org.chalup.parser.Parser<java.lang.Float> float;

  private static final org.chalup.parser.Parser<kotlin.Unit> spaces;

  public static final kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer> isSubstring(java.lang.String, int, int, int, java.lang.String);
    Code:
       0: aload_0
       1: ldc           #10                 // String str
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload         4
       8: ldc           #18                 // String bigString
      10: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      13: iload_1
      14: istore        5
      16: iload_2
      17: istore        6
      19: iload_3
      20: istore        7
      22: iload_1
      23: aload_0
      24: invokevirtual #24                 // Method java/lang/String.length:()I
      27: iadd
      28: aload         4
      30: invokevirtual #24                 // Method java/lang/String.length:()I
      33: if_icmpgt     40
      36: iconst_1
      37: goto          41
      40: iconst_0
      41: istore        8
      43: iconst_0
      44: istore        9
      46: iload         8
      48: ifeq          131
      51: iload         9
      53: aload_0
      54: invokevirtual #24                 // Method java/lang/String.length:()I
      57: if_icmpge     131
      60: aload         4
      62: iload         5
      64: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      67: bipush        10
      69: if_icmpne     76
      72: iconst_1
      73: goto          77
      76: iconst_0
      77: istore        10
      79: aload_0
      80: iload         9
      82: iinc          9, 1
      85: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      88: aload         4
      90: iload         5
      92: iinc          5, 1
      95: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      98: if_icmpne     105
     101: iconst_1
     102: goto          106
     105: iconst_0
     106: istore        8
     108: iload         10
     110: ifeq          122
     113: iinc          6, 1
     116: iconst_1
     117: istore        7
     119: goto          46
     122: iload         7
     124: iinc          7, 1
     127: pop
     128: goto          46
     131: new           #30                 // class kotlin/Triple
     134: dup
     135: iload         8
     137: ifeq          145
     140: iload         5
     142: goto          146
     145: iconst_m1
     146: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     149: iload         6
     151: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     154: iload         7
     156: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     159: invokespecial #40                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
     162: areturn

  public static final org.chalup.parser.Parser<java.lang.Integer> getInt();
    Code:
       0: getstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
       3: areturn

  public static final org.chalup.parser.Parser<java.lang.Float> getFloat();
    Code:
       0: getstatic     #64                 // Field float:Lorg/chalup/parser/Parser;
       3: areturn

  public static final <T> org.chalup.parser.Parser<T> number(org.chalup.parser.NumberContext<? extends T>);
    Code:
       0: aload_0
       1: ldc           #69                 // String context
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #71                 // class org/chalup/parser/Parser
       9: dup
      10: aload_0
      11: invokedynamic #91,  0             // InvokeDynamic #0:invoke:(Lorg/chalup/parser/NumberContext;)Lkotlin/jvm/functions/Function1;
      16: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      19: areturn

  public static final kotlin.Pair<java.lang.Integer, java.lang.Integer> consumeBase(int, int, java.lang.String);
    Code:
       0: aload_2
       1: ldc           #100                // String string
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: iconst_0
       7: istore_3
       8: iload_1
       9: istore        4
      11: iload         4
      13: aload_2
      14: invokevirtual #24                 // Method java/lang/String.length:()I
      17: if_icmpge     58
      20: aload_2
      21: iload         4
      23: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      26: bipush        48
      28: isub
      29: istore        5
      31: iload         5
      33: iflt          58
      36: iload         5
      38: iload_0
      39: if_icmplt     45
      42: goto          58
      45: iload_0
      46: iload_3
      47: imul
      48: iload         5
      50: iadd
      51: istore_3
      52: iinc          4, 1
      55: goto          11
      58: iload         4
      60: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      63: iload_3
      64: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      67: invokestatic  #106                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      70: areturn

  public static final <T> org.chalup.parser.ParserStep<T> finalizeFloat(org.chalup.parser.NumberContext<? extends T>, int, int, org.chalup.parser.State);
    Code:
       0: aload_0
       1: ldc           #69                 // String context
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_3
       7: ldc           #114                // String s
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iload_1
      13: aload_3
      14: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      17: invokestatic  #124                // Method consumeDotAndExp:(ILjava/lang/String;)I
      20: istore        4
      22: nop
      23: iload         4
      25: ifge          72
      28: new           #126                // class org/chalup/parser/ParserStep$Bad
      31: dup
      32: iconst_1
      33: new           #128                // class org/chalup/parser/DeadEnd
      36: dup
      37: aload_3
      38: invokevirtual #131                // Method org/chalup/parser/State.getRow:()I
      41: aload_3
      42: invokevirtual #134                // Method org/chalup/parser/State.getCol:()I
      45: iload         4
      47: aload_3
      48: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      51: iadd
      52: isub
      53: aload_0
      54: invokevirtual #143                // Method org/chalup/parser/NumberContext.getInvalid:()Lorg/chalup/parser/Problem;
      57: invokespecial #146                // Method org/chalup/parser/DeadEnd."<init>":(IILorg/chalup/parser/Problem;)V
      60: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      63: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      66: checkcast     #157                // class org/chalup/parser/ParserStep
      69: goto          298
      72: aload_3
      73: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      76: iload         4
      78: if_icmpne     103
      81: new           #126                // class org/chalup/parser/ParserStep$Bad
      84: dup
      85: iconst_0
      86: aload_3
      87: aload_0
      88: invokevirtual #160                // Method org/chalup/parser/NumberContext.getExpecting:()Lorg/chalup/parser/Problem;
      91: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      94: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      97: checkcast     #157                // class org/chalup/parser/ParserStep
     100: goto          298
     103: iload_1
     104: iload         4
     106: if_icmpne     130
     109: aload_0
     110: invokevirtual #143                // Method org/chalup/parser/NumberContext.getInvalid:()Lorg/chalup/parser/Problem;
     113: aload_0
     114: invokevirtual #167                // Method org/chalup/parser/NumberContext.getInt:()Lorg/chalup/parser/Result;
     117: aload_3
     118: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
     121: iload_1
     122: iload_2
     123: aload_3
     124: invokestatic  #171                // Method finalizeInt:(Lorg/chalup/parser/Problem;Lorg/chalup/parser/Result;IIILorg/chalup/parser/State;)Lorg/chalup/parser/ParserStep;
     127: goto          298
     130: aload_0
     131: invokevirtual #173                // Method org/chalup/parser/NumberContext.getFloat:()Lorg/chalup/parser/Result;
     134: astore        5
     136: aload         5
     138: instanceof    #175                // class org/chalup/parser/Result$Error
     141: ifeq          173
     144: new           #126                // class org/chalup/parser/ParserStep$Bad
     147: dup
     148: iconst_1
     149: new           #128                // class org/chalup/parser/DeadEnd
     152: dup
     153: aload_3
     154: aload_0
     155: invokevirtual #143                // Method org/chalup/parser/NumberContext.getInvalid:()Lorg/chalup/parser/Problem;
     158: invokespecial #178                // Method org/chalup/parser/DeadEnd."<init>":(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)V
     161: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
     164: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     167: checkcast     #157                // class org/chalup/parser/ParserStep
     170: goto          298
     173: aload         5
     175: instanceof    #180                // class org/chalup/parser/Result$Ok
     178: ifeq          290
     181: aload_3
     182: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
     185: aload_3
     186: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
     189: iload         4
     191: invokevirtual #184                // Method java/lang/String.substring:(II)Ljava/lang/String;
     194: dup
     195: ldc           #186                // String substring(...)
     197: invokestatic  #189                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     200: invokestatic  #195                // Method kotlin/text/StringsKt.toFloatOrNull:(Ljava/lang/String;)Ljava/lang/Float;
     203: astore        6
     205: aload         6
     207: ifnull        268
     210: aload         6
     212: checkcast     #197                // class java/lang/Number
     215: invokevirtual #201                // Method java/lang/Number.floatValue:()F
     218: fstore        7
     220: iconst_0
     221: istore        8
     223: new           #203                // class org/chalup/parser/ParserStep$Good
     226: dup
     227: iconst_1
     228: aload_0
     229: invokevirtual #173                // Method org/chalup/parser/NumberContext.getFloat:()Lorg/chalup/parser/Result;
     232: checkcast     #180                // class org/chalup/parser/Result$Ok
     235: invokevirtual #207                // Method org/chalup/parser/Result$Ok.getValue:()Ljava/lang/Object;
     238: checkcast     #209                // class kotlin/jvm/functions/Function1
     241: fload         7
     243: invokestatic  #214                // Method java/lang/Float.valueOf:(F)Ljava/lang/Float;
     246: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
     251: aload_3
     252: iload         4
     254: invokestatic  #220                // Method bumpOffset:(Lorg/chalup/parser/State;I)Lorg/chalup/parser/State;
     257: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     260: nop
     261: nop
     262: checkcast     #157                // class org/chalup/parser/ParserStep
     265: goto          298
     268: new           #126                // class org/chalup/parser/ParserStep$Bad
     271: dup
     272: iconst_1
     273: aload_3
     274: aload_0
     275: invokevirtual #143                // Method org/chalup/parser/NumberContext.getInvalid:()Lorg/chalup/parser/Problem;
     278: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
     281: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     284: checkcast     #157                // class org/chalup/parser/ParserStep
     287: goto          298
     290: new           #225                // class kotlin/NoWhenBranchMatchedException
     293: dup
     294: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     297: athrow
     298: areturn

  public static final <T> org.chalup.parser.ParserStep<T> finalizeInt(org.chalup.parser.Problem, org.chalup.parser.Result<? extends org.chalup.parser.Problem, ? extends kotlin.jvm.functions.Function1<? super java.lang.Integer, ? extends T>>, int, int, int, org.chalup.parser.State);
    Code:
       0: aload_0
       1: ldc           #240                // String invalid
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #242                // String handler
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload         5
      14: ldc           #114                // String s
      16: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      19: aload_1
      20: astore        6
      22: aload         6
      24: instanceof    #175                // class org/chalup/parser/Result$Error
      27: ifeq          59
      30: new           #126                // class org/chalup/parser/ParserStep$Bad
      33: dup
      34: iconst_1
      35: aload         5
      37: aload_1
      38: checkcast     #175                // class org/chalup/parser/Result$Error
      41: invokevirtual #245                // Method org/chalup/parser/Result$Error.getError:()Ljava/lang/Object;
      44: checkcast     #247                // class org/chalup/parser/Problem
      47: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      50: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      53: checkcast     #157                // class org/chalup/parser/ParserStep
      56: goto          153
      59: aload         6
      61: instanceof    #180                // class org/chalup/parser/Result$Ok
      64: ifeq          145
      67: iload_2
      68: iload_3
      69: if_icmpne     105
      72: new           #126                // class org/chalup/parser/ParserStep$Bad
      75: dup
      76: aload         5
      78: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      81: iload_2
      82: if_icmpge     89
      85: iconst_1
      86: goto          90
      89: iconst_0
      90: aload         5
      92: aload_0
      93: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      96: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      99: checkcast     #157                // class org/chalup/parser/ParserStep
     102: goto          153
     105: new           #203                // class org/chalup/parser/ParserStep$Good
     108: dup
     109: iconst_1
     110: aload_1
     111: checkcast     #180                // class org/chalup/parser/Result$Ok
     114: invokevirtual #207                // Method org/chalup/parser/Result$Ok.getValue:()Ljava/lang/Object;
     117: checkcast     #209                // class kotlin/jvm/functions/Function1
     120: iload         4
     122: invokestatic  #36                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     125: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
     130: aload         5
     132: iload_3
     133: invokestatic  #220                // Method bumpOffset:(Lorg/chalup/parser/State;I)Lorg/chalup/parser/State;
     136: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     139: checkcast     #157                // class org/chalup/parser/ParserStep
     142: goto          153
     145: new           #225                // class kotlin/NoWhenBranchMatchedException
     148: dup
     149: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     152: athrow
     153: areturn

  private static final org.chalup.parser.State bumpOffset(org.chalup.parser.State, int);
    Code:
       0: aload_0
       1: aconst_null
       2: iload_1
       3: iconst_0
       4: iconst_0
       5: aload_0
       6: invokevirtual #134                // Method org/chalup/parser/State.getCol:()I
       9: iload_1
      10: aload_0
      11: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      14: isub
      15: iadd
      16: bipush        13
      18: aconst_null
      19: invokestatic  #255                // Method org/chalup/parser/State.copy$default:(Lorg/chalup/parser/State;Ljava/lang/String;IIIIILjava/lang/Object;)Lorg/chalup/parser/State;
      22: areturn

  public static final java.util.List<org.chalup.parser.DeadEnd> fromState(org.chalup.parser.State, org.chalup.parser.Problem);
    Code:
       0: aload_0
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc_w         #259                // String x
      10: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      13: new           #128                // class org/chalup/parser/DeadEnd
      16: dup
      17: aload_0
      18: aload_1
      19: invokespecial #178                // Method org/chalup/parser/DeadEnd."<init>":(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)V
      22: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      25: areturn

  public static final int consumeDotAndExp(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #261                // String src
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: iload_0
       9: invokestatic  #265                // Method at:(Ljava/lang/String;I)Ljava/lang/Character;
      12: bipush        46
      14: istore_2
      15: dup
      16: ifnonnull     23
      19: pop
      20: goto          44
      23: invokevirtual #271                // Method java/lang/Character.charValue:()C
      26: iload_2
      27: if_icmpne     44
      30: iload_0
      31: iconst_1
      32: iadd
      33: aload_1
      34: invokestatic  #274                // Method chompBase10:(ILjava/lang/String;)I
      37: aload_1
      38: invokestatic  #277                // Method consumeExp:(ILjava/lang/String;)I
      41: goto          49
      44: iload_0
      45: aload_1
      46: invokestatic  #277                // Method consumeExp:(ILjava/lang/String;)I
      49: ireturn

  public static final int chompBase10(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #261                // String src
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: iload_0
       8: istore_2
       9: iload_2
      10: aload_1
      11: invokevirtual #24                 // Method java/lang/String.length:()I
      14: if_icmpge     50
      17: aload_1
      18: iload_2
      19: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      22: istore_3
      23: iload_3
      24: bipush        48
      26: invokestatic  #281                // Method kotlin/jvm/internal/Intrinsics.compare:(II)I
      29: iflt          50
      32: iload_3
      33: bipush        57
      35: invokestatic  #281                // Method kotlin/jvm/internal/Intrinsics.compare:(II)I
      38: ifle          44
      41: goto          50
      44: iinc          2, 1
      47: goto          9
      50: iload_2
      51: ireturn

  public static final int consumeExp(int, java.lang.String);
    Code:
       0: aload_1
       1: ldc_w         #261                // String src
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: iload_0
       9: invokestatic  #265                // Method at:(Ljava/lang/String;I)Ljava/lang/Character;
      12: bipush        101
      14: istore_2
      15: dup
      16: ifnonnull     23
      19: pop
      20: goto          30
      23: invokevirtual #271                // Method java/lang/Character.charValue:()C
      26: iload_2
      27: if_icmpeq     53
      30: aload_1
      31: iload_0
      32: invokestatic  #265                // Method at:(Ljava/lang/String;I)Ljava/lang/Character;
      35: bipush        69
      37: istore_2
      38: dup
      39: ifnonnull     46
      42: pop
      43: goto          105
      46: invokevirtual #271                // Method java/lang/Character.charValue:()C
      49: iload_2
      50: if_icmpne     105
      53: iload_0
      54: iconst_1
      55: iadd
      56: istore_2
      57: aload_1
      58: iload_2
      59: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      62: bipush        43
      64: if_icmpeq     77
      67: aload_1
      68: iload_2
      69: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      72: bipush        45
      74: if_icmpne     83
      77: iload_2
      78: iconst_1
      79: iadd
      80: goto          84
      83: iload_2
      84: istore_3
      85: iload_3
      86: aload_1
      87: invokestatic  #274                // Method chompBase10:(ILjava/lang/String;)I
      90: istore        4
      92: iload_3
      93: iload         4
      95: if_icmpne     102
      98: iload         4
     100: ineg
     101: ireturn
     102: iload         4
     104: ireturn
     105: iload_0
     106: ireturn

  public static final java.lang.Character at(java.lang.String, int);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: iload_1
       8: aload_0
       9: invokevirtual #24                 // Method java/lang/String.length:()I
      12: if_icmplt     19
      15: aconst_null
      16: goto          27
      19: aload_0
      20: iload_1
      21: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      24: invokestatic  #291                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      27: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> symbol(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #10                 // String str
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #297                // class org/chalup/parser/Token
       9: dup
      10: aload_0
      11: new           #299                // class org/chalup/parser/Problem$ExpectedSymbol
      14: dup
      15: aload_0
      16: invokespecial #302                // Method org/chalup/parser/Problem$ExpectedSymbol."<init>":(Ljava/lang/String;)V
      19: checkcast     #247                // class org/chalup/parser/Problem
      22: invokedynamic #312,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function1;
      27: invokespecial #315                // Method org/chalup/parser/Token."<init>":(Ljava/lang/String;Lorg/chalup/parser/Problem;Lkotlin/jvm/functions/Function1;)V
      30: invokestatic  #319                // Method token:(Lorg/chalup/parser/Token;)Lorg/chalup/parser/Parser;
      33: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> keyword(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #10                 // String str
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #297                // class org/chalup/parser/Token
       9: dup
      10: aload_0
      11: new           #322                // class org/chalup/parser/Problem$ExpectedKeyword
      14: dup
      15: aload_0
      16: invokespecial #323                // Method org/chalup/parser/Problem$ExpectedKeyword."<init>":(Ljava/lang/String;)V
      19: checkcast     #247                // class org/chalup/parser/Problem
      22: invokedynamic #328,  0            // InvokeDynamic #2:invoke:()Lkotlin/jvm/functions/Function1;
      27: invokespecial #315                // Method org/chalup/parser/Token."<init>":(Ljava/lang/String;Lorg/chalup/parser/Problem;Lkotlin/jvm/functions/Function1;)V
      30: invokestatic  #319                // Method token:(Lorg/chalup/parser/Token;)Lorg/chalup/parser/Parser;
      33: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> token(org.chalup.parser.Token);
    Code:
       0: aload_0
       1: ldc_w         #330                // String token
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #338,  0            // InvokeDynamic #3:invoke:(Lorg/chalup/parser/Token;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> getSpaces();
    Code:
       0: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
       3: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> chompWhile(kotlin.jvm.functions.Function1<? super java.lang.Character, java.lang.Boolean>);
    Code:
       0: aload_0
       1: ldc_w         #349                // String predicate
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #357,  0            // InvokeDynamic #4:invoke:(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final org.chalup.parser.Parser<kotlin.Unit> chompIf(kotlin.jvm.functions.Function1<? super java.lang.Character, java.lang.Boolean>);
    Code:
       0: aload_0
       1: ldc_w         #349                // String predicate
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #364,  0            // InvokeDynamic #5:invoke:(Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final int isSubChar(kotlin.jvm.functions.Function1<? super java.lang.Character, java.lang.Boolean>, int, java.lang.String);
    Code:
       0: aload_0
       1: ldc_w         #349                // String predicate
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc           #100                // String string
      10: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      13: nop
      14: aload_2
      15: invokevirtual #24                 // Method java/lang/String.length:()I
      18: iload_1
      19: if_icmpgt     26
      22: iconst_m1
      23: goto          71
      26: aload_0
      27: aload_2
      28: iload_1
      29: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      32: invokestatic  #291                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
      35: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      40: checkcast     #369                // class java/lang/Boolean
      43: invokevirtual #373                // Method java/lang/Boolean.booleanValue:()Z
      46: ifeq          70
      49: aload_2
      50: iload_1
      51: invokevirtual #28                 // Method java/lang/String.charAt:(I)C
      54: bipush        10
      56: if_icmpne     64
      59: bipush        -2
      61: goto          71
      64: iload_1
      65: iconst_1
      66: iadd
      67: goto          71
      70: iconst_m1
      71: ireturn

  public static final <T> org.chalup.parser.Parser<T> succeed(T);
    Code:
       0: new           #71                 // class org/chalup/parser/Parser
       3: dup
       4: aload_0
       5: invokedynamic #384,  0            // InvokeDynamic #6:invoke:(Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
      10: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      13: areturn

  public static final org.chalup.parser.Parser problem(java.lang.String);
    Code:
       0: aload_0
       1: ldc_w         #389                // String message
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #397,  0            // InvokeDynamic #7:invoke:(Ljava/lang/String;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final <T> org.chalup.parser.Parser<T> oneOf(java.util.List<? extends org.chalup.parser.Parser<? extends T>>);
    Code:
       0: aload_0
       1: ldc_w         #402                // String parsers
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #410,  0            // InvokeDynamic #8:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final <T> org.chalup.parser.Parser<T> oneOf(org.chalup.parser.Parser<? extends T>...);
    Code:
       0: aload_0
       1: ldc_w         #402                // String parsers
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokestatic  #419                // Method kotlin/collections/ArraysKt.asList:([Ljava/lang/Object;)Ljava/util/List;
      11: invokestatic  #421                // Method oneOf:(Ljava/util/List;)Lorg/chalup/parser/Parser;
      14: areturn

  public static final <T> org.chalup.parser.Parser<T> parser(kotlin.jvm.functions.Function1<? super org.chalup.parser.Parser<T>, org.chalup.parser.Parser<T>>);
    Code:
       0: aload_0
       1: ldc_w         #426                // String block
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #428                // class kotlin/jvm/internal/Ref$ObjectRef
      10: dup
      11: invokespecial #429                // Method kotlin/jvm/internal/Ref$ObjectRef."<init>":()V
      14: astore_1
      15: aload_1
      16: new           #71                 // class org/chalup/parser/Parser
      19: dup
      20: invokedynamic #434,  0            // InvokeDynamic #9:invoke:()Lkotlin/jvm/functions/Function1;
      25: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      28: putfield      #437                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      31: new           #71                 // class org/chalup/parser/Parser
      34: dup
      35: aload_1
      36: invokedynamic #445,  0            // InvokeDynamic #10:invoke:(Lkotlin/jvm/internal/Ref$ObjectRef;)Lkotlin/jvm/functions/Function1;
      41: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      44: astore_2
      45: aload_0
      46: aload_2
      47: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      52: astore_3
      53: aload_3
      54: checkcast     #71                 // class org/chalup/parser/Parser
      57: astore        4
      59: iconst_0
      60: istore        5
      62: aload_1
      63: aload         4
      65: putfield      #437                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      68: aload_3
      69: checkcast     #71                 // class org/chalup/parser/Parser
      72: areturn

  public static final <T, R> org.chalup.parser.Parser<R> map(kotlin.jvm.functions.Function1<? super T, ? extends R>, org.chalup.parser.Parser<T>);
    Code:
       0: aload_0
       1: ldc_w         #454                // String func
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #455                // String parser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: new           #71                 // class org/chalup/parser/Parser
      17: dup
      18: aload_1
      19: aload_0
      20: invokedynamic #463,  0            // InvokeDynamic #11:invoke:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
      25: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      28: areturn

  public static final <T, R> org.chalup.parser.Parser<R> mapTo(org.chalup.parser.Parser<T>, kotlin.jvm.functions.Function1<? super T, ? extends R>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #454                // String func
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_1
      15: aload_0
      16: invokestatic  #468                // Method map:(Lkotlin/jvm/functions/Function1;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      19: areturn

  public static final <T1, T2, R> org.chalup.parser.Parser<R> map2(kotlin.jvm.functions.Function2<? super T1, ? super T2, ? extends R>, org.chalup.parser.Parser<T1>, org.chalup.parser.Parser<T2>);
    Code:
       0: aload_0
       1: ldc_w         #454                // String func
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #474                // String parserA
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #476                // String parserB
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: new           #71                 // class org/chalup/parser/Parser
      24: dup
      25: aload_1
      26: aload_2
      27: aload_0
      28: invokedynamic #484,  0            // InvokeDynamic #12:invoke:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function2;)Lkotlin/jvm/functions/Function1;
      33: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      36: areturn

  public static final org.chalup.parser.Parser<java.lang.String> getChompedString(org.chalup.parser.Parser<?>);
    Code:
       0: aload_0
       1: ldc_w         #455                // String parser
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: invokedynamic #496,  0            // InvokeDynamic #13:invoke:(Lorg/chalup/parser/Parser;)Lkotlin/jvm/functions/Function1;
      17: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      20: areturn

  public static final <T, R> org.chalup.parser.Parser<R> andThen(org.chalup.parser.Parser<T>, kotlin.jvm.functions.Function1<? super T, ? extends org.chalup.parser.Parser<? extends R>>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #454                // String func
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: new           #71                 // class org/chalup/parser/Parser
      17: dup
      18: aload_0
      19: aload_1
      20: invokedynamic #503,  0            // InvokeDynamic #14:invoke:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
      25: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      28: areturn

  public static final <T, R> org.chalup.parser.Parser<R> keep(org.chalup.parser.Parser<kotlin.jvm.functions.Function1<T, R>>, org.chalup.parser.Parser<T>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #509                // String keepParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: invokedynamic #520,  0            // InvokeDynamic #15:invoke:()Lkotlin/jvm/functions/Function2;
      19: aload_0
      20: aload_1
      21: invokestatic  #522                // Method map2:(Lkotlin/jvm/functions/Function2;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      24: areturn

  public static final <T1, T2, R> org.chalup.parser.Parser<kotlin.jvm.functions.Function1<T2, R>> keep2(org.chalup.parser.Parser<kotlin.jvm.functions.Function2<T1, T2, R>>, org.chalup.parser.Parser<T1>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #509                // String keepParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: invokedynamic #532,  0            // InvokeDynamic #16:invoke:()Lkotlin/jvm/functions/Function2;
      19: aload_0
      20: aload_1
      21: invokestatic  #522                // Method map2:(Lkotlin/jvm/functions/Function2;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      24: areturn

  public static final <KeepT, SkipT> org.chalup.parser.Parser<KeepT> skip(org.chalup.parser.Parser<KeepT>, org.chalup.parser.Parser<SkipT>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #536                // String skip
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: invokedynamic #541,  0            // InvokeDynamic #17:invoke:()Lkotlin/jvm/functions/Function2;
      19: aload_0
      20: aload_1
      21: invokestatic  #522                // Method map2:(Lkotlin/jvm/functions/Function2;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      24: areturn

  public static final <S, T> org.chalup.parser.Parser<T> loop(S, kotlin.jvm.functions.Function1<? super S, org.chalup.parser.Parser<org.chalup.parser.LoopStep<S, T>>>);
    Code:
       0: aload_1
       1: ldc_w         #547                // String callback
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #71                 // class org/chalup/parser/Parser
      10: dup
      11: aload_0
      12: aload_1
      13: invokedynamic #555,  0            // InvokeDynamic #18:invoke:(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lkotlin/jvm/functions/Function1;
      18: invokespecial #94                 // Method org/chalup/parser/Parser."<init>":(Lkotlin/jvm/functions/Function1;)V
      21: areturn

  public static final <SkipT, KeepT> org.chalup.parser.Parser<KeepT> skipThen(org.chalup.parser.Parser<SkipT>, org.chalup.parser.Parser<KeepT>);
    Code:
       0: aload_0
       1: ldc_w         #288                // String <this>
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #559                // String keep
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: invokedynamic #564,  0            // InvokeDynamic #19:invoke:()Lkotlin/jvm/functions/Function2;
      19: aload_0
      20: aload_1
      21: invokestatic  #522                // Method map2:(Lkotlin/jvm/functions/Function2;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      24: areturn

  public static final <T> org.chalup.parser.Parser<java.util.List<T>> sequence(java.lang.String, java.lang.String, java.lang.String, org.chalup.parser.TrailingSeparatorTreatment, org.chalup.parser.Parser<T>, org.chalup.parser.Parser<kotlin.Unit>);
    Code:
       0: aload_0
       1: ldc_w         #570                // String start
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #572                // String separator
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #574                // String end
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: aload_3
      22: ldc_w         #576                // String trailingSeparatorTreatment
      25: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      28: aload         4
      30: ldc_w         #578                // String itemParser
      33: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      36: aload         5
      38: ldc_w         #580                // String spacesParser
      41: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      44: aload_0
      45: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      48: aload         5
      50: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      53: aload_2
      54: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      57: astore        6
      59: aload_1
      60: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      63: astore        7
      65: aload         6
      67: aload         5
      69: aload         4
      71: aload         7
      73: aload_3
      74: invokestatic  #588                // Method sequenceEnd:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/TrailingSeparatorTreatment;)Lorg/chalup/parser/Parser;
      77: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      80: areturn

  public static org.chalup.parser.Parser sequence$default(java.lang.String, java.lang.String, java.lang.String, org.chalup.parser.TrailingSeparatorTreatment, org.chalup.parser.Parser, org.chalup.parser.Parser, int, java.lang.Object);
    Code:
       0: iload         6
       2: bipush        32
       4: iand
       5: ifeq          13
       8: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
      11: astore        5
      13: aload_0
      14: aload_1
      15: aload_2
      16: aload_3
      17: aload         4
      19: aload         5
      21: invokestatic  #593                // Method sequence:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/chalup/parser/TrailingSeparatorTreatment;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      24: areturn

  public static final <T> org.chalup.parser.Parser<java.util.List<T>> sequenceEnd(org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<T>, org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.TrailingSeparatorTreatment);
    Code:
       0: aload_0
       1: ldc_w         #596                // String endParser
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #580                // String spacesParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #578                // String itemParser
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: aload_3
      22: ldc_w         #598                // String separatorParser
      25: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      28: aload         4
      30: ldc_w         #576                // String trailingSeparatorTreatment
      33: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      36: aload         4
      38: aload_1
      39: aload_3
      40: aload_0
      41: aload_2
      42: invokedynamic #607,  0            // InvokeDynamic #20:invoke:(Lorg/chalup/parser/TrailingSeparatorTreatment;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lkotlin/jvm/functions/Function1;
      47: astore        5
      49: iconst_2
      50: anewarray     #71                 // class org/chalup/parser/Parser
      53: astore        6
      55: aload         6
      57: iconst_0
      58: aload_2
      59: aload         5
      61: invokestatic  #609                // Method andThen:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      64: aastore
      65: aload         6
      67: iconst_1
      68: aload_0
      69: invokedynamic #616,  0            // InvokeDynamic #21:invoke:()Lkotlin/jvm/functions/Function1;
      74: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      77: aastore
      78: aload         6
      80: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      83: areturn

  public static final <T> org.chalup.parser.Parser<org.chalup.parser.LoopStep<java.util.List<T>, java.util.List<T>>> sequenceEndForbidden(org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<T>, org.chalup.parser.Parser<kotlin.Unit>, java.util.List<? extends T>);
    Code:
       0: aload_0
       1: ldc_w         #596                // String endParser
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #580                // String spacesParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #578                // String itemParser
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: aload_3
      22: ldc_w         #598                // String separatorParser
      25: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      28: aload         4
      30: ldc_w         #626                // String items
      33: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      36: aload_1
      37: iconst_2
      38: anewarray     #71                 // class org/chalup/parser/Parser
      41: astore        5
      43: aload         5
      45: iconst_0
      46: aload_3
      47: aload_1
      48: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      51: aload_2
      52: aload         4
      54: invokedynamic #634,  0            // InvokeDynamic #22:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      59: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      62: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      65: aastore
      66: aload         5
      68: iconst_1
      69: aload_0
      70: aload         4
      72: invokedynamic #642,  0            // InvokeDynamic #23:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      77: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      80: aastore
      81: aload         5
      83: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      86: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      89: areturn

  public static final <T> org.chalup.parser.Parser<org.chalup.parser.LoopStep<java.util.List<T>, java.util.List<T>>> sequenceEndOptional(org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<T>, org.chalup.parser.Parser<kotlin.Unit>, java.util.List<? extends T>);
    Code:
       0: aload_0
       1: ldc_w         #596                // String endParser
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #580                // String spacesParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #578                // String itemParser
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: aload_3
      22: ldc_w         #598                // String separatorParser
      25: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      28: aload         4
      30: ldc_w         #626                // String items
      33: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      36: aload_0
      37: aload         4
      39: invokedynamic #648,  0            // InvokeDynamic #24:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      44: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      47: astore        5
      49: aload_1
      50: iconst_2
      51: anewarray     #71                 // class org/chalup/parser/Parser
      54: astore        6
      56: aload         6
      58: iconst_0
      59: aload_3
      60: aload_1
      61: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      64: iconst_2
      65: anewarray     #71                 // class org/chalup/parser/Parser
      68: astore        7
      70: aload         7
      72: iconst_0
      73: aload_2
      74: aload         4
      76: invokedynamic #653,  0            // InvokeDynamic #25:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      81: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      84: aastore
      85: aload         7
      87: iconst_1
      88: aload         5
      90: aastore
      91: aload         7
      93: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      96: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      99: aastore
     100: aload         6
     102: iconst_1
     103: aload         5
     105: aastore
     106: aload         6
     108: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     111: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     114: areturn

  public static final <T> org.chalup.parser.Parser<org.chalup.parser.LoopStep<java.util.List<T>, java.util.List<T>>> sequenceEndMandatory(org.chalup.parser.Parser<kotlin.Unit>, org.chalup.parser.Parser<T>, org.chalup.parser.Parser<kotlin.Unit>, java.util.List<? extends T>);
    Code:
       0: aload_0
       1: ldc_w         #580                // String spacesParser
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #578                // String itemParser
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_2
      15: ldc_w         #598                // String separatorParser
      18: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      21: aload_3
      22: ldc_w         #626                // String items
      25: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      28: iconst_2
      29: anewarray     #71                 // class org/chalup/parser/Parser
      32: astore        4
      34: aload         4
      36: iconst_0
      37: aload_1
      38: aload_0
      39: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      42: aload_2
      43: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      46: aload_0
      47: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      50: aload_3
      51: invokedynamic #664,  0            // InvokeDynamic #26:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      56: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      59: aastore
      60: aload         4
      62: iconst_1
      63: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      66: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      69: aload_3
      70: invokedynamic #677,  0            // InvokeDynamic #27:invoke:(Ljava/util/List;)Lkotlin/jvm/functions/Function1;
      75: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      78: aastore
      79: aload         4
      81: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      84: areturn

  public static final void main();
    Code:
       0: invokedynamic #684,  0            // InvokeDynamic #28:invoke:()Lkotlin/jvm/functions/Function1;
       5: invokestatic  #686                // Method parser:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
       8: astore_0
       9: iconst_4
      10: anewarray     #71                 // class org/chalup/parser/Parser
      13: astore_2
      14: aload_2
      15: iconst_0
      16: getstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
      19: invokedynamic #694,  0            // InvokeDynamic #29:invoke:()Lkotlin/jvm/functions/Function1;
      24: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      27: aastore
      28: aload_2
      29: iconst_1
      30: ldc_w         #696                // String true
      33: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      36: invokedynamic #705,  0            // InvokeDynamic #30:invoke:()Lkotlin/jvm/functions/Function1;
      41: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      44: aastore
      45: aload_2
      46: iconst_2
      47: ldc_w         #707                // String false
      50: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      53: invokedynamic #712,  0            // InvokeDynamic #31:invoke:()Lkotlin/jvm/functions/Function1;
      58: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      61: aastore
      62: aload_2
      63: iconst_3
      64: ldc_w         #714                // String null
      67: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      70: invokedynamic #721,  0            // InvokeDynamic #32:invoke:()Lkotlin/jvm/functions/Function1;
      75: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      78: aastore
      79: aload_2
      80: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      83: astore_1
      84: invokedynamic #729,  0            // InvokeDynamic #33:invoke:()Lkotlin/jvm/functions/Function2;
      89: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      92: ldc_w         #731                // String (
      95: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      98: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     101: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     104: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     107: getstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
     110: invokestatic  #733                // Method keep2:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     113: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     116: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     119: ldc_w         #735                // String ,
     122: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     125: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     128: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     131: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     134: getstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
     137: invokestatic  #737                // Method keep:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     140: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     143: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     146: ldc_w         #739                // String )
     149: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     152: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     155: astore_2
     156: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     159: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
     162: invokedynamic #744,  0            // InvokeDynamic #34:invoke:()Lkotlin/jvm/functions/Function1;
     167: invokestatic  #746                // Method chompIf:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     170: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     173: invokedynamic #751,  0            // InvokeDynamic #35:invoke:()Lkotlin/jvm/functions/Function1;
     178: invokestatic  #746                // Method chompIf:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     181: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     184: invokedynamic #756,  0            // InvokeDynamic #36:invoke:()Lkotlin/jvm/functions/Function1;
     189: invokestatic  #758                // Method chompWhile:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     192: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     195: invokestatic  #760                // Method getChompedString:(Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     198: astore_3
     199: invokedynamic #765,  0            // InvokeDynamic #37:invoke:()Lkotlin/jvm/functions/Function1;
     204: invokestatic  #758                // Method chompWhile:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     207: invokestatic  #760                // Method getChompedString:(Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     210: invokedynamic #771,  0            // InvokeDynamic #38:invoke:()Lkotlin/jvm/functions/Function1;
     215: invokestatic  #609                // Method andThen:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     218: astore        4
     220: ldc_w         #773                // String let
     223: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     226: astore        5
     228: invokestatic  #779                // Method org/chalup/parser/Suite.values:()[Lorg/chalup/parser/Suite;
     231: astore        7
     233: iconst_0
     234: istore        8
     236: aload         7
     238: astore        9
     240: new           #781                // class java/util/ArrayList
     243: dup
     244: aload         7
     246: arraylength
     247: invokespecial #784                // Method java/util/ArrayList."<init>":(I)V
     250: checkcast     #786                // class java/util/Collection
     253: astore        10
     255: iconst_0
     256: istore        11
     258: iconst_0
     259: istore        12
     261: aload         9
     263: arraylength
     264: istore        13
     266: iload         12
     268: iload         13
     270: if_icmpge     327
     273: aload         9
     275: iload         12
     277: aaload
     278: astore        14
     280: aload         10
     282: aload         14
     284: astore        15
     286: astore        18
     288: iconst_0
     289: istore        16
     291: aload         15
     293: invokevirtual #789                // Method org/chalup/parser/Suite.getSymbol:()C
     296: invokestatic  #792                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
     299: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     302: aload         15
     304: invokedynamic #802,  0            // InvokeDynamic #39:invoke:(Lorg/chalup/parser/Suite;)Lkotlin/jvm/functions/Function1;
     309: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     312: aload         18
     314: swap
     315: invokeinterface #806,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     320: pop
     321: iinc          12, 1
     324: goto          266
     327: aload         10
     329: checkcast     #808                // class java/util/List
     332: nop
     333: invokestatic  #421                // Method oneOf:(Ljava/util/List;)Lorg/chalup/parser/Parser;
     336: astore        6
     338: invokestatic  #813                // Method org/chalup/parser/Rank.values:()[Lorg/chalup/parser/Rank;
     341: astore        8
     343: iconst_0
     344: istore        9
     346: aload         8
     348: astore        10
     350: new           #781                // class java/util/ArrayList
     353: dup
     354: aload         8
     356: arraylength
     357: invokespecial #784                // Method java/util/ArrayList."<init>":(I)V
     360: checkcast     #786                // class java/util/Collection
     363: astore        11
     365: iconst_0
     366: istore        12
     368: iconst_0
     369: istore        13
     371: aload         10
     373: arraylength
     374: istore        14
     376: iload         13
     378: iload         14
     380: if_icmpge     437
     383: aload         10
     385: iload         13
     387: aaload
     388: astore        15
     390: aload         11
     392: aload         15
     394: astore        16
     396: astore        18
     398: iconst_0
     399: istore        17
     401: aload         16
     403: invokevirtual #814                // Method org/chalup/parser/Rank.getSymbol:()C
     406: invokestatic  #792                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
     409: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     412: aload         16
     414: invokedynamic #824,  0            // InvokeDynamic #40:invoke:(Lorg/chalup/parser/Rank;)Lkotlin/jvm/functions/Function1;
     419: invokestatic  #618                // Method mapTo:(Lorg/chalup/parser/Parser;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     422: aload         18
     424: swap
     425: invokeinterface #806,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     430: pop
     431: iinc          13, 1
     434: goto          376
     437: aload         11
     439: checkcast     #808                // class java/util/List
     442: nop
     443: invokestatic  #421                // Method oneOf:(Ljava/util/List;)Lorg/chalup/parser/Parser;
     446: astore        7
     448: invokedynamic #831,  0            // InvokeDynamic #41:invoke:()Lkotlin/jvm/functions/Function2;
     453: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
     456: aload         7
     458: invokestatic  #733                // Method keep2:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     461: aload         6
     463: invokestatic  #737                // Method keep:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     466: astore        8
     468: getstatic     #836                // Field org/chalup/parser/TrailingSeparatorTreatment.MANDATORY:Lorg/chalup/parser/TrailingSeparatorTreatment;
     471: astore        10
     473: ldc_w         #838                // String [
     476: ldc_w         #735                // String ,
     479: ldc_w         #840                // String ]
     482: aload         10
     484: aload         8
     486: aconst_null
     487: bipush        32
     489: aconst_null
     490: invokestatic  #842                // Method sequence$default:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/chalup/parser/TrailingSeparatorTreatment;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;ILjava/lang/Object;)Lorg/chalup/parser/Parser;
     493: astore        9
     495: aload_2
     496: ldc_w         #844                // String (10,20)
     499: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     502: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     505: swap
     506: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     509: getstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
     512: ldc_w         #862                // String 123
     515: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     518: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     521: swap
     522: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     525: getstatic     #64                 // Field float:Lorg/chalup/parser/Parser;
     528: ldc_w         #862                // String 123
     531: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     534: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     537: swap
     538: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     541: getstatic     #64                 // Field float:Lorg/chalup/parser/Parser;
     544: ldc_w         #864                // String 123.123
     547: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     550: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     553: swap
     554: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     557: aload_1
     558: ldc_w         #866                // String 10
     561: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     564: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     567: swap
     568: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     571: aload_1
     572: ldc_w         #714                // String null
     575: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     578: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     581: swap
     582: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     585: aload_0
     586: ldc_w         #868                // String (true || (true || false))
     589: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     592: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     595: swap
     596: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     599: aload         5
     601: ldc_w         #773                // String let
     604: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     607: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     610: swap
     611: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     614: aload         5
     616: ldc_w         #870                // String letters
     619: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     622: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     625: swap
     626: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     629: aload_3
     630: ldc_w         #872                // String $txt
     633: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     636: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     639: swap
     640: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     643: aload_3
     644: ldc_w         #874                // String $x
     647: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     650: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     653: swap
     654: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     657: aload         4
     659: ldc_w         #876                // String 12345
     662: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     665: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     668: swap
     669: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     672: aload         4
     674: ldc_w         #878                // String test
     677: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     680: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     683: swap
     684: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     687: aload         4
     689: ldc_w         #880                // String 123456789
     692: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     695: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     698: swap
     699: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     702: aload         8
     704: ldc_w         #882                // String Kh
     707: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     710: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     713: swap
     714: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     717: aload         8
     719: ldc_w         #884                // String Qs
     722: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     725: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     728: swap
     729: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     732: aload         8
     734: ldc_w         #886                // String *K
     737: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     740: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     743: swap
     744: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     747: aload         8
     749: ldc_w         #888                // String KK
     752: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     755: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     758: swap
     759: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     762: aload         9
     764: ldc_w         #890                // String [Kh, Qs]
     767: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     770: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     773: swap
     774: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     777: aload         9
     779: ldc_w         #892                // String [Kh, Qs,]
     782: invokevirtual #848                // Method org/chalup/parser/Parser.run:(Ljava/lang/String;)Lorg/chalup/parser/Result;
     785: getstatic     #854                // Field java/lang/System.out:Ljava/io/PrintStream;
     788: swap
     789: invokevirtual #860                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     792: return

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

  private static final int int$lambda$0(int);
    Code:
       0: iload_0
       1: ireturn

  private static final float float$lambda$1(int);
    Code:
       0: iload_0
       1: i2f
       2: freturn

  private static final float float$lambda$2(float);
    Code:
       0: fload_0
       1: freturn

  private static final org.chalup.parser.ParserStep number$lambda$3(org.chalup.parser.NumberContext, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: bipush        10
       8: aload_1
       9: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      12: aload_1
      13: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      16: invokestatic  #932                // Method consumeBase:(IILjava/lang/String;)Lkotlin/Pair;
      19: astore_2
      20: aload_2
      21: invokevirtual #937                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      24: checkcast     #197                // class java/lang/Number
      27: invokevirtual #940                // Method java/lang/Number.intValue:()I
      30: istore_3
      31: aload_2
      32: invokevirtual #943                // Method kotlin/Pair.component2:()Ljava/lang/Object;
      35: checkcast     #197                // class java/lang/Number
      38: invokevirtual #940                // Method java/lang/Number.intValue:()I
      41: istore        4
      43: aload_0
      44: iload_3
      45: iload         4
      47: aload_1
      48: invokestatic  #945                // Method finalizeFloat:(Lorg/chalup/parser/NumberContext;IILorg/chalup/parser/State;)Lorg/chalup/parser/ParserStep;
      51: areturn

  private static final boolean symbol$lambda$5(char);
    Code:
       0: iconst_0
       1: ireturn

  private static final boolean keyword$lambda$6(char);
    Code:
       0: iload_0
       1: invokestatic  #949                // Method java/lang/Character.isLetterOrDigit:(C)Z
       4: ifne          13
       7: iload_0
       8: bipush        95
      10: if_icmpne     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ireturn

  private static final org.chalup.parser.ParserStep token$lambda$7(org.chalup.parser.Token, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #952                // Method org/chalup/parser/Token.getStr:()Ljava/lang/String;
      10: aload_1
      11: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      14: aload_1
      15: invokevirtual #131                // Method org/chalup/parser/State.getRow:()I
      18: aload_1
      19: invokevirtual #134                // Method org/chalup/parser/State.getCol:()I
      22: aload_1
      23: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      26: invokestatic  #954                // Method isSubstring:(Ljava/lang/String;IIILjava/lang/String;)Lkotlin/Triple;
      29: astore_2
      30: aload_2
      31: invokevirtual #955                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      34: checkcast     #197                // class java/lang/Number
      37: invokevirtual #940                // Method java/lang/Number.intValue:()I
      40: istore_3
      41: aload_2
      42: invokevirtual #956                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      45: checkcast     #197                // class java/lang/Number
      48: invokevirtual #940                // Method java/lang/Number.intValue:()I
      51: istore        4
      53: aload_2
      54: invokevirtual #959                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      57: checkcast     #197                // class java/lang/Number
      60: invokevirtual #940                // Method java/lang/Number.intValue:()I
      63: istore        5
      65: iload_3
      66: iconst_m1
      67: if_icmpeq     85
      70: aload_0
      71: invokevirtual #962                // Method org/chalup/parser/Token.getDelimiterPredicate:()Lkotlin/jvm/functions/Function1;
      74: iload_3
      75: aload_1
      76: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      79: invokestatic  #964                // Method isSubChar:(Lkotlin/jvm/functions/Function1;ILjava/lang/String;)I
      82: iflt          107
      85: new           #126                // class org/chalup/parser/ParserStep$Bad
      88: dup
      89: iconst_0
      90: aload_1
      91: aload_0
      92: invokevirtual #967                // Method org/chalup/parser/Token.getProblem:()Lorg/chalup/parser/Problem;
      95: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      98: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     101: checkcast     #157                // class org/chalup/parser/ParserStep
     104: goto          153
     107: new           #203                // class org/chalup/parser/ParserStep$Good
     110: dup
     111: aload_0
     112: invokevirtual #952                // Method org/chalup/parser/Token.getStr:()Ljava/lang/String;
     115: checkcast     #969                // class java/lang/CharSequence
     118: invokeinterface #970,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     123: ifle          130
     126: iconst_1
     127: goto          131
     130: iconst_0
     131: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     134: aload_1
     135: aconst_null
     136: iload_3
     137: iconst_0
     138: iload         4
     140: iload         5
     142: iconst_5
     143: aconst_null
     144: invokestatic  #255                // Method org/chalup/parser/State.copy$default:(Lorg/chalup/parser/State;Ljava/lang/String;IIIIILjava/lang/Object;)Lorg/chalup/parser/State;
     147: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     150: checkcast     #157                // class org/chalup/parser/ParserStep
     153: areturn

  private static final boolean spaces$lambda$8(char);
    Code:
       0: iload_0
       1: invokestatic  #977                // Method kotlin/text/CharsKt.isWhitespace:(C)Z
       4: ireturn

  private static final org.chalup.parser.ParserStep<kotlin.Unit> chompWhile$lambda$9$helper(kotlin.jvm.functions.Function1<? super java.lang.Character, java.lang.Boolean>, org.chalup.parser.State, int, int, int);
    Code:
       0: aload_0
       1: iload_2
       2: aload_1
       3: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
       6: invokestatic  #964                // Method isSubChar:(Lkotlin/jvm/functions/Function1;ILjava/lang/String;)I
       9: istore        5
      11: iload         5
      13: tableswitch   { // -2 to -1
                    -2: 77
                    -1: 36
               default: 99
          }
      36: new           #203                // class org/chalup/parser/ParserStep$Good
      39: dup
      40: aload_1
      41: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      44: iload_2
      45: if_icmpge     52
      48: iconst_1
      49: goto          53
      52: iconst_0
      53: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      56: aload_1
      57: aconst_null
      58: iload_2
      59: iconst_0
      60: iload_3
      61: iload         4
      63: iconst_5
      64: aconst_null
      65: invokestatic  #255                // Method org/chalup/parser/State.copy$default:(Lorg/chalup/parser/State;Ljava/lang/String;IIIIILjava/lang/Object;)Lorg/chalup/parser/State;
      68: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
      71: checkcast     #157                // class org/chalup/parser/ParserStep
      74: goto          121
      77: iload_2
      78: iconst_1
      79: iadd
      80: istore        6
      82: iload_3
      83: iconst_1
      84: iadd
      85: istore        7
      87: iload         6
      89: istore_2
      90: iload         7
      92: istore_3
      93: iconst_1
      94: istore        4
      96: goto          0
      99: iload_3
     100: istore        6
     102: iload         4
     104: iconst_1
     105: iadd
     106: istore        7
     108: iload         5
     110: istore_2
     111: iload         6
     113: istore_3
     114: iload         7
     116: istore        4
     118: goto          0
     121: areturn

  private static final org.chalup.parser.ParserStep chompWhile$lambda$9(kotlin.jvm.functions.Function1, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc_w         #984                // String state
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_1
       9: aload_1
      10: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      13: aload_1
      14: invokevirtual #131                // Method org/chalup/parser/State.getRow:()I
      17: aload_1
      18: invokevirtual #134                // Method org/chalup/parser/State.getCol:()I
      21: invokestatic  #986                // Method chompWhile$lambda$9$helper:(Lkotlin/jvm/functions/Function1;Lorg/chalup/parser/State;III)Lorg/chalup/parser/ParserStep;
      24: areturn

  private static final org.chalup.parser.ParserStep chompIf$lambda$10(kotlin.jvm.functions.Function1, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      11: aload_1
      12: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      15: invokestatic  #964                // Method isSubChar:(Lkotlin/jvm/functions/Function1;ILjava/lang/String;)I
      18: istore_2
      19: iload_2
      20: tableswitch   { // -2 to -1
                    -2: 68
                    -1: 44
               default: 106
          }
      44: new           #126                // class org/chalup/parser/ParserStep$Bad
      47: dup
      48: iconst_0
      49: aload_1
      50: getstatic     #991                // Field org/chalup/parser/Problem$UnexpectedChar.INSTANCE:Lorg/chalup/parser/Problem$UnexpectedChar;
      53: checkcast     #247                // class org/chalup/parser/Problem
      56: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      59: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      62: checkcast     #157                // class org/chalup/parser/ParserStep
      65: goto          137
      68: new           #203                // class org/chalup/parser/ParserStep$Good
      71: dup
      72: iconst_1
      73: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      76: aload_1
      77: aconst_null
      78: aload_1
      79: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      82: iconst_1
      83: iadd
      84: iconst_0
      85: aload_1
      86: invokevirtual #131                // Method org/chalup/parser/State.getRow:()I
      89: iconst_1
      90: iadd
      91: iconst_1
      92: iconst_5
      93: aconst_null
      94: invokestatic  #255                // Method org/chalup/parser/State.copy$default:(Lorg/chalup/parser/State;Ljava/lang/String;IIIIILjava/lang/Object;)Lorg/chalup/parser/State;
      97: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     100: checkcast     #157                // class org/chalup/parser/ParserStep
     103: goto          137
     106: new           #203                // class org/chalup/parser/ParserStep$Good
     109: dup
     110: iconst_1
     111: getstatic     #670                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     114: aload_1
     115: aconst_null
     116: iload_2
     117: iconst_0
     118: iconst_0
     119: aload_1
     120: invokevirtual #134                // Method org/chalup/parser/State.getCol:()I
     123: iconst_1
     124: iadd
     125: bipush        13
     127: aconst_null
     128: invokestatic  #255                // Method org/chalup/parser/State.copy$default:(Lorg/chalup/parser/State;Ljava/lang/String;IIIIILjava/lang/Object;)Lorg/chalup/parser/State;
     131: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     134: checkcast     #157                // class org/chalup/parser/ParserStep
     137: areturn

  private static final org.chalup.parser.ParserStep succeed$lambda$11(java.lang.Object, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc_w         #984                // String state
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #203                // class org/chalup/parser/ParserStep$Good
      10: dup
      11: iconst_0
      12: aload_0
      13: aload_1
      14: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
      17: checkcast     #157                // class org/chalup/parser/ParserStep
      20: areturn

  private static final org.chalup.parser.ParserStep problem$lambda$12(java.lang.String, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #126                // class org/chalup/parser/ParserStep$Bad
       9: dup
      10: iconst_0
      11: aload_1
      12: new           #994                // class org/chalup/parser/Problem$Custom
      15: dup
      16: aload_0
      17: invokespecial #995                // Method org/chalup/parser/Problem$Custom."<init>":(Ljava/lang/String;)V
      20: checkcast     #247                // class org/chalup/parser/Problem
      23: invokestatic  #164                // Method fromState:(Lorg/chalup/parser/State;Lorg/chalup/parser/Problem;)Ljava/util/List;
      26: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      29: checkcast     #157                // class org/chalup/parser/ParserStep
      32: areturn

  private static final <T> org.chalup.parser.ParserStep<T> oneOf$lambda$14$helper$13(org.chalup.parser.State, java.util.List<org.chalup.parser.DeadEnd>, java.util.List<? extends org.chalup.parser.Parser<? extends T>>);
    Code:
       0: aload_2
       1: invokeinterface #1002,  1         // InterfaceMethod java/util/List.isEmpty:()Z
       6: ifeq          24
       9: new           #126                // class org/chalup/parser/ParserStep$Bad
      12: dup
      13: iconst_0
      14: aload_1
      15: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
      18: checkcast     #157                // class org/chalup/parser/ParserStep
      21: goto          122
      24: aload_2
      25: invokestatic  #1006               // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      28: checkcast     #71                 // class org/chalup/parser/Parser
      31: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      34: aload_0
      35: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      40: checkcast     #157                // class org/chalup/parser/ParserStep
      43: astore_3
      44: aload_3
      45: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      48: ifeq          55
      51: aload_3
      52: goto          122
      55: aload_3
      56: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      59: ifeq          114
      62: aload_3
      63: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
      66: invokevirtual #1012               // Method org/chalup/parser/ParserStep$Bad.getProgress:()Z
      69: ifeq          76
      72: aload_3
      73: goto          122
      76: aload_1
      77: checkcast     #786                // class java/util/Collection
      80: aload_3
      81: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
      84: invokevirtual #1016               // Method org/chalup/parser/ParserStep$Bad.getProblems:()Ljava/util/List;
      87: checkcast     #1018               // class java/lang/Iterable
      90: invokestatic  #1022               // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
      93: astore        4
      95: aload_2
      96: checkcast     #1018               // class java/lang/Iterable
      99: iconst_1
     100: invokestatic  #1026               // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
     103: astore        5
     105: aload         4
     107: astore_1
     108: aload         5
     110: astore_2
     111: goto          0
     114: new           #225                // class kotlin/NoWhenBranchMatchedException
     117: dup
     118: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     121: athrow
     122: areturn

  private static final org.chalup.parser.ParserStep oneOf$lambda$14(java.util.List, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: invokestatic  #1033               // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
      10: aload_0
      11: invokestatic  #1035               // Method oneOf$lambda$14$helper$13:(Lorg/chalup/parser/State;Ljava/util/List;Ljava/util/List;)Lorg/chalup/parser/ParserStep;
      14: areturn

  private static final org.chalup.parser.ParserStep parser$lambda$15(org.chalup.parser.State);
    Code:
       0: aload_0
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1039               // class java/lang/IllegalStateException
      10: dup
      11: ldc_w         #1041               // String Using stubbed parser!
      14: invokespecial #1042               // Method java/lang/IllegalStateException."<init>":(Ljava/lang/String;)V
      17: athrow

  private static final org.chalup.parser.ParserStep parser$lambda$16(kotlin.jvm.internal.Ref$ObjectRef, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #437                // Field kotlin/jvm/internal/Ref$ObjectRef.element:Ljava/lang/Object;
      10: checkcast     #71                 // class org/chalup/parser/Parser
      13: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      16: aload_1
      17: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      22: checkcast     #157                // class org/chalup/parser/ParserStep
      25: areturn

  private static final org.chalup.parser.ParserStep map$lambda$18(org.chalup.parser.Parser, kotlin.jvm.functions.Function1, org.chalup.parser.State);
    Code:
       0: aload_2
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      10: aload_2
      11: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #157                // class org/chalup/parser/ParserStep
      19: astore_3
      20: aload_3
      21: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      24: ifeq          67
      27: new           #203                // class org/chalup/parser/ParserStep$Good
      30: dup
      31: aload_3
      32: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      35: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
      38: aload_1
      39: aload_3
      40: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      43: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
      46: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      51: aload_3
      52: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      55: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      58: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
      61: checkcast     #157                // class org/chalup/parser/ParserStep
      64: goto          86
      67: aload_3
      68: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      71: ifeq          78
      74: aload_3
      75: goto          86
      78: new           #225                // class kotlin/NoWhenBranchMatchedException
      81: dup
      82: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
      85: athrow
      86: areturn

  private static final org.chalup.parser.ParserStep map2$lambda$19(org.chalup.parser.Parser, org.chalup.parser.Parser, kotlin.jvm.functions.Function2, org.chalup.parser.State);
    Code:
       0: aload_3
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      10: aload_3
      11: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #157                // class org/chalup/parser/ParserStep
      19: astore        4
      21: aload         4
      23: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      26: ifeq          34
      29: aload         4
      31: goto          214
      34: aload         4
      36: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      39: ifeq          206
      42: aload_1
      43: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      46: aload         4
      48: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      51: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      54: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      59: checkcast     #157                // class org/chalup/parser/ParserStep
      62: astore        5
      64: aload         5
      66: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      69: ifeq          120
      72: new           #126                // class org/chalup/parser/ParserStep$Bad
      75: dup
      76: aload         4
      78: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      81: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
      84: ifne          98
      87: aload         5
      89: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
      92: invokevirtual #1012               // Method org/chalup/parser/ParserStep$Bad.getProgress:()Z
      95: ifeq          102
      98: iconst_1
      99: goto          103
     102: iconst_0
     103: aload         5
     105: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
     108: invokevirtual #1016               // Method org/chalup/parser/ParserStep$Bad.getProblems:()Ljava/util/List;
     111: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     114: checkcast     #157                // class org/chalup/parser/ParserStep
     117: goto          214
     120: aload         5
     122: instanceof    #203                // class org/chalup/parser/ParserStep$Good
     125: ifeq          198
     128: new           #203                // class org/chalup/parser/ParserStep$Good
     131: dup
     132: aload         4
     134: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     137: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
     140: ifne          154
     143: aload         5
     145: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     148: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
     151: ifeq          158
     154: iconst_1
     155: goto          159
     158: iconst_0
     159: aload_2
     160: aload         4
     162: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     165: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
     168: aload         5
     170: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     173: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
     176: invokeinterface #1055,  3         // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     181: aload         5
     183: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     186: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
     189: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     192: checkcast     #157                // class org/chalup/parser/ParserStep
     195: goto          214
     198: new           #225                // class kotlin/NoWhenBranchMatchedException
     201: dup
     202: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     205: athrow
     206: new           #225                // class kotlin/NoWhenBranchMatchedException
     209: dup
     210: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     213: athrow
     214: areturn

  private static final org.chalup.parser.ParserStep getChompedString$lambda$20(org.chalup.parser.Parser, org.chalup.parser.State);
    Code:
       0: aload_1
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      10: aload_1
      11: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #157                // class org/chalup/parser/ParserStep
      19: astore_2
      20: aload_2
      21: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      24: ifeq          31
      27: aload_2
      28: goto          100
      31: aload_2
      32: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      35: ifeq          92
      38: new           #203                // class org/chalup/parser/ParserStep$Good
      41: dup
      42: aload_2
      43: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      46: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
      49: aload_1
      50: invokevirtual #120                // Method org/chalup/parser/State.getSrc:()Ljava/lang/String;
      53: aload_1
      54: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      57: aload_2
      58: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      61: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      64: invokevirtual #137                // Method org/chalup/parser/State.getOffset:()I
      67: invokevirtual #184                // Method java/lang/String.substring:(II)Ljava/lang/String;
      70: dup
      71: ldc           #186                // String substring(...)
      73: invokestatic  #189                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
      76: aload_2
      77: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      80: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      83: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
      86: checkcast     #157                // class org/chalup/parser/ParserStep
      89: goto          100
      92: new           #225                // class kotlin/NoWhenBranchMatchedException
      95: dup
      96: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
      99: athrow
     100: areturn

  private static final org.chalup.parser.ParserStep andThen$lambda$21(org.chalup.parser.Parser, kotlin.jvm.functions.Function1, org.chalup.parser.State);
    Code:
       0: aload_2
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      10: aload_2
      11: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      16: checkcast     #157                // class org/chalup/parser/ParserStep
      19: astore_3
      20: aload_3
      21: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      24: ifeq          31
      27: aload_3
      28: goto          208
      31: aload_3
      32: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      35: ifeq          200
      38: aload_1
      39: aload_3
      40: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      43: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
      46: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      51: checkcast     #71                 // class org/chalup/parser/Parser
      54: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      57: aload_3
      58: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      61: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      64: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      69: checkcast     #157                // class org/chalup/parser/ParserStep
      72: astore        4
      74: aload         4
      76: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
      79: ifeq          129
      82: new           #126                // class org/chalup/parser/ParserStep$Bad
      85: dup
      86: aload_3
      87: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      90: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
      93: ifne          107
      96: aload         4
      98: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
     101: invokevirtual #1012               // Method org/chalup/parser/ParserStep$Bad.getProgress:()Z
     104: ifeq          111
     107: iconst_1
     108: goto          112
     111: iconst_0
     112: aload         4
     114: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
     117: invokevirtual #1016               // Method org/chalup/parser/ParserStep$Bad.getProblems:()Ljava/util/List;
     120: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     123: checkcast     #157                // class org/chalup/parser/ParserStep
     126: goto          208
     129: aload         4
     131: instanceof    #203                // class org/chalup/parser/ParserStep$Good
     134: ifeq          192
     137: new           #203                // class org/chalup/parser/ParserStep$Good
     140: dup
     141: aload_3
     142: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     145: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
     148: ifne          162
     151: aload         4
     153: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     156: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
     159: ifeq          166
     162: iconst_1
     163: goto          167
     166: iconst_0
     167: aload         4
     169: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     172: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
     175: aload         4
     177: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     180: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
     183: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     186: checkcast     #157                // class org/chalup/parser/ParserStep
     189: goto          208
     192: new           #225                // class kotlin/NoWhenBranchMatchedException
     195: dup
     196: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     199: athrow
     200: new           #225                // class kotlin/NoWhenBranchMatchedException
     203: dup
     204: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     207: athrow
     208: areturn

  private static final java.lang.Object keep$lambda$22(kotlin.jvm.functions.Function1, java.lang.Object);
    Code:
       0: aload_0
       1: ldc_w         #1062               // String f
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_1
       9: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      14: areturn

  private static final java.lang.Object keep2$lambda$24$lambda$23(kotlin.jvm.functions.Function2, java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokeinterface #1055,  3         // InterfaceMethod kotlin/jvm/functions/Function2.invoke:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
       8: areturn

  private static final kotlin.jvm.functions.Function1 keep2$lambda$24(kotlin.jvm.functions.Function2, java.lang.Object);
    Code:
       0: aload_0
       1: ldc_w         #1062               // String f
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_1
       9: invokedynamic #1073,  0           // InvokeDynamic #42:invoke:(Lkotlin/jvm/functions/Function2;Ljava/lang/Object;)Lkotlin/jvm/functions/Function1;
      14: areturn

  private static final java.lang.Object skip$lambda$25(java.lang.Object, java.lang.Object);
    Code:
       0: aload_0
       1: areturn

  private static final <S, T> org.chalup.parser.ParserStep<T> loop$lambda$27$helper$26(kotlin.jvm.functions.Function1<? super S, org.chalup.parser.Parser<org.chalup.parser.LoopStep<S, T>>>, boolean, S, org.chalup.parser.State);
    Code:
       0: aload_0
       1: aload_2
       2: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
       7: checkcast     #71                 // class org/chalup/parser/Parser
      10: invokevirtual #1009               // Method org/chalup/parser/Parser.getParse:()Lkotlin/jvm/functions/Function1;
      13: aload_3
      14: invokeinterface #216,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      19: checkcast     #157                // class org/chalup/parser/ParserStep
      22: astore        4
      24: aload         4
      26: instanceof    #203                // class org/chalup/parser/ParserStep$Good
      29: ifeq          172
      32: aload         4
      34: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      37: invokevirtual #1045               // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
      40: checkcast     #1080               // class org/chalup/parser/LoopStep
      43: astore        5
      45: aload         5
      47: instanceof    #1082               // class org/chalup/parser/LoopStep$Loop
      50: ifeq          107
      53: iload_1
      54: ifne          68
      57: aload         4
      59: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      62: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
      65: ifeq          72
      68: iconst_1
      69: goto          73
      72: iconst_0
      73: istore        6
      75: aload         5
      77: checkcast     #1082               // class org/chalup/parser/LoopStep$Loop
      80: invokevirtual #1084               // Method org/chalup/parser/LoopStep$Loop.getState:()Ljava/lang/Object;
      83: astore        7
      85: aload         4
      87: checkcast     #203                // class org/chalup/parser/ParserStep$Good
      90: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
      93: astore        8
      95: iload         6
      97: istore_1
      98: aload         7
     100: astore_2
     101: aload         8
     103: astore_3
     104: goto          0
     107: aload         5
     109: instanceof    #1086               // class org/chalup/parser/LoopStep$Done
     112: ifeq          164
     115: new           #203                // class org/chalup/parser/ParserStep$Good
     118: dup
     119: iload_1
     120: ifne          134
     123: aload         4
     125: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     128: invokevirtual #1044               // Method org/chalup/parser/ParserStep$Good.getProgress:()Z
     131: ifeq          138
     134: iconst_1
     135: goto          139
     138: iconst_0
     139: aload         5
     141: checkcast     #1086               // class org/chalup/parser/LoopStep$Done
     144: invokevirtual #1089               // Method org/chalup/parser/LoopStep$Done.getResult:()Ljava/lang/Object;
     147: aload         4
     149: checkcast     #203                // class org/chalup/parser/ParserStep$Good
     152: invokevirtual #1049               // Method org/chalup/parser/ParserStep$Good.getState:()Lorg/chalup/parser/State;
     155: invokespecial #223                // Method org/chalup/parser/ParserStep$Good."<init>":(ZLjava/lang/Object;Lorg/chalup/parser/State;)V
     158: checkcast     #157                // class org/chalup/parser/ParserStep
     161: goto          229
     164: new           #225                // class kotlin/NoWhenBranchMatchedException
     167: dup
     168: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     171: athrow
     172: aload         4
     174: instanceof    #126                // class org/chalup/parser/ParserStep$Bad
     177: ifeq          221
     180: new           #126                // class org/chalup/parser/ParserStep$Bad
     183: dup
     184: iload_1
     185: ifne          199
     188: aload         4
     190: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
     193: invokevirtual #1012               // Method org/chalup/parser/ParserStep$Bad.getProgress:()Z
     196: ifeq          203
     199: iconst_1
     200: goto          204
     203: iconst_0
     204: aload         4
     206: checkcast     #126                // class org/chalup/parser/ParserStep$Bad
     209: invokevirtual #1016               // Method org/chalup/parser/ParserStep$Bad.getProblems:()Ljava/util/List;
     212: invokespecial #155                // Method org/chalup/parser/ParserStep$Bad."<init>":(ZLjava/util/List;)V
     215: checkcast     #157                // class org/chalup/parser/ParserStep
     218: goto          229
     221: new           #225                // class kotlin/NoWhenBranchMatchedException
     224: dup
     225: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     228: athrow
     229: areturn

  private static final org.chalup.parser.ParserStep loop$lambda$27(java.lang.Object, kotlin.jvm.functions.Function1, org.chalup.parser.State);
    Code:
       0: aload_2
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: iconst_0
       8: aload_0
       9: aload_2
      10: invokestatic  #1096               // Method loop$lambda$27$helper$26:(Lkotlin/jvm/functions/Function1;ZLjava/lang/Object;Lorg/chalup/parser/State;)Lorg/chalup/parser/ParserStep;
      13: areturn

  private static final java.lang.Object skipThen$lambda$28(java.lang.Object, java.lang.Object);
    Code:
       0: aload_1
       1: areturn

  private static final org.chalup.parser.Parser sequenceEnd$lambda$32$lambda$29(org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, java.util.List);
    Code:
       0: aload         4
       2: ldc           #114                // String s
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_1
       9: aload_2
      10: aload_3
      11: aload         4
      13: invokestatic  #1101               // Method sequenceEndForbidden:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Ljava/util/List;)Lorg/chalup/parser/Parser;
      16: areturn

  private static final org.chalup.parser.Parser sequenceEnd$lambda$32$lambda$30(org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, java.util.List);
    Code:
       0: aload         4
       2: ldc           #114                // String s
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_1
       9: aload_2
      10: aload_3
      11: aload         4
      13: invokestatic  #1108               // Method sequenceEndOptional:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Ljava/util/List;)Lorg/chalup/parser/Parser;
      16: areturn

  private static final org.chalup.parser.Parser sequenceEnd$lambda$32$lambda$31(org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, java.util.List);
    Code:
       0: aload_3
       1: ldc           #114                // String s
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: aload_2
       9: aload_3
      10: invokestatic  #1111               // Method sequenceEndMandatory:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Ljava/util/List;)Lorg/chalup/parser/Parser;
      13: areturn

  private static final org.chalup.parser.Parser sequenceEnd$lambda$32(org.chalup.parser.TrailingSeparatorTreatment, org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, org.chalup.parser.Parser, java.lang.Object);
    Code:
       0: aload_0
       1: getstatic     #1117               // Field org/chalup/parser/ParserKt$WhenMappings.$EnumSwitchMapping$0:[I
       4: swap
       5: invokevirtual #1120               // Method org/chalup/parser/TrailingSeparatorTreatment.ordinal:()I
       8: iaload
       9: tableswitch   { // 1 to 3
                     1: 36
                     2: 57
                     3: 78
               default: 114
          }
      36: aload         5
      38: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      41: aload_3
      42: aload_1
      43: aload         4
      45: aload_2
      46: invokedynamic #1127,  0           // InvokeDynamic #43:invoke:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lkotlin/jvm/functions/Function1;
      51: invokestatic  #1129               // Method loop:(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      54: goto          122
      57: aload         5
      59: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      62: aload_3
      63: aload_1
      64: aload         4
      66: aload_2
      67: invokedynamic #1133,  0           // InvokeDynamic #44:invoke:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lkotlin/jvm/functions/Function1;
      72: invokestatic  #1129               // Method loop:(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
      75: goto          122
      78: aload_1
      79: aload_2
      80: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      83: aload_1
      84: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      87: aload         5
      89: invokestatic  #152                // Method kotlin/collections/CollectionsKt.listOf:(Ljava/lang/Object;)Ljava/util/List;
      92: aload_1
      93: aload         4
      95: aload_2
      96: invokedynamic #1139,  0           // InvokeDynamic #45:invoke:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lkotlin/jvm/functions/Function1;
     101: invokestatic  #1129               // Method loop:(Ljava/lang/Object;Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     104: invokestatic  #584                // Method skipThen:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     107: aload_3
     108: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     111: goto          122
     114: new           #225                // class kotlin/NoWhenBranchMatchedException
     117: dup
     118: invokespecial #228                // Method kotlin/NoWhenBranchMatchedException."<init>":()V
     121: athrow
     122: areturn

  private static final java.util.List sequenceEnd$lambda$33(kotlin.Unit);
    Code:
       0: aload_0
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: invokestatic  #1033               // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
      10: areturn

  private static final org.chalup.parser.LoopStep$Loop sequenceEndForbidden$lambda$34(java.util.List, java.lang.Object);
    Code:
       0: new           #1082               // class org/chalup/parser/LoopStep$Loop
       3: dup
       4: aload_0
       5: checkcast     #786                // class java/util/Collection
       8: aload_1
       9: invokestatic  #1144               // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List;
      12: invokespecial #1146               // Method org/chalup/parser/LoopStep$Loop."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LoopStep$Done sequenceEndForbidden$lambda$35(java.util.List, kotlin.Unit);
    Code:
       0: aload_1
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1086               // class org/chalup/parser/LoopStep$Done
      10: dup
      11: aload_0
      12: invokespecial #1148               // Method org/chalup/parser/LoopStep$Done."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LoopStep$Done sequenceEndOptional$lambda$36(java.util.List, kotlin.Unit);
    Code:
       0: aload_1
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1086               // class org/chalup/parser/LoopStep$Done
      10: dup
      11: aload_0
      12: invokespecial #1148               // Method org/chalup/parser/LoopStep$Done."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LoopStep$Loop sequenceEndOptional$lambda$37(java.util.List, java.lang.Object);
    Code:
       0: new           #1082               // class org/chalup/parser/LoopStep$Loop
       3: dup
       4: aload_0
       5: checkcast     #786                // class java/util/Collection
       8: aload_1
       9: invokestatic  #1144               // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List;
      12: invokespecial #1146               // Method org/chalup/parser/LoopStep$Loop."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LoopStep$Loop sequenceEndMandatory$lambda$38(java.util.List, java.lang.Object);
    Code:
       0: new           #1082               // class org/chalup/parser/LoopStep$Loop
       3: dup
       4: aload_0
       5: checkcast     #786                // class java/util/Collection
       8: aload_1
       9: invokestatic  #1144               // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/List;
      12: invokespecial #1146               // Method org/chalup/parser/LoopStep$Loop."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LoopStep$Done sequenceEndMandatory$lambda$39(java.util.List, kotlin.Unit);
    Code:
       0: aload_1
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1086               // class org/chalup/parser/LoopStep$Done
      10: dup
      11: aload_0
      12: invokespecial #1148               // Method org/chalup/parser/LoopStep$Done."<init>":(Ljava/lang/Object;)V
      15: areturn

  private static final org.chalup.parser.LeBoolean$LeOr main$lambda$41$lambda$40(org.chalup.parser.LeBoolean, org.chalup.parser.LeBoolean);
    Code:
       0: aload_0
       1: ldc_w         #1152               // String l
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #1154               // String r
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: new           #1156               // class org/chalup/parser/LeBoolean$LeOr
      17: dup
      18: aload_0
      19: aload_1
      20: invokespecial #1159               // Method org/chalup/parser/LeBoolean$LeOr."<init>":(Lorg/chalup/parser/LeBoolean;Lorg/chalup/parser/LeBoolean;)V
      23: areturn

  private static final org.chalup.parser.Parser main$lambda$41(org.chalup.parser.Parser);
    Code:
       0: aload_0
       1: ldc_w         #1162               // String leBoolean
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: iconst_3
       8: anewarray     #71                 // class org/chalup/parser/Parser
      11: astore_1
      12: aload_1
      13: iconst_0
      14: getstatic     #1167               // Field org/chalup/parser/LeBoolean$LeTrue.INSTANCE:Lorg/chalup/parser/LeBoolean$LeTrue;
      17: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      20: ldc_w         #696                // String true
      23: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      26: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      29: aastore
      30: aload_1
      31: iconst_1
      32: getstatic     #1172               // Field org/chalup/parser/LeBoolean$LeFalse.INSTANCE:Lorg/chalup/parser/LeBoolean$LeFalse;
      35: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      38: ldc_w         #707                // String false
      41: invokestatic  #698                // Method keyword:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      44: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      47: aastore
      48: aload_1
      49: iconst_2
      50: invokedynamic #1177,  0           // InvokeDynamic #46:invoke:()Lkotlin/jvm/functions/Function2;
      55: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      58: ldc_w         #731                // String (
      61: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      64: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      67: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
      70: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      73: aload_0
      74: invokestatic  #733                // Method keep2:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      77: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
      80: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      83: ldc_w         #1179               // String ||
      86: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      89: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      92: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
      95: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
      98: aload_0
      99: invokestatic  #737                // Method keep:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     102: getstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     105: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     108: ldc_w         #739                // String )
     111: invokestatic  #582                // Method symbol:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
     114: invokestatic  #659                // Method skip:(Lorg/chalup/parser/Parser;Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     117: aastore
     118: aload_1
     119: invokestatic  #620                // Method oneOf:([Lorg/chalup/parser/Parser;)Lorg/chalup/parser/Parser;
     122: areturn

  private static final org.chalup.parser.Json$JsonInt main$lambda$42(int);
    Code:
       0: new           #1181               // class org/chalup/parser/Json$JsonInt
       3: dup
       4: iload_0
       5: invokespecial #1182               // Method org/chalup/parser/Json$JsonInt."<init>":(I)V
       8: areturn

  private static final org.chalup.parser.Json$JsonBool main$lambda$43(kotlin.Unit);
    Code:
       0: aload_0
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1184               // class org/chalup/parser/Json$JsonBool
      10: dup
      11: iconst_1
      12: invokespecial #1187               // Method org/chalup/parser/Json$JsonBool."<init>":(Z)V
      15: areturn

  private static final org.chalup.parser.Json$JsonBool main$lambda$44(kotlin.Unit);
    Code:
       0: aload_0
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: new           #1184               // class org/chalup/parser/Json$JsonBool
      10: dup
      11: iconst_0
      12: invokespecial #1187               // Method org/chalup/parser/Json$JsonBool."<init>":(Z)V
      15: areturn

  private static final org.chalup.parser.Json$JsonNull main$lambda$45(kotlin.Unit);
    Code:
       0: aload_0
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: getstatic     #1192               // Field org/chalup/parser/Json$JsonNull.INSTANCE:Lorg/chalup/parser/Json$JsonNull;
      10: areturn

  private static final org.chalup.parser.Point main$lambda$46(int, int);
    Code:
       0: new           #1194               // class org/chalup/parser/Point
       3: dup
       4: iload_0
       5: iload_1
       6: invokespecial #1197               // Method org/chalup/parser/Point."<init>":(II)V
       9: areturn

  private static final boolean main$lambda$47(char);
    Code:
       0: iload_0
       1: bipush        36
       3: if_icmpne     10
       6: iconst_1
       7: goto          11
      10: iconst_0
      11: ireturn

  private static final boolean main$lambda$48(char);
    Code:
       0: iload_0
       1: invokestatic  #1201               // Method java/lang/Character.isLetter:(C)Z
       4: ifne          13
       7: iload_0
       8: bipush        95
      10: if_icmpne     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ireturn

  private static final boolean main$lambda$49(char);
    Code:
       0: iload_0
       1: invokestatic  #949                // Method java/lang/Character.isLetterOrDigit:(C)Z
       4: ifne          13
       7: iload_0
       8: bipush        95
      10: if_icmpne     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ireturn

  private static final boolean main$lambda$50(char);
    Code:
       0: iload_0
       1: invokestatic  #1204               // Method java/lang/Character.isDigit:(C)Z
       4: ireturn

  private static final org.chalup.parser.Parser main$lambda$51(java.lang.String);
    Code:
       0: aload_0
       1: ldc_w         #1206               // String code
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #24                 // Method java/lang/String.length:()I
      11: iconst_5
      12: if_icmpne     22
      15: aload_0
      16: invokestatic  #672                // Method succeed:(Ljava/lang/Object;)Lorg/chalup/parser/Parser;
      19: goto          50
      22: new           #1208               // class java/lang/StringBuilder
      25: dup
      26: invokespecial #1209               // Method java/lang/StringBuilder."<init>":()V
      29: ldc_w         #1211               // String a U.S. zip code has exactly 5 digits, but I found \'
      32: invokevirtual #1215               // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      35: aload_0
      36: invokevirtual #1215               // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      39: bipush        39
      41: invokevirtual #1218               // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      44: invokevirtual #1221               // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      47: invokestatic  #1223               // Method problem:(Ljava/lang/String;)Lorg/chalup/parser/Parser;
      50: areturn

  private static final org.chalup.parser.Suite main$lambda$53$lambda$52(org.chalup.parser.Suite, kotlin.Unit);
    Code:
       0: aload_1
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: areturn

  private static final org.chalup.parser.Rank main$lambda$55$lambda$54(org.chalup.parser.Rank, kotlin.Unit);
    Code:
       0: aload_1
       1: ldc_w         #1037               // String it
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: areturn

  private static final org.chalup.parser.Card main$lambda$56(org.chalup.parser.Rank, org.chalup.parser.Suite);
    Code:
       0: aload_0
       1: ldc_w         #1226               // String rank
       4: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_1
       8: ldc_w         #1227               // String suite
      11: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: new           #1229               // class org/chalup/parser/Card
      17: dup
      18: aload_0
      19: aload_1
      20: invokespecial #1232               // Method org/chalup/parser/Card."<init>":(Lorg/chalup/parser/Rank;Lorg/chalup/parser/Suite;)V
      23: areturn

  static {};
    Code:
       0: new           #139                // class org/chalup/parser/NumberContext
       3: dup
       4: new           #180                // class org/chalup/parser/Result$Ok
       7: dup
       8: invokedynamic #1239,  0           // InvokeDynamic #47:invoke:()Lkotlin/jvm/functions/Function1;
      13: invokespecial #1240               // Method org/chalup/parser/Result$Ok."<init>":(Ljava/lang/Object;)V
      16: checkcast     #237                // class org/chalup/parser/Result
      19: new           #175                // class org/chalup/parser/Result$Error
      22: dup
      23: getstatic     #1245               // Field org/chalup/parser/Problem$ExpectingInt.INSTANCE:Lorg/chalup/parser/Problem$ExpectingInt;
      26: invokespecial #1246               // Method org/chalup/parser/Result$Error."<init>":(Ljava/lang/Object;)V
      29: checkcast     #237                // class org/chalup/parser/Result
      32: getstatic     #1245               // Field org/chalup/parser/Problem$ExpectingInt.INSTANCE:Lorg/chalup/parser/Problem$ExpectingInt;
      35: checkcast     #247                // class org/chalup/parser/Problem
      38: getstatic     #1245               // Field org/chalup/parser/Problem$ExpectingInt.INSTANCE:Lorg/chalup/parser/Problem$ExpectingInt;
      41: checkcast     #247                // class org/chalup/parser/Problem
      44: invokespecial #1249               // Method org/chalup/parser/NumberContext."<init>":(Lorg/chalup/parser/Result;Lorg/chalup/parser/Result;Lorg/chalup/parser/Problem;Lorg/chalup/parser/Problem;)V
      47: invokestatic  #1251               // Method number:(Lorg/chalup/parser/NumberContext;)Lorg/chalup/parser/Parser;
      50: putstatic     #59                 // Field int:Lorg/chalup/parser/Parser;
      53: new           #139                // class org/chalup/parser/NumberContext
      56: dup
      57: new           #180                // class org/chalup/parser/Result$Ok
      60: dup
      61: invokedynamic #1257,  0           // InvokeDynamic #48:invoke:()Lkotlin/jvm/functions/Function1;
      66: invokespecial #1240               // Method org/chalup/parser/Result$Ok."<init>":(Ljava/lang/Object;)V
      69: checkcast     #237                // class org/chalup/parser/Result
      72: new           #180                // class org/chalup/parser/Result$Ok
      75: dup
      76: invokedynamic #1263,  0           // InvokeDynamic #49:invoke:()Lkotlin/jvm/functions/Function1;
      81: invokespecial #1240               // Method org/chalup/parser/Result$Ok."<init>":(Ljava/lang/Object;)V
      84: checkcast     #237                // class org/chalup/parser/Result
      87: getstatic     #1268               // Field org/chalup/parser/Problem$ExpectingFloat.INSTANCE:Lorg/chalup/parser/Problem$ExpectingFloat;
      90: checkcast     #247                // class org/chalup/parser/Problem
      93: getstatic     #1268               // Field org/chalup/parser/Problem$ExpectingFloat.INSTANCE:Lorg/chalup/parser/Problem$ExpectingFloat;
      96: checkcast     #247                // class org/chalup/parser/Problem
      99: invokespecial #1249               // Method org/chalup/parser/NumberContext."<init>":(Lorg/chalup/parser/Result;Lorg/chalup/parser/Result;Lorg/chalup/parser/Problem;Lorg/chalup/parser/Problem;)V
     102: invokestatic  #1251               // Method number:(Lorg/chalup/parser/NumberContext;)Lorg/chalup/parser/Parser;
     105: putstatic     #64                 // Field float:Lorg/chalup/parser/Parser;
     108: invokedynamic #1272,  0           // InvokeDynamic #50:invoke:()Lkotlin/jvm/functions/Function1;
     113: invokestatic  #758                // Method chompWhile:(Lkotlin/jvm/functions/Function1;)Lorg/chalup/parser/Parser;
     116: putstatic     #344                // Field spaces:Lorg/chalup/parser/Parser;
     119: return
}

Compiled from "Parser.kt"
public final class org.chalup.parser.Parser<T> {
  private final kotlin.jvm.functions.Function1<org.chalup.parser.State, org.chalup.parser.ParserStep<T>> parse;

  public org.chalup.parser.Parser(kotlin.jvm.functions.Function1<? super org.chalup.parser.State, ? extends org.chalup.parser.ParserStep<? extends T>>);
    Code:
       0: aload_1
       1: ldc           #11                 // String parse
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #20                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: aload_1
      12: putfield      #23                 // Field parse:Lkotlin/jvm/functions/Function1;
      15: return

  public final kotlin.jvm.functions.Function1<org.chalup.parser.State, org.chalup.parser.ParserStep<T>> getParse();
    Code:
       0: aload_0
       1: getfield      #23                 // Field parse:Lkotlin/jvm/functions/Function1;
       4: areturn

  public final org.chalup.parser.Result<java.util.List<org.chalup.parser.DeadEnd>, T> run(java.lang.String);
    Code:
       0: aload_1
       1: ldc           #33                 // String input
       3: invokestatic  #17                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: getfield      #23                 // Field parse:Lkotlin/jvm/functions/Function1;
      10: new           #35                 // class org/chalup/parser/State
      13: dup
      14: aload_1
      15: iconst_0
      16: iconst_1
      17: iconst_1
      18: iconst_1
      19: invokespecial #38                 // Method org/chalup/parser/State."<init>":(Ljava/lang/String;IIII)V
      22: invokeinterface #44,  2           // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      27: checkcast     #46                 // class org/chalup/parser/ParserStep
      30: astore_2
      31: aload_2
      32: instanceof    #48                 // class org/chalup/parser/ParserStep$Good
      35: ifeq          58
      38: new           #50                 // class org/chalup/parser/Result$Ok
      41: dup
      42: aload_2
      43: checkcast     #48                 // class org/chalup/parser/ParserStep$Good
      46: invokevirtual #54                 // Method org/chalup/parser/ParserStep$Good.getValue:()Ljava/lang/Object;
      49: invokespecial #57                 // Method org/chalup/parser/Result$Ok."<init>":(Ljava/lang/Object;)V
      52: checkcast     #59                 // class org/chalup/parser/Result
      55: goto          93
      58: aload_2
      59: instanceof    #61                 // class org/chalup/parser/ParserStep$Bad
      62: ifeq          85
      65: new           #63                 // class org/chalup/parser/Result$Error
      68: dup
      69: aload_2
      70: checkcast     #61                 // class org/chalup/parser/ParserStep$Bad
      73: invokevirtual #67                 // Method org/chalup/parser/ParserStep$Bad.getProblems:()Ljava/util/List;
      76: invokespecial #68                 // Method org/chalup/parser/Result$Error."<init>":(Ljava/lang/Object;)V
      79: checkcast     #59                 // class org/chalup/parser/Result
      82: goto          93
      85: new           #70                 // class kotlin/NoWhenBranchMatchedException
      88: dup
      89: invokespecial #71                 // Method kotlin/NoWhenBranchMatchedException."<init>":()V
      92: athrow
      93: areturn
}