FILE@[0; 164) TRAIT_DEF@[0; 164) VISIBILITY@[0; 3) PUB_KW@[0; 3) WHITESPACE@[3; 4) TRAIT_KW@[4; 9) WHITESPACE@[9; 10) NAME@[10; 22) IDENT@[10; 22) "WriteMessage" WHITESPACE@[22; 23) L_CURLY@[23; 24) WHITESPACE@[24; 29) FN_DEF@[29; 164) FN_KW@[29; 31) WHITESPACE@[31; 32) NAME@[32; 45) IDENT@[32; 45) "write_message" PARAM_LIST@[45; 164) L_PAREN@[45; 46) PARAM@[46; 63) REF_PAT@[46; 62) AMP@[46; 47) BIND_PAT@[47; 62) NAME@[47; 62) IDENT@[47; 62) "FrontendMessage" err: `expected COLON` err: `expected type` ERROR@[62; 63) R_PAREN@[62; 63) err: `expected COMMA` err: `expected pattern` PARAM@[63; 66) ERROR@[63; 64) SEMI@[63; 64) err: `expected COLON` WHITESPACE@[64; 65) err: `expected type` ERROR@[65; 66) R_CURLY@[65; 66) err: `expected COMMA` WHITESPACE@[66; 68) err: `expected pattern` PARAM@[68; 82) ERROR@[68; 73) TRAIT_KW@[68; 73) err: `expected COLON` WHITESPACE@[73; 74) PATH_TYPE@[74; 82) PATH@[74; 82) PATH_SEGMENT@[74; 82) NAME_REF@[74; 82) IDENT@[74; 82) "Runnable" err: `expected COMMA` WHITESPACE@[82; 83) err: `expected pattern` PARAM@[83; 91) ERROR@[83; 84) L_CURLY@[83; 84) err: `expected COLON` WHITESPACE@[84; 89) FN_POINTER_TYPE@[89; 91) FN_KW@[89; 91) err: `expected parameters` err: `expected COMMA` WHITESPACE@[91; 92) PARAM@[92; 102) TUPLE_STRUCT_PAT@[92; 101) PATH@[92; 99) PATH_SEGMENT@[92; 99) NAME_REF@[92; 99) IDENT@[92; 99) "handler" L_PAREN@[99; 100) R_PAREN@[100; 101) err: `expected COLON` err: `expected type` ERROR@[101; 102) SEMI@[101; 102) err: `expected COMMA` WHITESPACE@[102; 103) err: `expected pattern` PARAM@[103; 111) ERROR@[103; 104) R_CURLY@[103; 104) err: `expected COLON` WHITESPACE@[104; 106) err: `expected type` ERROR@[106; 111) TRAIT_KW@[106; 111) err: `expected COMMA` WHITESPACE@[111; 112) PARAM@[112; 164) STRUCT_PAT@[112; 163) PATH@[112; 125) PATH_SEGMENT@[112; 125) NAME_REF@[112; 125) IDENT@[112; 125) "TraitWithExpr" WHITESPACE@[125; 126) L_CURLY@[126; 127) WHITESPACE@[127; 132) err: `expected ident` ERROR@[132; 134) FN_KW@[132; 134) err: `expected COMMA` WHITESPACE@[134; 135) BIND_PAT@[135; 147) NAME@[135; 147) IDENT@[135; 147) "fn_with_expr" err: `expected COMMA` err: `expected ident` ERROR@[147; 148) L_PAREN@[147; 148) err: `expected COMMA` IDENT@[148; 149) "x" COLON@[149; 150) WHITESPACE@[150; 151) SLICE_PAT@[151; 159) L_BRACK@[151; 152) BIND_PAT@[152; 155) NAME@[152; 155) IDENT@[152; 155) "i32" err: `expected COMMA` err: `expected pattern` ERROR@[155; 156) SEMI@[155; 156) err: `expected COMMA` WHITESPACE@[156; 157) LITERAL@[157; 158) INT_NUMBER@[157; 158) "1" R_BRACK@[158; 159) err: `expected COMMA` err: `expected ident` ERROR@[159; 160) R_PAREN@[159; 160) err: `expected COMMA` err: `expected ident` ERROR@[160; 161) SEMI@[160; 161) WHITESPACE@[161; 162) R_CURLY@[162; 163) err: `expected COLON` WHITESPACE@[163; 164) err: `expected type` err: `expected COMMA` err: `expected R_PAREN` err: `expected block` err: `expected R_CURLY` ERROR@[164; 164)