SOURCE_FILE@[0; 164)
  TRAIT_DEF@[0; 66)
    VISIBILITY@[0; 3)
      PUB_KW@[0; 3) "pub"
    WHITESPACE@[3; 4) " "
    TRAIT_KW@[4; 9) "trait"
    WHITESPACE@[9; 10) " "
    NAME@[10; 22)
      IDENT@[10; 22) "WriteMessage"
    WHITESPACE@[22; 23) " "
    ITEM_LIST@[23; 66)
      L_CURLY@[23; 24) "{"
      WHITESPACE@[24; 29) "\n    "
      FN_DEF@[29; 64)
        FN_KW@[29; 31) "fn"
        WHITESPACE@[31; 32) " "
        NAME@[32; 45)
          IDENT@[32; 45) "write_message"
        PARAM_LIST@[45; 63)
          L_PAREN@[45; 46) "("
          PARAM@[46; 62)
            REFERENCE_TYPE@[46; 62)
              AMP@[46; 47) "&"
              PATH_TYPE@[47; 62)
                PATH@[47; 62)
                  PATH_SEGMENT@[47; 62)
                    NAME_REF@[47; 62)
                      IDENT@[47; 62) "FrontendMessage"
          R_PAREN@[62; 63) ")"
        SEMI@[63; 64) ";"
      WHITESPACE@[64; 65) "\n"
      R_CURLY@[65; 66) "}"
  WHITESPACE@[66; 68) "\n\n"
  TRAIT_DEF@[68; 104)
    TRAIT_KW@[68; 73) "trait"
    WHITESPACE@[73; 74) " "
    NAME@[74; 82)
      IDENT@[74; 82) "Runnable"
    WHITESPACE@[82; 83) " "
    ITEM_LIST@[83; 104)
      L_CURLY@[83; 84) "{"
      WHITESPACE@[84; 89) "\n    "
      FN_DEF@[89; 102)
        FN_KW@[89; 91) "fn"
        WHITESPACE@[91; 92) " "
        NAME@[92; 99)
          IDENT@[92; 99) "handler"
        PARAM_LIST@[99; 101)
          L_PAREN@[99; 100) "("
          R_PAREN@[100; 101) ")"
        SEMI@[101; 102) ";"
      WHITESPACE@[102; 103) "\n"
      R_CURLY@[103; 104) "}"
  WHITESPACE@[104; 106) "\n\n"
  TRAIT_DEF@[106; 163)
    TRAIT_KW@[106; 111) "trait"
    WHITESPACE@[111; 112) " "
    NAME@[112; 125)
      IDENT@[112; 125) "TraitWithExpr"
    WHITESPACE@[125; 126) " "
    ITEM_LIST@[126; 163)
      L_CURLY@[126; 127) "{"
      WHITESPACE@[127; 132) "\n    "
      FN_DEF@[132; 161)
        FN_KW@[132; 134) "fn"
        WHITESPACE@[134; 135) " "
        NAME@[135; 147)
          IDENT@[135; 147) "fn_with_expr"
        PARAM_LIST@[147; 160)
          L_PAREN@[147; 148) "("
          PARAM@[148; 159)
            BIND_PAT@[148; 149)
              NAME@[148; 149)
                IDENT@[148; 149) "x"
            COLON@[149; 150) ":"
            WHITESPACE@[150; 151) " "
            ARRAY_TYPE@[151; 159)
              L_BRACK@[151; 152) "["
              PATH_TYPE@[152; 155)
                PATH@[152; 155)
                  PATH_SEGMENT@[152; 155)
                    NAME_REF@[152; 155)
                      IDENT@[152; 155) "i32"
              SEMI@[155; 156) ";"
              WHITESPACE@[156; 157) " "
              LITERAL@[157; 158)
                INT_NUMBER@[157; 158) "1"
              R_BRACK@[158; 159) "]"
          R_PAREN@[159; 160) ")"
        SEMI@[160; 161) ";"
      WHITESPACE@[161; 162) "\n"
      R_CURLY@[162; 163) "}"
  WHITESPACE@[163; 164) "\n"