SOURCE_FILE@0..82 FN@0..81 FN_KW@0..2 "fn" WHITESPACE@2..3 " " NAME@3..6 IDENT@3..6 "foo" PARAM_LIST@6..8 L_PAREN@6..7 "(" R_PAREN@7..8 ")" WHITESPACE@8..9 " " BLOCK_EXPR@9..81 L_CURLY@9..10 "{" WHITESPACE@10..15 "\n " EXPR_STMT@15..26 ATTR@15..19 POUND@15..16 "#" L_BRACK@16..17 "[" PATH@17..18 PATH_SEGMENT@17..18 NAME_REF@17..18 IDENT@17..18 "A" R_BRACK@18..19 "]" WHITESPACE@19..20 " " CALL_EXPR@20..25 PATH_EXPR@20..23 PATH@20..23 PATH_SEGMENT@20..23 NAME_REF@20..23 IDENT@20..23 "foo" ARG_LIST@23..25 L_PAREN@23..24 "(" R_PAREN@24..25 ")" SEMICOLON@25..26 ";" WHITESPACE@26..31 "\n " EXPR_STMT@31..42 ATTR@31..35 POUND@31..32 "#" L_BRACK@32..33 "[" PATH@33..34 PATH_SEGMENT@33..34 NAME_REF@33..34 IDENT@33..34 "B" R_BRACK@34..35 "]" WHITESPACE@35..36 " " MACRO_CALL@36..42 PATH@36..39 PATH_SEGMENT@36..39 NAME_REF@36..39 IDENT@36..39 "bar" BANG@39..40 "!" TOKEN_TREE@40..42 L_CURLY@40..41 "{" R_CURLY@41..42 "}" WHITESPACE@42..47 "\n " EXPR_STMT@47..59 ATTR@47..51 POUND@47..48 "#" L_BRACK@48..49 "[" PATH@49..50 PATH_SEGMENT@49..50 NAME_REF@49..50 IDENT@49..50 "C" R_BRACK@50..51 "]" WHITESPACE@51..52 " " ATTR@52..56 POUND@52..53 "#" L_BRACK@53..54 "[" PATH@54..55 PATH_SEGMENT@54..55 NAME_REF@54..55 IDENT@54..55 "D" R_BRACK@55..56 "]" WHITESPACE@56..57 " " BLOCK_EXPR@57..59 L_CURLY@57..58 "{" R_CURLY@58..59 "}" WHITESPACE@59..64 "\n " EXPR_STMT@64..79 ATTR@64..68 POUND@64..65 "#" L_BRACK@65..66 "[" PATH@66..67 PATH_SEGMENT@66..67 NAME_REF@66..67 IDENT@66..67 "D" R_BRACK@67..68 "]" WHITESPACE@68..69 " " RETURN_EXPR@69..78 RETURN_KW@69..75 "return" WHITESPACE@75..76 " " TUPLE_EXPR@76..78 L_PAREN@76..77 "(" R_PAREN@77..78 ")" SEMICOLON@78..79 ";" WHITESPACE@79..80 "\n" R_CURLY@80..81 "}" WHITESPACE@81..82 "\n"