boolean (PsiBuilder b, int l) { if (!recursion_guard_(b, l, "env_variable")) return false; if (!nextTokenIs(b, DOLLAR_SIGN)) return false; boolean r; Marker m = enter_section_(b); r = consumeTokens(b, 0, DOLLAR_SIGN, LBRACE); r = r && variable_name(b, l + 1); r = r && consumeToken(b, RBRACE); exit_section_(b, m, ENV_VARIABLE, r); return r; }