FILE@[0; 389)
  FUNCTION@[0; 389)
    VISIBILITY@[0; 10)
      PUB_KW@[0; 3)
      L_PAREN@[3; 4)
      SUPER_KW@[4; 9)
      R_PAREN@[9; 10)
    WHITESPACE@[10; 11)
    FN_KW@[11; 13)
    WHITESPACE@[13; 14)
    NAME@[14; 21)
      IDENT@[14; 21) "process"
    TYPE_PARAM_LIST@[21; 38)
      L_ANGLE@[21; 22)
      LIFETIME_PARAM@[22; 24)
        LIFETIME@[22; 24) "'a"
      COMMA@[24; 25)
      WHITESPACE@[25; 26)
      TYPE_PARAM@[26; 37)
        NAME@[26; 27)
          IDENT@[26; 27) "S"
        COLON@[27; 28)
        WHITESPACE@[28; 29)
        PATH@[29; 37)
          PATH_SEGMENT@[29; 37)
            NAME_REF@[29; 33)
              IDENT@[29; 33) "Sink"
            TYPE_ARG_LIST@[33; 37)
              L_ANGLE@[33; 34)
              LIFETIME_ARG@[34; 36)
                LIFETIME@[34; 36) "'a"
              R_ANGLE@[36; 37)
      R_ANGLE@[37; 38)
    PARAM_LIST@[38; 93)
      L_PAREN@[38; 39)
      PARAM@[39; 54)
        BIND_PAT@[39; 46)
          NAME@[39; 46)
            IDENT@[39; 46) "builder"
        COLON@[46; 47)
        WHITESPACE@[47; 48)
        REFERENCE_TYPE@[48; 54)
          AMP@[48; 49)
          MUT_KW@[49; 52)
          WHITESPACE@[52; 53)
          PATH_TYPE@[53; 54)
            PATH@[53; 54)
              PATH_SEGMENT@[53; 54)
                NAME_REF@[53; 54)
                  IDENT@[53; 54) "S"
      COMMA@[54; 55)
      WHITESPACE@[55; 56)
      PARAM@[56; 72)
        BIND_PAT@[56; 62)
          NAME@[56; 62)
            IDENT@[56; 62) "tokens"
        COLON@[62; 63)
        WHITESPACE@[63; 64)
        REFERENCE_TYPE@[64; 72)
          AMP@[64; 65)
          SLICE_TYPE@[65; 72)
            L_BRACK@[65; 66)
            PATH_TYPE@[66; 71)
              PATH@[66; 71)
                PATH_SEGMENT@[66; 71)
                  NAME_REF@[66; 71)
                    IDENT@[66; 71) "Token"
            R_BRACK@[71; 72)
      COMMA@[72; 73)
      WHITESPACE@[73; 74)
      PARAM@[74; 92)
        BIND_PAT@[74; 80)
          NAME@[74; 80)
            IDENT@[74; 80) "events"
        COLON@[80; 81)
        WHITESPACE@[81; 82)
        PATH_TYPE@[82; 92)
          PATH@[82; 92)
            PATH_SEGMENT@[82; 92)
              NAME_REF@[82; 85)
                IDENT@[82; 85) "Vec"
              TYPE_ARG_LIST@[85; 92)
                L_ANGLE@[85; 86)
                TYPE_ARG@[86; 91)
                  PATH_TYPE@[86; 91)
                    PATH@[86; 91)
                      PATH_SEGMENT@[86; 91)
                        NAME_REF@[86; 91)
                          IDENT@[86; 91) "Event"
                R_ANGLE@[91; 92)
      R_PAREN@[92; 93)
    WHITESPACE@[93; 94)
    BLOCK_EXPR@[94; 389)
      L_CURLY@[94; 95)
      WHITESPACE@[95; 100)
      LET_STMT@[100; 125)
        LET_KW@[100; 103)
        WHITESPACE@[103; 104)
        BIND_PAT@[104; 120)
          MUT_KW@[104; 107)
          WHITESPACE@[107; 108)
          NAME@[108; 120)
            IDENT@[108; 120) "next_tok_idx"
        WHITESPACE@[120; 121)
        EQ@[121; 122)
        WHITESPACE@[122; 123)
        LITERAL@[123; 124)
          INT_NUMBER@[123; 124) "0"
        SEMI@[124; 125)
      WHITESPACE@[125; 130)
      LET_STMT@[130; 389)
        LET_KW@[130; 133)
        WHITESPACE@[133; 134)
        BIND_PAT@[134; 140)
          NAME@[134; 140)
            IDENT@[134; 140) "eat_ws"
        WHITESPACE@[140; 141)
        EQ@[141; 142)
        WHITESPACE@[142; 143)
        LAMBDA_EXPR@[143; 389)
          PARAM_LIST@[143; 388)
            PIPE@[143; 144)
            PARAM@[144; 159)
              BIND_PAT@[144; 147)
                NAME@[144; 147)
                  IDENT@[144; 147) "idx"
              COLON@[147; 148)
              WHITESPACE@[148; 149)
              REFERENCE_TYPE@[149; 159)
                AMP@[149; 150)
                MUT_KW@[150; 153)
                WHITESPACE@[153; 154)
                PATH_TYPE@[154; 159)
                  PATH@[154; 159)
                    PATH_SEGMENT@[154; 159)
                      NAME_REF@[154; 159)
                        IDENT@[154; 159) "usize"
            COMMA@[159; 160)
            WHITESPACE@[160; 161)
            PARAM@[161; 167)
              REF_PAT@[161; 167)
                AMP@[161; 162)
                MUT_KW@[162; 165)
                WHITESPACE@[165; 166)
                err: `expected pattern`
                ERROR@[166; 167)
                  PIPE@[166; 167)
                  err: `expected COMMA`
            WHITESPACE@[167; 168)
            err: `expected pattern`
            PARAM@[168; 169)
              ERROR@[168; 169)
                L_CURLY@[168; 169)
                err: `expected COMMA`
            WHITESPACE@[169; 178)
            err: `expected pattern`
            PARAM@[178; 183)
              ERROR@[178; 183)
                WHILE_KW@[178; 183)
                err: `expected COMMA`
            WHITESPACE@[183; 184)
            err: `expected pattern`
            PARAM@[184; 187)
              ERROR@[184; 187)
                LET_KW@[184; 187)
                err: `expected COMMA`
            WHITESPACE@[187; 188)
            PARAM@[188; 199)
              TUPLE_STRUCT_PAT@[188; 199)
                PATH@[188; 192)
                  PATH_SEGMENT@[188; 192)
                    NAME_REF@[188; 192)
                      IDENT@[188; 192) "Some"
                L_PAREN@[192; 193)
                BIND_PAT@[193; 198)
                  NAME@[193; 198)
                    IDENT@[193; 198) "token"
                R_PAREN@[198; 199)
                err: `expected COMMA`
            WHITESPACE@[199; 200)
            err: `expected pattern`
            PARAM@[200; 201)
              ERROR@[200; 201)
                EQ@[200; 201)
                err: `expected COMMA`
            WHITESPACE@[201; 202)
            PARAM@[202; 208)
              BIND_PAT@[202; 208)
                NAME@[202; 208)
                  IDENT@[202; 208) "tokens"
                  err: `expected COMMA`
                  err: `expected pattern`
            PARAM@[208; 209)
              ERROR@[208; 209)
                DOT@[208; 209)
                err: `expected COMMA`
            PARAM@[209; 218)
              TUPLE_STRUCT_PAT@[209; 218)
                PATH@[209; 212)
                  PATH_SEGMENT@[209; 212)
                    NAME_REF@[209; 212)
                      IDENT@[209; 212) "get"
                L_PAREN@[212; 213)
                err: `expected pattern`
                ERROR@[213; 214)
                  STAR@[213; 214)
                  err: `expected COMMA`
                BIND_PAT@[214; 217)
                  NAME@[214; 217)
                    IDENT@[214; 217) "idx"
                R_PAREN@[217; 218)
                err: `expected COMMA`
            WHITESPACE@[218; 219)
            err: `expected pattern`
            PARAM@[219; 220)
              ERROR@[219; 220)
                L_CURLY@[219; 220)
                err: `expected COMMA`
            WHITESPACE@[220; 233)
            err: `expected pattern`
            PARAM@[233; 235)
              ERROR@[233; 235)
                IF_KW@[233; 235)
                err: `expected COMMA`
            WHITESPACE@[235; 236)
            err: `expected pattern`
            PARAM@[236; 237)
              ERROR@[236; 237)
                EXCL@[236; 237)
                err: `expected COMMA`
            PARAM@[237; 242)
              BIND_PAT@[237; 242)
                NAME@[237; 242)
                  IDENT@[237; 242) "token"
                  err: `expected COMMA`
                  err: `expected pattern`
            PARAM@[242; 243)
              ERROR@[242; 243)
                DOT@[242; 243)
                err: `expected COMMA`
            PARAM@[243; 247)
              BIND_PAT@[243; 247)
                NAME@[243; 247)
                  IDENT@[243; 247) "kind"
                  err: `expected COMMA`
                  err: `expected pattern`
            PARAM@[247; 248)
              ERROR@[247; 248)
                DOT@[247; 248)
                err: `expected COMMA`
            PARAM@[248; 259)
              TUPLE_STRUCT_PAT@[248; 259)
                PATH@[248; 257)
                  PATH_SEGMENT@[248; 257)
                    NAME_REF@[248; 257)
                      IDENT@[248; 257) "is_trivia"
                L_PAREN@[257; 258)
                R_PAREN@[258; 259)
                err: `expected COMMA`
            WHITESPACE@[259; 260)
            err: `expected pattern`
            PARAM@[260; 261)
              ERROR@[260; 261)
                L_CURLY@[260; 261)
                err: `expected COMMA`
            WHITESPACE@[261; 278)
            PARAM@[278; 283)
              BIND_PAT@[278; 283)
                NAME@[278; 283)
                  IDENT@[278; 283) "break"
                  err: `expected COMMA`
                  err: `expected pattern`
            PARAM@[283; 284)
              ERROR@[283; 284)
                SEMI@[283; 284)
                err: `expected COMMA`
            WHITESPACE@[284; 297)
            err: `expected pattern`
            PARAM@[297; 298)
              ERROR@[297; 298)
                R_CURLY@[297; 298)
                err: `expected COMMA`
            WHITESPACE@[298; 311)
            PARAM@[311; 318)
              BIND_PAT@[311; 318)
                NAME@[311; 318)
                  IDENT@[311; 318) "builder"
                  err: `expected COMMA`
                  err: `expected pattern`
            PARAM@[318; 319)
              ERROR@[318; 319)
                DOT@[318; 319)
                err: `expected COMMA`
            PARAM@[319; 346)
              TUPLE_STRUCT_PAT@[319; 346)
                PATH@[319; 323)
                  PATH_SEGMENT@[319; 323)
                    NAME_REF@[319; 323)
                      IDENT@[319; 323) "leaf"
                L_PAREN@[323; 324)
                BIND_PAT@[324; 329)
                  NAME@[324; 329)
                    IDENT@[324; 329) "token"
                    err: `expected COMMA`
                    err: `expected pattern`
                ERROR@[329; 330)
                  DOT@[329; 330)
                  err: `expected COMMA`
                BIND_PAT@[330; 334)
                  NAME@[330; 334)
                    IDENT@[330; 334) "kind"
                COMMA@[334; 335)
                WHITESPACE@[335; 336)
                BIND_PAT@[336; 341)
                  NAME@[336; 341)
                    IDENT@[336; 341) "token"
                    err: `expected COMMA`
                    err: `expected pattern`
                ERROR@[341; 342)
                  DOT@[341; 342)
                  err: `expected COMMA`
                BIND_PAT@[342; 345)
                  NAME@[342; 345)
                    IDENT@[342; 345) "len"
                R_PAREN@[345; 346)
                err: `expected COMMA`
                err: `expected pattern`
            PARAM@[346; 347)
              ERROR@[346; 347)
                SEMI@[346; 347)
                err: `expected COMMA`
            WHITESPACE@[347; 360)
            err: `expected pattern`
            PARAM@[360; 361)
              ERROR@[360; 361)
                STAR@[360; 361)
                err: `expected COMMA`
            PARAM@[361; 364)
              BIND_PAT@[361; 364)
                NAME@[361; 364)
                  IDENT@[361; 364) "idx"
                  err: `expected COMMA`
            WHITESPACE@[364; 365)
            err: `expected pattern`
            PARAM@[365; 366)
              ERROR@[365; 366)
                PLUS@[365; 366)
                err: `expected COMMA`
                err: `expected pattern`
            PARAM@[366; 367)
              ERROR@[366; 367)
                EQ@[366; 367)
                err: `expected COMMA`
            WHITESPACE@[367; 368)
            PARAM@[368; 369)
              LITERAL@[368; 369)
                INT_NUMBER@[368; 369) "1"
                err: `expected COMMA`
            WHITESPACE@[369; 378)
            err: `expected pattern`
            PARAM@[378; 379)
              ERROR@[378; 379)
                R_CURLY@[378; 379)
                err: `expected COMMA`
            WHITESPACE@[379; 384)
            err: `expected pattern`
            PARAM@[384; 385)
              ERROR@[384; 385)
                R_CURLY@[384; 385)
                err: `expected COMMA`
                err: `expected pattern`
            PARAM@[385; 386)
              ERROR@[385; 386)
                SEMI@[385; 386)
                err: `expected COMMA`
            WHITESPACE@[386; 387)
            err: `expected pattern`
            PARAM@[387; 388)
              ERROR@[387; 388)
                R_CURLY@[387; 388)
                err: `expected COMMA`
                err: `expected PIPE`
          WHITESPACE@[388; 389)
          err: `expected expression`
          err: `expected SEMI`
          err: `expected R_CURLY`
          ERROR@[389; 389)