(List (= scope= flags=0 words=[] bindings=[('dashless', {[ComSub (Pipeline (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]}) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]}) )]})]) (= scope= flags=0 words=[] bindings=[('USAGE', {[DQ [LIT_CHARS "list []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " show []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " drop [-q|--quiet] []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " ( pop | apply ) [--index] [-q|--quiet] []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " branch []\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]\n"][LIT_CHARS "\t\t [-u|--include-untracked] [-a|--all] []]\n"][LIT_CHARS " or: "][VarSub dashless][LIT_CHARS " clear"]]})]) (= scope= flags=0 words=[] bindings=[('SUBDIRECTORY_OK', {[LIT_CHARS Yes]})]) (= scope= flags=0 words=[] bindings=[('OPTIONS_SPEC', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('START_DIR', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-setup]} ) (Com {[LIT_CHARS .]} {[LIT_CHARS git-sh-i18n]} ) (Com {[LIT_CHARS require_work_tree]} ) (Com {[LIT_CHARS cd_to_toplevel]} ) (= scope= flags=0 words=[] bindings=[('TMP', {[DQ [VarSub GIT_DIR][LIT_CHARS /.git-stash.][VarSub $]]})]) (= scope= flags=0 words=[] bindings=[('TMPindex', {[VarSub GIT_INDEX_FILE test_op=VS_TEST_HYPHEN {[DQ [VarSub GIT_DIR][LIT_CHARS /index]]}] [LIT_CHARS .stash.] [VarSub $]})]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('ref_stash', {[LIT_CHARS refs/stash]})]) (If (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get-colorbool]} {[LIT_CHARS color.interactive]} ) (List (= scope= flags=0 words=[] bindings=[('help_color', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get-color]} {[LIT_CHARS color.interactive.help]} {[SQ ]})]]})]) (= scope= flags=0 words=[] bindings=[('reset_color', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --get-color]} {[SQ ]} {[LIT_CHARS reset]})]]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('help_color', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('reset_color', {[SQ ]})]) ) ) (FunctionDef no_changes [] (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --quiet]} {[LIT_CHARS --cached]} {[LIT_CHARS HEAD]} {[LIT_CHARS --ignore-submodules]} {[LIT_CHARS --]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-files]} {[LIT_CHARS --quiet]} {[LIT_CHARS --ignore-submodules]} ) (Subshell (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub untracked]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [ComSub (Com {[LIT_CHARS untracked_files]})]]} ) ) ) ) ) ) (FunctionDef untracked_files [] (List (= scope= flags=0 words=[] bindings=[('excl_opt', {[LIT_CHARS --exclude-standard]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub untracked]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS all]]} ) (= scope= flags=0 words=[] bindings=[('excl_opt', {[SQ ]})]) ) (Com {[LIT_CHARS git]} {[LIT_CHARS ls-files]} {[LIT_CHARS -o]} {[LIT_CHARS -z]} {[VarSub excl_opt]} ) ) ) (FunctionDef clear_stash [] (List (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "git stash clear with parameters is unimplemented"]]})]]} ) ) (If (= scope= flags=0 words=[] bindings=[('current', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[VarSub ref_stash]})]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -d]} {[VarSub ref_stash]} {[VarSub current]} ) ) ) ) (FunctionDef create_stash [] (List (= scope= flags=0 words=[] bindings=[('stash_msg', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('untracked', {[DQ [VarSub 2]]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -q]} {[LIT_CHARS --refresh]} ) (If (Com {[LIT_CHARS no_changes]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) (If (= scope= flags=0 words=[] bindings=[('b_commit', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) (= scope= flags=0 words=[] bindings=[('head', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --oneline]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[LIT_CHARS HEAD]} {[LIT_CHARS --]})]})]) (ElseTrue) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "You do not have the initial commit yet"]]})]]} ) ) (If (= scope= flags=0 words=[] bindings=[('branch', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS symbolic-ref]} {[LIT_CHARS -q]} {[LIT_CHARS HEAD]})]})]) (= scope= flags=0 words=[] bindings=[('branch', {[VarSub branch transform_ops=[VS_UNARY_POUND {[LIT_CHARS refs] [LIT_SLASH /] [LIT_CHARS heads] [LIT_SLASH /]}]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('branch', {[SQ ]})]) ) (= scope= flags=0 words=[] bindings=[('msg', {[ComSub (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub branch]]} {[DQ [VarSub head]]})]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('i_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('i_commit', {[ComSub (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub msg]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub i_tree]} {[LIT_CHARS -p]} {[VarSub b_commit]}) )]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot save the current index state"]]})]]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub untracked]]} ) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('u_commit', {[ComSub (Pipeline (Com {[LIT_CHARS untracked_files]}) (Subshell (List (= scope= flags=1 words=[] bindings=[('GIT_INDEX_FILE', {[DQ [VarSub TMPindex]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMPindex]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -z]} {[LIT_CHARS --add]} {[LIT_CHARS --remove]} {[LIT_CHARS --stdin]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('u_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (AndOr OP_AND_IF (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub msg]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub u_tree]}) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMPindex]]}) ) ) ) ) ) ) )]})]) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Cannot save the untracked files"]]} ) ) (= scope= flags=0 words=[] bindings=[('untracked_commit_option', {[DQ [LIT_CHARS "-p "][VarSub u_commit]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('untracked_commit_option', {[SQ ]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub patch_mode]]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('w_tree', {[ComSub (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS --index-output] [LIT_DBRACKET_LIKE "="] [DQ [VarSub TMPindex]]} {[LIT_CHARS -m]} {[VarSub i_tree]}) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('GIT_INDEX_FILE', {[DQ [VarSub TMPindex]]})]) (AndOr OP_AND_IF (= scope= flags=1 words=[{[LIT_CHARS GIT_INDEX_FILE]}] bindings=[]) (AndOr OP_AND_IF (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub TMP][LIT_CHARS -stagenames]]} "> 1)]{[LIT_CHARS git]} {[LIT_CHARS diff]} {[LIT_CHARS --name-only]} {[LIT_CHARS -z]} {[LIT_CHARS HEAD]} {[LIT_CHARS --]}) (AndOr OP_AND_IF (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub TMP][LIT_CHARS -stagenames]]} 0)]{[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -z]} {[LIT_CHARS --add]} {[LIT_CHARS --remove]} {[LIT_CHARS --stdin]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMPindex]]}) ) ) ) ) ) ) )]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot save the current worktree state"]]})]]} ) ) (ElseTrue) (List (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMP][LIT_CHARS -index]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS HEAD]} more_env=[('GIT_INDEX_FILE', {[DQ [VarSub TMP][LIT_CHARS -index]]})] ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add--interactive]} {[LIT_CHARS --patch] [LIT_DBRACKET_LIKE "="] [LIT_CHARS stash]} {[LIT_CHARS --]} more_env=[('GIT_INDEX_FILE', {[DQ [VarSub TMP][LIT_CHARS -index]]})] ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('w_tree', {[ComSub (Com more_env=[('GIT_INDEX_FILE', {[DQ [VarSub TMP][LIT_CHARS -index]]})] {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot save the current worktree state"]]})]]} ) ) ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS -p]} {[LIT_CHARS HEAD]} {[VarSub w_tree]} {[LIT_CHARS --]} < (FilenameRedirectNode filename={[DQ [VarSub TMP][LIT_CHARS -patch]]} "> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub TMP][LIT_CHARS -patch]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No changes selected"]]})]]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMP][LIT_CHARS -index]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot remove temporary index (can't happen)"]]})]]} ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub stash_msg]]} ) (= scope= flags=0 words=[] bindings=[('stash_msg', {[ComSub (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub msg]]})]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('stash_msg', {[ComSub (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub branch]]} {[DQ [VarSub stash_msg]]})]})]) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('w_commit', {[ComSub (Pipeline (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub stash_msg]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS commit-tree]} {[VarSub w_tree]} {[LIT_CHARS -p]} {[VarSub b_commit]} {[LIT_CHARS -p]} {[VarSub i_commit]} {[VarSub untracked_commit_option]}) )]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot record working tree state"]]})]]} ) ) ) ) (FunctionDef save_stash [] (List (= scope= flags=0 words=[] bindings=[('keep_index', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('patch_mode', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('untracked', {[SQ ]})]) (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -k]}, {[LIT_CHARS --keep-index]}], [{[LIT_CHARS --no-keep-index]}], [{[LIT_CHARS -p]}, {[LIT_CHARS --patch]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS -u]}, {[LIT_CHARS --include-untracked]}], [{[LIT_CHARS -a]}, {[LIT_CHARS --all]}], [{[LIT_CHARS --]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('keep_index', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('keep_index', {[LIT_CHARS n]})]) (List (= scope= flags=0 words=[] bindings=[('patch_mode', {[LIT_CHARS t]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub keep_index]]} ) (= scope= flags=0 words=[] bindings=[('keep_index', {[LIT_CHARS t]})]) ) ) (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('untracked', {[LIT_CHARS untracked]})]) (= scope= flags=0 words=[] bindings=[('untracked', {[LIT_CHARS all]})]) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS break]} ) ) (List (= scope= flags=0 words=[] bindings=[('option', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS eval_gettextln]} {[DQ [LIT_CHARS "error: unknown option for 'stash save': "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "option\n"][LIT_CHARS " To provide a message, use git stash save -- '"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "option'"]]} ) (Com {[LIT_CHARS usage]} ) ) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub patch_mode]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub untracked]]} ) ) (Com {[LIT_CHARS die]} {[DQ [LIT_CHARS "Can't use --patch and --include-untracked or --all at the same time"]]} ) ) (= scope= flags=0 words=[] bindings=[('stash_msg', {[DQ [VarSub *]]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -q]} {[LIT_CHARS --refresh]} ) (If (Com {[LIT_CHARS no_changes]} ) (List (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No local changes to save"]]})]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub GIT_DIR][LIT_CHARS /logs/][VarSub ref_stash]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS clear_stash]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot initialize stash"]]})]]} ) ) ) (Com {[LIT_CHARS create_stash]} {[DQ [VarSub stash_msg]]} {[VarSub untracked]} ) (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[DQ [VarSub GIT_DIR][LIT_CHARS /logs/][VarSub ref_stash]]} >"> 1), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-ref]} {[LIT_CHARS -m]} {[DQ [VarSub stash_msg]]} {[VarSub ref_stash]} {[VarSub w_commit]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot save the current status"]]})]]} ) ) (Com {[LIT_CHARS say]} {[LIT_CHARS Saved]} {[LIT_CHARS working]} {[LIT_CHARS directory]} {[LIT_CHARS and]} {[LIT_CHARS index]} {[LIT_CHARS state]} {[DQ [VarSub stash_msg]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub patch_mode]]} ) (List (Com {[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[VarSub GIT_QUIET test_op=VS_TEST_COLON_PLUS {[LIT_CHARS -q]}]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub untracked]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS all]]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('CLEAN_X_OPTION', {[LIT_CHARS -x]})]) (= scope= flags=0 words=[] bindings=[('CLEAN_X_OPTION', {[SQ ]})]) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub untracked]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS clean]} {[LIT_CHARS --force]} {[LIT_CHARS --quiet]} {[LIT_CHARS -d]} {[VarSub CLEAN_X_OPTION]} ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub keep_index]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS t]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[VarSub i_tree]} ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS --reset]} {[LIT_CHARS -u]} {[VarSub i_tree]} ) ) ) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS apply]} {[LIT_CHARS -R]} < (FilenameRedirectNode filename={[DQ [VarSub TMP][LIT_CHARS -patch]]} 0), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot remove worktree changes"]]})]]} ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub keep_index]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS t]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS reset]} ) ) ) ) ) ) (FunctionDef have_stash [] (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[VarSub ref_stash]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) (FunctionDef list_stash [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS have_stash]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS log]} {[LIT_CHARS --format] [LIT_DBRACKET_LIKE "="] [DQ [LIT_CHARS "%gd: %gs"]]} {[LIT_CHARS -g]} {[DQ [VarSub @]]} {[VarSub ref_stash]} {[LIT_CHARS --]} ) ) ) (FunctionDef show_stash [] (List (Com {[LIT_CHARS assert_stash_like]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS diff]} {[VarSub FLAGS test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS --stat]}]} {[VarSub b_commit]} {[VarSub w_commit]} ) ) ) (FunctionDef parse_flags_and_rev [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub PARSE_CACHE]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [VarSub *]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (= scope= flags=0 words=[] bindings=[('PARSE_CACHE', {[DQ [VarSub *]]})]) (= scope= flags=0 words=[] bindings=[('IS_STASH_LIKE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('IS_STASH_REF', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('INDEX_OPTION', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('s', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('w_commit', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('b_commit', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('i_commit', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('u_commit', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('w_tree', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('b_tree', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('i_tree', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('u_tree', {[SQ ]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('REV', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --no-flags]} {[LIT_CHARS --symbolic]} {[DQ [VarSub @]]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (= scope= flags=0 words=[] bindings=[('FLAGS', {[SQ ]})]) (For opt do_arg_iter) (Case to_match={[DQ [VarSub opt]]}, pat_word_list=[[{[LIT_CHARS -q]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --index]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('GIT_QUIET', {[LIT_CHARS -t]})]) (= scope= flags=0 words=[] bindings=[('INDEX_OPTION', {[LIT_CHARS --index]})]) (= scope= flags=0 words=[] bindings=[('FLAGS', {[DQ [VarSub FLAGS][VarSub FLAGS test_op=VS_TEST_COLON_PLUS {[LIT_CHARS " "]}][VarSub opt]]})]) ) ) (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[VarSub REV]} ) (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_CHARS 1]}], [{[LIT_OTHER "*"]}]] (List (AndOr OP_OR_IF (Com {[LIT_CHARS have_stash]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No stash found."]]})]]} ) ) (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[VarSub ref_stash] [LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS 0] [LIT_RBRACE "}"]} ) ) (Com {[LIT_OTHER ":"]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Too many revisions specified: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS REV]]})]]} ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('REV', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --quiet]} {[LIT_CHARS --symbolic]} {[LIT_CHARS --verify]} {[VarSub 1]})]})]) (List (= scope= flags=0 words=[] bindings=[('reference', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "reference is not valid reference"]]})]]} ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('i_commit', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --quiet]} {[LIT_CHARS --verify]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 2]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub REV]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 1]} {[VarSub REV] [LIT_OTHER ":"]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 1] [LIT_OTHER ":"]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 2] [LIT_OTHER ":"]})]} ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('s', {[VarSub 1]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('w_commit', {[VarSub 1]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('b_commit', {[VarSub 2]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('w_tree', {[VarSub 3]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('b_tree', {[VarSub 4]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('i_tree', {[VarSub 5]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('IS_STASH_LIKE', {[LIT_CHARS t]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub ref_stash]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --symbolic-full-name]} {[DQ [VarSub REV transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS "@*"]}]]]})]]} ) (= scope= flags=0 words=[] bindings=[('IS_STASH_REF', {[LIT_CHARS t]})]) ) ) ) ) ) ) ) ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('u_commit', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --quiet]} {[LIT_CHARS --verify]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 3]})]})]) (= scope= flags=0 words=[] bindings=[('u_tree', {[ComSub (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2)]{[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[VarSub REV] [LIT_OTHER "^"] [LIT_CHARS 3] [LIT_OTHER ":"]})]})]) ) ) ) (FunctionDef is_stash_like [] (List (Com {[LIT_CHARS parse_flags_and_rev]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub IS_STASH_LIKE]]} ) ) ) (FunctionDef assert_stash_like [] (AndOr OP_OR_IF (Com {[LIT_CHARS is_stash_like]} {[DQ [VarSub @]]} ) (List (= scope= flags=0 words=[] bindings=[('args', {[DQ [VarSub *]]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "args' is not a stash-like commit"]]})]]} ) ) ) ) (FunctionDef is_stash_ref [] (AndOr OP_AND_IF (Com {[LIT_CHARS is_stash_like]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub IS_STASH_REF]]} ) ) ) (FunctionDef assert_stash_ref [] (AndOr OP_OR_IF (Com {[LIT_CHARS is_stash_ref]} {[DQ [VarSub @]]} ) (List (= scope= flags=0 words=[] bindings=[('args', {[DQ [VarSub *]]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "'"][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "args' is not a stash reference"]]})]]} ) ) ) ) (FunctionDef apply_stash [] (List (Com {[LIT_CHARS assert_stash_like]} {[DQ [VarSub @]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS -q]} {[LIT_CHARS --refresh]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "unable to refresh index"]]})]]} ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('c_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot apply a stash in the middle of a merge"]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('unstashed_index_tree', {[SQ ]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub INDEX_OPTION]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub b_tree]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub i_tree]]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub c_tree]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub i_tree]]} ) ) ) (List (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS diff-tree]} {[LIT_CHARS --binary]} {[VarSub s] [LIT_OTHER "^"] [LIT_CHARS 2] [LIT_OTHER "^"] [LIT_CHARS ..] [VarSub s] [LIT_OTHER "^"] [LIT_CHARS 2]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS apply]} {[LIT_CHARS --cached]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub ?]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Conflicts in index. Try without --index."]]})]]} ) ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('unstashed_index_tree', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS write-tree]})]})]) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Could not save index tree"]]})]]} ) ) (Com {[LIT_CHARS git]} {[LIT_CHARS reset]} ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub u_tree]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git-read-tree]} {[DQ [VarSub u_tree]]} more_env=[('GIT_INDEX_FILE', {[DQ [VarSub TMPindex]]})] ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout-index]} {[LIT_CHARS --all]} more_env=[('GIT_INDEX_FILE', {[DQ [VarSub TMPindex]]})] ) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub TMPindex]]} ) (Com {[LIT_CHARS die]} {[SQ ]} ) ) ) ) ) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\tGITHEAD_"][VarSub w_tree][LIT_CHARS "='Stashed changes' &&\n"][LIT_CHARS "\t\tGITHEAD_"][VarSub c_tree][LIT_CHARS "='Updated upstream' &&\n"][LIT_CHARS "\t\tGITHEAD_"][VarSub b_tree][LIT_CHARS "='Version stash was based on' &&\n"][LIT_CHARS "\t\texport GITHEAD_"][VarSub w_tree][LIT_CHARS " GITHEAD_"][VarSub c_tree][LIT_CHARS " GITHEAD_"][VarSub b_tree][LIT_CHARS "\n"][LIT_CHARS "\t"]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_QUIET]]} ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('GIT_MERGE_VERBOSITY', {[LIT_CHARS 0]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_MERGE_VERBOSITY]}] bindings=[]) ) ) (If (Com {[LIT_CHARS git]} {[LIT_CHARS merge-recursive]} {[VarSub b_tree]} {[LIT_CHARS --]} {[VarSub c_tree]} {[VarSub w_tree]} ) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub unstashed_index_tree]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[DQ [VarSub unstashed_index_tree]]} ) (ElseTrue) (List (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('a', {[DQ [VarSub TMP][LIT_CHARS -added]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS diff-index]} {[LIT_CHARS --cached]} {[LIT_CHARS --name-only]} {[LIT_CHARS --diff-filter] [LIT_DBRACKET_LIKE "="] [LIT_CHARS A]} {[VarSub c_tree]} < (FilenameRedirectNode filename={[DQ [VarSub a]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS read-tree]} {[LIT_CHARS --reset]} {[VarSub c_tree]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[LIT_CHARS --stdin]} < (FilenameRedirectNode filename={[DQ [VarSub a]]} 0), > ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "Cannot unstage modified files"]]})]]} ) ) ) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub a]]} ) ) ) (= scope= flags=0 words=[] bindings=[('squelch', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_QUIET]]} ) (= scope= flags=0 words=[] bindings=[('squelch', {[SQ /dev/null 2>&1">]})]) ) (AndOr OP_OR_IF (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub START_DIR]]} ) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "git status "][VarSub squelch]]} ) ) ) (Com {[LIT_OTHER ":"]} ) ) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('status', {[VarSub ?]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS rerere]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub INDEX_OPTION]]} ) (Com {[LIT_CHARS gettextln]} {[DQ [LIT_CHARS "Index was not unstashed."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) (Com {[LIT_CHARS exit]} {[VarSub status]} ) ) ) ) ) (FunctionDef pop_stash [] (List (Com {[LIT_CHARS assert_stash_ref]} {[DQ [VarSub @]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS apply_stash]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS drop_stash]} {[DQ [VarSub @]]} ) ) ) ) (FunctionDef drop_stash [] (List (Com {[LIT_CHARS assert_stash_ref]} {[DQ [VarSub @]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS reflog]} {[LIT_CHARS delete]} {[LIT_CHARS --updateref]} {[LIT_CHARS --rewrite]} {[DQ [VarSub REV]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [LIT_CHARS "Dropped "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{REV} ("][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "s)"]]})]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS eval_gettext]} {[DQ [\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{REV}: Could not drop stash entry"]]})]]} ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub ref_stash][LIT_CHARS "@{0}"]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS clear_stash]} ) ) ) ) (FunctionDef apply_to_branch [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS die]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "No branch name specified"]]})]]} ) ) (= scope= flags=0 words=[] bindings=[('branch', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[LIT_CHARS --index]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS assert_stash_like]} {[DQ [VarSub @]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout]} {[LIT_CHARS -b]} {[VarSub branch]} {[VarSub REV] [LIT_OTHER "^"]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS apply_stash]} {[DQ [VarSub @]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub IS_STASH_REF]]} ) (Com {[LIT_CHARS drop_stash]} {[DQ [VarSub @]]} ) ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('PARSE_CACHE', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('seen_non_option', {[SQ ]})]) (For opt do_arg_iter) (Case to_match={[DQ [VarSub opt]]}, pat_word_list=[[{[LIT_CHARS -] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('seen_non_option', {[LIT_CHARS t]})]) (Com {[LIT_CHARS break]} ) ) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub seen_non_option]]} ) (Com {[LIT_CHARS set]} {[DQ [LIT_CHARS save]]} {[DQ [VarSub @]]} ) ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS list]}], [{[LIT_CHARS show]}], [{[LIT_CHARS save]}], [{[LIT_CHARS apply]}], [{[LIT_CHARS clear]}], [{[LIT_CHARS create]}], [{[LIT_CHARS drop]}], [{[LIT_CHARS pop]}], [{[LIT_CHARS branch]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS list_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS show_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS save_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS apply_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS clear_stash]} {[DQ [VarSub @]]} ) ) (List (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS create]} ) ) (Com {[LIT_CHARS shift]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS create_stash]} {[DQ [VarSub *]]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub w_commit]]} ) ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS drop_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS pop_stash]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS apply_to_branch]} {[DQ [VarSub @]]} ) ) (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (AndOr OP_AND_IF (Com {[LIT_CHARS save_stash]} ) (Com {[LIT_CHARS say]} {[DQ [ComSub (Com {[LIT_CHARS gettext]} {[DQ [LIT_CHARS "(To restore them type "][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "git stash apply"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS ")"]]})]]} ) ) (Com {[LIT_CHARS usage]} ) ) ) )