SOURCE_FILE@[0; 575)
  FN_DEF@[0; 574)
    FN_KW@[0; 2)
    WHITESPACE@[2; 3)
    NAME@[3; 7)
      IDENT@[3; 7) "main"
    PARAM_LIST@[7; 9)
      L_PAREN@[7; 8)
      R_PAREN@[8; 9)
    WHITESPACE@[9; 10)
    BLOCK@[10; 574)
      L_CURLY@[10; 11)
      WHITESPACE@[11; 16)
      ENUM_DEF@[16; 152)
        ENUM_KW@[16; 20)
        WHITESPACE@[20; 21)
        NAME@[21; 25)
          IDENT@[21; 25) "Test"
        WHITESPACE@[25; 26)
        ENUM_VARIANT_LIST@[26; 152)
          L_CURLY@[26; 27)
          WHITESPACE@[27; 36)
          ENUM_VARIANT@[36; 40)
            NAME@[36; 40)
              IDENT@[36; 40) "Var1"
          COMMA@[40; 41)
          WHITESPACE@[41; 50)
          ENUM_VARIANT@[50; 62)
            NAME@[50; 54)
              IDENT@[50; 54) "Var2"
            POS_FIELD_LIST@[54; 62)
              L_PAREN@[54; 55)
              POS_FIELD@[55; 61)
                PATH_TYPE@[55; 61)
                  PATH@[55; 61)
                    PATH_SEGMENT@[55; 61)
                      NAME_REF@[55; 61)
                        IDENT@[55; 61) "String"
              R_PAREN@[61; 62)
          COMMA@[62; 63)
          WHITESPACE@[63; 72)
          ENUM_VARIANT@[72; 145)
            NAME@[72; 76)
              IDENT@[72; 76) "Var3"
            WHITESPACE@[76; 77)
            NAMED_FIELD_DEF_LIST@[77; 145)
              L_CURLY@[77; 78)
              WHITESPACE@[78; 91)
              NAMED_FIELD_DEF@[91; 95)
                NAME@[91; 94)
                  IDENT@[91; 94) "abc"
                COLON@[94; 95)
                err: `expected type`
                err: `expected COMMA`
              WHITESPACE@[95; 96)
              err: `expected field`
              ERROR@[96; 98)
                L_CURLY@[96; 97)
                R_CURLY@[97; 98)
                err: `expected field declaration`
              ERROR@[98; 99)
                COMMA@[98; 99)
              WHITESPACE@[99; 100)
              COMMENT@[100; 135)
              WHITESPACE@[135; 144)
              R_CURLY@[144; 145)
          COMMA@[145; 146)
          WHITESPACE@[146; 151)
          R_CURLY@[151; 152)
      WHITESPACE@[152; 158)
      COMMENT@[158; 171)
      WHITESPACE@[171; 176)
      LET_STMT@[176; 186)
        LET_KW@[176; 179)
        WHITESPACE@[179; 180)
        BIND_PAT@[180; 181)
          NAME@[180; 181)
            IDENT@[180; 181) "a"
        WHITESPACE@[181; 182)
        EQ@[182; 183)
        WHITESPACE@[183; 184)
        LITERAL@[184; 185)
          INT_NUMBER@[184; 185) "1"
        SEMI@[185; 186)
      WHITESPACE@[186; 191)
      ENUM_DEF@[191; 223)
        ENUM_KW@[191; 195)
        WHITESPACE@[195; 196)
        NAME@[196; 201)
          IDENT@[196; 201) "Test2"
        WHITESPACE@[201; 202)
        ENUM_VARIANT_LIST@[202; 223)
          L_CURLY@[202; 203)
          WHITESPACE@[203; 212)
          ENUM_VARIANT@[212; 216)
            NAME@[212; 216)
              IDENT@[212; 216) "Fine"
          COMMA@[216; 217)
          WHITESPACE@[217; 222)
          R_CURLY@[222; 223)
      WHITESPACE@[223; 229)
      ENUM_DEF@[229; 300)
        ENUM_KW@[229; 233)
        WHITESPACE@[233; 234)
        NAME@[234; 239)
          IDENT@[234; 239) "Test3"
        WHITESPACE@[239; 240)
        ENUM_VARIANT_LIST@[240; 300)
          L_CURLY@[240; 241)
          WHITESPACE@[241; 250)
          ENUM_VARIANT@[250; 293)
            NAME@[250; 259)
              IDENT@[250; 259) "StillFine"
            WHITESPACE@[259; 260)
            NAMED_FIELD_DEF_LIST@[260; 293)
              L_CURLY@[260; 261)
              WHITESPACE@[261; 274)
              NAMED_FIELD_DEF@[274; 282)
                NAME@[274; 277)
                  IDENT@[274; 277) "def"
                COLON@[277; 278)
                WHITESPACE@[278; 279)
                PATH_TYPE@[279; 282)
                  PATH@[279; 282)
                    PATH_SEGMENT@[279; 282)
                      NAME_REF@[279; 282)
                        IDENT@[279; 282) "i32"
              COMMA@[282; 283)
              WHITESPACE@[283; 292)
              R_CURLY@[292; 293)
          COMMA@[293; 294)
          WHITESPACE@[294; 299)
          R_CURLY@[299; 300)
      WHITESPACE@[300; 306)
      EXPR_STMT@[306; 459)
        BLOCK_EXPR@[306; 459)
          BLOCK@[306; 459)
            L_CURLY@[306; 307)
            WHITESPACE@[307; 316)
            ENUM_DEF@[316; 453)
              COMMENT@[316; 329)
              WHITESPACE@[329; 338)
              ENUM_KW@[338; 342)
              WHITESPACE@[342; 343)
              NAME@[343; 348)
                IDENT@[343; 348) "Test4"
              WHITESPACE@[348; 349)
              ENUM_VARIANT_LIST@[349; 453)
                L_CURLY@[349; 350)
                WHITESPACE@[350; 363)
                ENUM_VARIANT@[363; 372)
                  NAME@[363; 367)
                    IDENT@[363; 367) "Nope"
                  POS_FIELD_LIST@[367; 372)
                    L_PAREN@[367; 368)
                    POS_FIELD@[368; 371)
                      PATH_TYPE@[368; 371)
                        PATH@[368; 371)
                          PATH_SEGMENT@[368; 371)
                            NAME_REF@[368; 371)
                              IDENT@[368; 371) "i32"
                              err: `expected COMMA`
                    WHITESPACE@[371; 372)
                    err: `expected a type`
                    err: `expected R_PAREN`
                    err: `expected COMMA`
                    err: `expected enum variant`
                    ERROR@[372; 372)
                ERROR@[372; 374)
                  L_CURLY@[372; 373)
                  R_CURLY@[373; 374)
                  err: `expected enum variant`
                ERROR@[374; 375)
                  R_PAREN@[374; 375)
                WHITESPACE@[375; 376)
                COMMENT@[376; 396)
                WHITESPACE@[396; 422)
                COMMENT@[422; 443)
                WHITESPACE@[443; 452)
                R_CURLY@[452; 453)
            WHITESPACE@[453; 458)
            R_CURLY@[458; 459)
      WHITESPACE@[459; 464)
      COMMENT@[464; 486)
      WHITESPACE@[486; 491)
      LET_STMT@[491; 510)
        LET_KW@[491; 494)
        WHITESPACE@[494; 495)
        BIND_PAT@[495; 505)
          NAME@[495; 505)
            IDENT@[495; 505) "bad_syntax"
        WHITESPACE@[505; 506)
        EQ@[506; 507)
        WHITESPACE@[507; 508)
        err: `expected expression`
        ERROR@[508; 509)
          UNDERSCORE@[508; 509)
        SEMI@[509; 510)
      WHITESPACE@[510; 511)
      COMMENT@[511; 572)
      WHITESPACE@[572; 573)
      R_CURLY@[573; 574)
  WHITESPACE@[574; 575)