(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:dashless)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: 
                  (CommandList
                    children: [
                      (Pipeline
                        children: [
                          (C {(basename)} {(DQ ($ VSub_Number "$0"))})
                          (C {(sed)} {(-e)} {(SQ <"s/-/ /">)})
                        ]
                        negated: False
                      )
                    ]
                  )
                left_token: <Left_CommandSub "$(">
                spids: [8 24]
              )
            }
          spids: [7]
        )
      ]
      spids: [7]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:USAGE)
          op: Equal
          rhs: 
            {
              (DQ ("list [<options>]\n") ("   or: ") ($ VSub_Name "$dashless") (" show [<stash>]\n") 
                ("   or: ") ($ VSub_Name "$dashless") (" drop [-q|--quiet] [<stash>]\n") ("   or: ") ($ VSub_Name "$dashless") 
                (" ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n") ("   or: ") ($ VSub_Name "$dashless") (" branch <branchname> [<stash>]\n") ("   or: ") 
                ($ VSub_Name "$dashless") (" [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]\n") 
                ("\t\t       [-u|--include-untracked] [-a|--all] [<message>]]\n") ("   or: ") ($ VSub_Name "$dashless") (" clear")
              )
            }
          spids: [26]
        )
      ]
      spids: [26]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)} spids:[51])]
      spids: [51]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_SPEC) op:Equal rhs:{(SQ )} spids:[54])]
      spids: [54]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:START_DIR)
          op: Equal
          rhs: 
            {
              (CommandSubPart
                command_list: (CommandList children:[(C {(pwd)})])
                left_token: <Left_CommandSub "$(">
                spids: [57 59]
              )
            }
          spids: [56]
        )
      ]
      spids: [56]
    )
    (C {(.)} {(git-sh-setup)})
    (C {(require_work_tree)})
    (C {(cd_to_toplevel)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMP)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$GIT_DIR") (/.git-stash.) ($ VSub_Dollar "$$"))}
          spids: [70]
        )
      ]
      spids: [70]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:TMPindex)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name GIT_INDEX_FILE>
                suffix_op: 
                  (StringUnary
                    op_id: VTest_Hyphen
                    arg_word: 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(git)} {(rev-parse)} {(--git-path)} {(index)})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [82 90]
                          )
                        )
                      }
                  )
                spids: [78 92]
              ) (.stash.) ($ VSub_Dollar "$$")
            }
          spids: [77]
        )
      ]
      spids: [77]
    )
    (C {(trap)} {(SQ <"rm -f \"$TMP-\"* \"$TMPindex\"">)} {(0)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:ref_stash) op:Equal rhs:{(refs/stash)} spids:[105])]
      spids: [105]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(git)} {(config)} {(--get-colorbool)} {(color.interactive)})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:help_color)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (C {(git)} {(config)} {(--get-color)} {(color.interactive.help)} 
                                  {(SQ <"red bold">)}
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [125 137]
                        )
                      )
                    }
                  spids: [123]
                )
              ]
              spids: [123]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:reset_color)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(git)} {(config)} {(--get-color)} {(SQ )} {(reset)})]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [143 154]
                        )
                      )
                    }
                  spids: [141]
                )
              ]
              spids: [141]
            )
          ]
          spids: [-1 120]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:help_color) op:Equal rhs:{(SQ )} spids:[160])]
          spids: [160]
        )
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:reset_color) op:Equal rhs:{(SQ )} spids:[163])]
          spids: [163]
        )
      ]
      spids: [157 165]
    )
    (FuncDef
      name: no_changes
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(git)} {(diff-index)} {(--quiet)} {(--cached)} {(HEAD)} {(--ignore-submodules)} {(--)})
                (AndOr
                  children: [
                    (C {(git)} {(diff-files)} {(--quiet)} {(--ignore-submodules)})
                    (Subshell
                      child: 
                        (AndOr
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ VSub_Name "$untracked"))})
                            (C {(test)} {(-z)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(untracked_files)})])
                                    left_token: <Left_CommandSub "$(">
                                    spids: [220 222]
                                  )
                                )
                              }
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      spids: [204 224]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [173]
        )
      spids: [168 172]
    )
    (FuncDef
      name: untracked_files
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:excl_opt)
                  op: Equal
                  rhs: {(--exclude-standard)}
                  spids: [237]
                )
              ]
              spids: [237]
            )
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$untracked"))} {(Lit_Other "=")} {(DQ (all))})
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:excl_opt) op:Equal rhs:{(SQ )} spids:[255])]
                  spids: [255]
                )
              ]
              op_id: Op_DAmp
            )
            (C {(git)} {(ls-files)} {(-o)} {(-z)} {($ VSub_Name "$excl_opt")})
          ]
          spids: [234]
        )
      spids: [229 233]
    )
    (FuncDef
      name: clear_stash
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(gettext)} 
                                    {(DQ ("git stash clear with parameters is unimplemented"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [297 303]
                          )
                        )
                      }
                    )
                  ]
                  spids: [-1 291]
                )
              ]
              spids: [-1 307]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:current)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                        {($ VSub_Name "$ref_stash")}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [313 323]
                              )
                            }
                          spids: [312]
                        )
                      ]
                      spids: [312]
                    )
                  ]
                  action: [
                    (C {(git)} {(update-ref)} {(-d)} {($ VSub_Name "$ref_stash")} 
                      {($ VSub_Name "$current")}
                    )
                  ]
                  spids: [-1 326]
                )
              ]
              spids: [-1 340]
            )
          ]
          spids: [276]
        )
      spids: [271 275]
    )
    (FuncDef
      name: create_stash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stash_msg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [353]
                )
              ]
              spids: [353]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:untracked)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$2"))}
                  spids: [359]
                )
              ]
              spids: [359]
            )
            (C {(git)} {(update-index)} {(-q)} {(--refresh)})
            (If
              arms: [(if_arm cond:[(C {(no_changes)})] action:[(C {(exit)} {(0)})] spids:[-1380])]
              spids: [-1 388]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:b_commit)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [399 407]
                              )
                            }
                          spids: [398]
                        )
                      ]
                      spids: [398]
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:head)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(rev-list)} {(--oneline)} {(-n)} {(1)} {(HEAD)} {(--)})
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [414 428]
                              )
                            }
                          spids: [413]
                        )
                      ]
                      spids: [413]
                    )
                  ]
                  spids: [-1 410]
                )
              ]
              else_action: [
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(gettext)} {(DQ ("You do not have the initial commit yet"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [437 443]
                      )
                    )
                  }
                )
              ]
              spids: [431 447]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:branch)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(git)} {(symbolic-ref)} {(-q)} {(HEAD)})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [454 462]
                              )
                            }
                          spids: [453]
                        )
                      ]
                      spids: [453]
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:branch)
                          op: Equal
                          rhs: 
                            {
                              (BracedVarSub
                                token: <VSub_Name branch>
                                suffix_op: 
                                  (StringUnary
                                    op_id: VOp1_Pound
                                    arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)}
                                  )
                                spids: [469 476]
                              )
                            }
                          spids: [468]
                        )
                      ]
                      spids: [468]
                    )
                  ]
                  spids: [-1 465]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:branch)
                      op: Equal
                      rhs: {(SQ <"(no branch)">)}
                      spids: [482]
                    )
                  ]
                  spids: [482]
                )
              ]
              spids: [479 488]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(printf)} {(SQ <"%s: %s">)} {(DQ ($ VSub_Name "$branch"))} 
                                {(DQ ($ VSub_Name "$head"))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [492 506]
                      )
                    }
                  spids: [491]
                )
              ]
              spids: [491]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:i_tree)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(git)} {(write-tree)})])
                            left_token: <Left_CommandSub "$(">
                            spids: [515 519]
                          )
                        }
                      spids: [514]
                    )
                  ]
                  spids: [514]
                )
                (AndOr
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:i_commit)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (Pipeline
                                        children: [
                                          (C {(printf)} {(SQ <"index on %s\\n">)} 
                                            {(DQ ($ VSub_Name "$msg"))}
                                          )
                                          (C {(git)} {(commit-tree)} {($ VSub_Name "$i_tree")} {(-p)} 
                                            {($ VSub_Name "$b_commit")}
                                          )
                                        ]
                                        negated: False
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [525 548]
                              )
                            }
                          spids: [524]
                        )
                      ]
                      spids: [524]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(gettext)} {(DQ ("Cannot save the current index state"))})
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [556 562]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DAmp
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$untracked"))})]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:u_commit)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(untracked_files)})
                                              (Subshell
                                                child: 
                                                  (AndOr
                                                    children: [
                                                      (Assignment
                                                        keyword: Assign_None
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: (LhsName name:GIT_INDEX_FILE)
                                                            op: Equal
                                                            rhs: {(DQ ($ VSub_Name "$TMPindex"))}
                                                            spids: [600]
                                                          )
                                                        ]
                                                        spids: [600]
                                                      )
                                                      (AndOr
                                                        children: [
                                                          (C {(export)} {(GIT_INDEX_FILE)})
                                                          (AndOr
                                                            children: [
                                                              (C {(rm)} {(-f)} 
                                                                {(DQ ($ VSub_Name "$TMPindex"))}
                                                              )
                                                              (AndOr
                                                                children: [
                                                                  (C {(git)} {(update-index)} {(-z)} 
                                                                    {(--add)} {(--remove)} {(--stdin)}
                                                                  )
                                                                  (AndOr
                                                                    children: [
                                                                      (Assignment
                                                                        keyword: Assign_None
                                                                        pairs: [
                                                                          (assign_pair
                                                                            lhs: 
                                                                              (LhsName
                                                                                name: u_tree
                                                                              )
                                                                            op: Equal
                                                                            rhs: 
                                                                              {
                                                                                (CommandSubPart
                                                                                  command_list: 
                                                                                    (CommandList
                                                                                      children: [
                                                                                        (C {(git)} 
                                                                                          {
                                                                                            (
write-tree
                                                                                            )
                                                                                          }
                                                                                        )
                                                                                      ]
                                                                                    )
                                                                                  left_token: 
                                                                                    <
Left_CommandSub "$("
                                                                                    >
                                                                                  spids: [642 646]
                                                                                )
                                                                              }
                                                                            spids: [641]
                                                                          )
                                                                        ]
                                                                        spids: [641]
                                                                      )
                                                                      (AndOr
                                                                        children: [
                                                                          (Pipeline
                                                                            children: [
                                                                              (C {(printf)} 
                                                                                {
                                                                                  (SQ 
                                                                                    <
"untracked files on %s\\n"
                                                                                    >
                                                                                  )
                                                                                } {(DQ ($ VSub_Name "$msg"))}
                                                                              )
                                                                              (C {(git)} 
                                                                                {(commit-tree)} {($ VSub_Name "$u_tree")}
                                                                              )
                                                                            ]
                                                                            negated: False
                                                                          )
                                                                          (C {(rm)} {(-f)} 
                                                                            {
                                                                              (DQ 
                                                                                ($ VSub_Name 
"$TMPindex"
                                                                                )
                                                                              )
                                                                            }
                                                                          )
                                                                        ]
                                                                        op_id: Op_DAmp
                                                                      )
                                                                    ]
                                                                    op_id: Op_DAmp
                                                                  )
                                                                ]
                                                                op_id: Op_DAmp
                                                              )
                                                            ]
                                                            op_id: Op_DAmp
                                                          )
                                                        ]
                                                        op_id: Op_DAmp
                                                      )
                                                    ]
                                                    op_id: Op_DAmp
                                                  )
                                                spids: [597 681]
                                              )
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [590 683]
                                  )
                                }
                              spids: [589]
                            )
                          ]
                          spids: [589]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ("Cannot save the untracked files"))})
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [690 696]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:untracked_commit_option)
                              op: Equal
                              rhs: {(DQ ("-p ") ($ VSub_Name "$u_commit"))}
                              spids: [701]
                            )
                          ]
                          spids: [701]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 578]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:untracked_commit_option)
                      op: Equal
                      rhs: {(SQ )}
                      spids: [712]
                    )
                  ]
                  spids: [712]
                )
              ]
              spids: [709 715]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$patch_mode"))})]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:w_tree)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Subshell
                                            child: 
                                              (AndOr
                                                children: [
                                                  (C {(git)} {(read-tree)} 
                                                    {(--index-output) (Lit_Other "=") 
                                                      (DQ ($ VSub_Name "$TMPindex"))
                                                    } {(-m)} {($ VSub_Name "$i_tree")}
                                                  )
                                                  (AndOr
                                                    children: [
                                                      (Assignment
                                                        keyword: Assign_None
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: (LhsName name:GIT_INDEX_FILE)
                                                            op: Equal
                                                            rhs: {(DQ ($ VSub_Name "$TMPindex"))}
                                                            spids: [761]
                                                          )
                                                        ]
                                                        spids: [761]
                                                      )
                                                      (AndOr
                                                        children: [
                                                          (C {(export)} {(GIT_INDEX_FILE)})
                                                          (AndOr
                                                            children: [
                                                              (SimpleCommand
                                                                words: [
                                                                  {(git)}
                                                                  {(diff)}
                                                                  {(--name-only)}
                                                                  {(-z)}
                                                                  {(HEAD)}
                                                                  {(--)}
                                                                ]
                                                                redirects: [
                                                                  (Redir
                                                                    op_id: Redir_Great
                                                                    fd: -1
                                                                    arg_word: 
                                                                      {
                                                                        (DQ ($ VSub_Name "$TMP") 
                                                                          (-stagenames)
                                                                        )
                                                                      }
                                                                    spids: [788]
                                                                  )
                                                                ]
                                                              )
                                                              (AndOr
                                                                children: [
                                                                  (SimpleCommand
                                                                    words: [
                                                                      {(git)}
                                                                      {(update-index)}
                                                                      {(-z)}
                                                                      {(--add)}
                                                                      {(--remove)}
                                                                      {(--stdin)}
                                                                    ]
                                                                    redirects: [
                                                                      (Redir
                                                                        op_id: Redir_Less
                                                                        fd: -1
                                                                        arg_word: 
                                                                          {
                                                                            (DQ ($ VSub_Name "$TMP") 
                                                                              (-stagenames)
                                                                            )
                                                                          }
                                                                        spids: [809]
                                                                      )
                                                                    ]
                                                                  )
                                                                  (AndOr
                                                                    children: [
                                                                      (C {(git)} {(write-tree)})
                                                                      (C {(rm)} {(-f)} 
                                                                        {
                                                                          (DQ 
                                                                            ($ VSub_Name "$TMPindex")
                                                                          )
                                                                        }
                                                                      )
                                                                    ]
                                                                    op_id: Op_DAmp
                                                                  )
                                                                ]
                                                                op_id: Op_DAmp
                                                              )
                                                            ]
                                                            op_id: Op_DAmp
                                                          )
                                                        ]
                                                        op_id: Op_DAmp
                                                      )
                                                    ]
                                                    op_id: Op_DAmp
                                                  )
                                                ]
                                                op_id: Op_DAmp
                                              )
                                            spids: [741 834]
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [739 836]
                                  )
                                }
                              spids: [738]
                            )
                          ]
                          spids: [738]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ("Cannot save the current worktree state"))})
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [844 850]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 730]
                )
              ]
              else_action: [
                (AndOr
                  children: [
                    (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$TMP") (-index))})
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(git)} {(read-tree)} {(HEAD)}]
                          more_env: [
                            (env_pair
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ VSub_Name "$TMP") (-index))}
                              spids: [871]
                            )
                          ]
                        )
                        (AndOr
                          children: [
                            (SimpleCommand
                              words: [
                                {(git)}
                                {(add--interactive)}
                                {(--patch) (Lit_Other "=") (stash)}
                                {(--)}
                              ]
                              more_env: [
                                (env_pair
                                  name: GIT_INDEX_FILE
                                  val: {(DQ ($ VSub_Name "$TMP") (-index))}
                                  spids: [891]
                                )
                              ]
                            )
                            (AndOr
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:w_tree)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (SimpleCommand
                                                    words: [{(git)} {(write-tree)}]
                                                    more_env: [
                                                      (env_pair
                                                        name: GIT_INDEX_FILE
                                                        val: {(DQ ($ VSub_Name "$TMP") (-index))}
                                                        spids: [919]
                                                      )
                                                    ]
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [918 928]
                                          )
                                        }
                                      spids: [917]
                                    )
                                  ]
                                  spids: [917]
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(gettext)} 
                                                {(DQ ("Cannot save the current worktree state"))}
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [936 942]
                                      )
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(git)} {(diff-tree)} {(-p)} {(HEAD)} {($ VSub_Name "$w_tree")} {(--)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$TMP") (-patch))}
                          spids: [959]
                        )
                      ]
                    )
                    (AndOr
                      children: [
                        (C {(test)} {(-s)} {(DQ ($ VSub_Name "$TMP") (-patch))})
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(gettext)} {(DQ ("No changes selected"))})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [983 989]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  op_id: Op_DAmp
                )
                (AndOr
                  children: [
                    (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$TMP") (-index))})
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(gettext)} {(DQ ("Cannot remove temporary index (can't happen)"))})
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1009 1015]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              spids: [855 1020]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$stash_msg"))})]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:stash_msg)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(printf)} {(SQ <"WIP on %s">)} {(DQ ($ VSub_Name "$msg"))})
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1043 1053]
                              )
                            }
                          spids: [1042]
                        )
                      ]
                      spids: [1042]
                    )
                  ]
                  spids: [-1 1039]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:stash_msg)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(printf)} {(SQ <"On %s: %s">)} {(DQ ($ VSub_Name "$branch"))} 
                                    {(DQ ($ VSub_Name "$stash_msg"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1060 1074]
                          )
                        }
                      spids: [1059]
                    )
                  ]
                  spids: [1059]
                )
              ]
              spids: [1056 1077]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:w_commit)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(printf)} {(SQ <"%s\\n">)} {(DQ ($ VSub_Name "$stash_msg"))})
                                      (C {(git)} {(commit-tree)} {($ VSub_Name "$w_tree")} {(-p)} 
                                        {($ VSub_Name "$b_commit")} {(-p)} {($ VSub_Name "$i_commit")} {($ VSub_Name "$untracked_commit_option")}
                                      )
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1081 1110]
                          )
                        }
                      spids: [1080]
                    )
                  ]
                  spids: [1080]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(gettext)} {(DQ ("Cannot record working tree state"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1118 1124]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [350]
        )
      spids: [345 349]
    )
    (FuncDef
      name: store_stash
      body: 
        (BraceGroup
          children: [
            (While
              cond: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Number "$1"))}
                      arms: [
                        (case_arm
                          pat_list: [{(-m)} {(--message)}]
                          action: [
                            (C {(shift)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:stash_msg)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number "$1"))}
                                  spids: [1171]
                                )
                              ]
                              spids: [1171]
                            )
                          ]
                          spids: [1162 1165 1177 -1]
                        )
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:quiet)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1186]
                                )
                              ]
                              spids: [1186]
                            )
                          ]
                          spids: [1180 1183 1190 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [1193 1194 1200 -1]
                        )
                      ]
                      spids: [1153 1159 1203]
                    )
                    (C {(shift)})
                  ]
                  spids: [1150 1209]
                )
            )
            (AndOr
              children: [
                (C {(test)} {($ VSub_Pound "$#")} {(Lit_Other "=")} {(1)})
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                                    ($ VSub_Name "$dashless") (" store") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (" requires one <commit> argument")
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1226 1236]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:w_commit)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1241]
                )
              ]
              spids: [1241]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$stash_msg"))})]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:stash_msg)
                          op: Equal
                          rhs: 
                            {
                              (DQ ("Created via ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) 
                                ("git stash store") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (.)
                              )
                            }
                          spids: [1261]
                        )
                      ]
                      spids: [1261]
                    )
                  ]
                  spids: [-1 1258]
                )
              ]
              spids: [-1 1271]
            )
            (C {(git)} {(update-ref)} {(--create-reflog)} {(-m)} {(DQ ($ VSub_Name "$stash_msg"))} 
              {($ VSub_Name "$ref_stash")} {($ VSub_Name "$w_commit")}
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ret)
                  op: Equal
                  rhs: {($ VSub_QMark "$?")}
                  spids: [1292]
                )
              ]
              spids: [1292]
            )
            (AndOr
              children: [
                (C {(test)} {($ VSub_Name "$ret")} {(KW_Bang "!") (Lit_Other "=")} {(0)})
                (AndOr
                  children: [
                    (C {(test)} {(-z)} {(DQ ($ VSub_Name "$quiet"))})
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("Cannot update ") 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar "\\$">
                                        ) ("ref_stash with ") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) (w_commit)
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1321 1331]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (ControlFlow token:<ControlFlow_Return return> arg_word:{($ VSub_Name "$ret")})
          ]
          spids: [1135]
        )
      spids: [1130 1134]
    )
    (FuncDef
      name: save_stash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:keep_index) op:Equal rhs:{(SQ )} spids:[1350])]
              spids: [1350]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:patch_mode) op:Equal rhs:{(SQ )} spids:[1353])]
              spids: [1353]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:untracked) op:Equal rhs:{(SQ )} spids:[1356])]
              spids: [1356]
            )
            (While
              cond: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Number "$1"))}
                      arms: [
                        (case_arm
                          pat_list: [{(-k)} {(--keep-index)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:keep_index)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1389]
                                )
                              ]
                              spids: [1389]
                            )
                          ]
                          spids: [1383 1386 1393 -1]
                        )
                        (case_arm
                          pat_list: [{(--no-keep-index)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:keep_index)
                                  op: Equal
                                  rhs: {(n)}
                                  spids: [1400]
                                )
                              ]
                              spids: [1400]
                            )
                          ]
                          spids: [1396 1397 1404 -1]
                        )
                        (case_arm
                          pat_list: [{(-p)} {(--patch)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:patch_mode)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1413]
                                )
                              ]
                              spids: [1413]
                            )
                            (AndOr
                              children: [
                                (C {(test)} {(-z)} {(DQ ($ VSub_Name "$keep_index"))})
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:keep_index)
                                      op: Equal
                                      rhs: {(t)}
                                      spids: [1431]
                                    )
                                  ]
                                  spids: [1431]
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          spids: [1407 1410 1435 -1]
                        )
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:GIT_QUIET)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1444]
                                )
                              ]
                              spids: [1444]
                            )
                          ]
                          spids: [1438 1441 1448 -1]
                        )
                        (case_arm
                          pat_list: [{(-u)} {(--include-untracked)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:untracked)
                                  op: Equal
                                  rhs: {(untracked)}
                                  spids: [1457]
                                )
                              ]
                              spids: [1457]
                            )
                          ]
                          spids: [1451 1454 1461 -1]
                        )
                        (case_arm
                          pat_list: [{(-a)} {(--all)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:untracked)
                                  op: Equal
                                  rhs: {(all)}
                                  spids: [1470]
                                )
                              ]
                              spids: [1470]
                            )
                          ]
                          spids: [1464 1467 1474 -1]
                        )
                        (case_arm
                          pat_list: [{(--help)}]
                          action: [(C {(show_help)})]
                          spids: [1477 1478 1484 -1]
                        )
                        (case_arm
                          pat_list: [{(--)}]
                          action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                          spids: [1487 1488 1497 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other "*")}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:option)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number "$1"))}
                                  spids: [1505]
                                )
                              ]
                              spids: [1505]
                            )
                            (C {(eval_gettextln)} 
                              {
                                (DQ ("error: unknown option for 'stash save': ") 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar "\\$">
                                  ) ("option\n") ("       To provide a message, use git stash save -- '") 
                                  (EscapedLiteralPart
                                    token: <Lit_EscapedChar "\\$">
                                  ) ("option'")
                                )
                              }
                            )
                            (C {(usage)})
                          ]
                          spids: [1500 1502 1566 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [(ControlFlow token:<ControlFlow_Break break>)]
                          spids: [1569 1570 1576 -1]
                        )
                      ]
                      spids: [1374 1380 1579]
                    )
                    (C {(shift)})
                  ]
                  spids: [1371 1585]
                )
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (C {(test)} {(-n)} {(DQ ($ VSub_Name "$patch_mode"))})
                        (C {(test)} {(-n)} {(DQ ($ VSub_Name "$untracked"))})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(gettext)} 
                                    {
                                      (DQ 
                                        (
"Can't use --patch and --include-untracked or --all at the same time"
                                        )
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1616 1622]
                          )
                        )
                      }
                    )
                  ]
                  spids: [-1 1610]
                )
              ]
              spids: [-1 1626]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:stash_msg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Star "$*"))}
                  spids: [1630]
                )
              ]
              spids: [1630]
            )
            (C {(git)} {(update-index)} {(-q)} {(--refresh)})
            (If
              arms: [
                (if_arm
                  cond: [(C {(no_changes)})]
                  action: [
                    (C {(say)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(gettext)} {(DQ ("No local changes to save"))})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1657 1663]
                          )
                        )
                      }
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 1651]
                )
              ]
              spids: [-1 1672]
            )
            (AndOr
              children: [
                (C {(git)} {(reflog)} {(exists)} {($ VSub_Name "$ref_stash")})
                (AndOr
                  children: [
                    (C {(clear_stash)})
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(gettext)} {(DQ ("Cannot initialize stash"))})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1693 1699]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DPipe
            )
            (C {(create_stash)} {(DQ ($ VSub_Name "$stash_msg"))} {($ VSub_Name "$untracked")})
            (AndOr
              children: [
                (C {(store_stash)} {(-m)} {(DQ ($ VSub_Name "$stash_msg"))} {(-q)} 
                  {($ VSub_Name "$w_commit")}
                )
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(gettext)} {(DQ ("Cannot save the current status"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1731 1737]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
            (C {(say)} 
              {
                (DQ 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(eval_gettext)} 
                            {
                              (DQ ("Saved working directory and index state ") 
                                (EscapedLiteralPart
                                  token: <Lit_EscapedChar "\\$">
                                ) (stash_msg)
                              )
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [1744 1752]
                  )
                )
              }
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$patch_mode"))})]
                  action: [
                    (C {(git)} {(reset)} {(--hard)} 
                      {
                        (BracedVarSub
                          token: <VSub_Name GIT_QUIET>
                          suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(-q)})
                          spids: [1777 1781]
                        )
                      }
                    )
                    (AndOr
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name "$untracked"))} {(Lit_Other "=")} {(DQ (all))})
                        (AndOr
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CLEAN_X_OPTION)
                                  op: Equal
                                  rhs: {(-x)}
                                  spids: [1798]
                                )
                              ]
                              spids: [1798]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:CLEAN_X_OPTION)
                                  op: Equal
                                  rhs: {(SQ )}
                                  spids: [1803]
                                )
                              ]
                              spids: [1803]
                            )
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$untracked"))})]
                          action: [
                            (C {(git)} {(clean)} {(--force)} {(--quiet)} {(-d)} 
                              {($ VSub_Name "$CLEAN_X_OPTION")}
                            )
                          ]
                          spids: [-1 1817]
                        )
                      ]
                      spids: [-1 1833]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$keep_index"))} {(Lit_Other "=")} 
                                  {(DQ (t))}
                                )
                                (C {(test)} {(-n)} {(DQ ($ VSub_Name "$i_tree"))})
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          action: [
                            (C {(git)} {(read-tree)} {(--reset)} {(-u)} {($ VSub_Name "$i_tree")})
                          ]
                          spids: [-1 1862]
                        )
                      ]
                      spids: [-1 1876]
                    )
                  ]
                  spids: [-1 1768]
                )
              ]
              else_action: [
                (AndOr
                  children: [
                    (SimpleCommand
                      words: [{(git)} {(apply)} {(-R)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Less
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$TMP") (-patch))}
                          spids: [1888]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [(C {(gettext)} {(DQ ("Cannot remove worktree changes"))})]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1901 1907]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DPipe
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(test)} {(DQ ($ VSub_Name "$keep_index"))} {(KW_Bang "!") (Lit_Other "=")} 
                          {(DQ (t))}
                        )
                      ]
                      action: [(C {(git)} {(reset)})]
                      spids: [-1 1928]
                    )
                  ]
                  spids: [-1 1936]
                )
              ]
              spids: [1879 1939]
            )
          ]
          spids: [1347]
        )
      spids: [1342 1346]
    )
    (FuncDef
      name: have_stash
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ VSub_Name "$ref_stash")}]
              redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[1962])]
            )
          ]
          spids: [1949]
        )
      spids: [1944 1948]
    )
    (FuncDef
      name: list_stash
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(have_stash)})
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              op_id: Op_DPipe
            )
            (C {(git)} {(log)} {(--format) (Lit_Other "=") (DQ ("%gd: %gs"))} {(-g)} {(--first-parent)} 
              {(-m)} {(DQ ($ VSub_At "$@"))} {($ VSub_Name "$ref_stash")} {(--)}
            )
          ]
          spids: [1973]
        )
      spids: [1968 1972]
    )
    (FuncDef
      name: show_stash
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:ALLOW_UNKNOWN_FLAGS)
                  op: Equal
                  rhs: {(t)}
                  spids: [2020]
                )
              ]
              spids: [2020]
            )
            (C {(assert_stash_like)} {(DQ ($ VSub_At "$@"))})
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$FLAGS"))})]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (AndOr
                                            children: [
                                              (C {(git)} {(config)} {(--bool)} {(stash.showStat)})
                                              (C {(echo)} {(true)})
                                            ]
                                            op_id: Op_DPipe
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [2051 2065]
                                  )
                                )
                              } {(Lit_Other "=")} {(DQ (true))}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FLAGS)
                                  op: Equal
                                  rhs: {(--stat)}
                                  spids: [2078]
                                )
                              ]
                              spids: [2078]
                            )
                          ]
                          spids: [-1 2075]
                        )
                      ]
                      spids: [-1 2082]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (AndOr
                                            children: [
                                              (C {(git)} {(config)} {(--bool)} {(stash.showPatch)})
                                              (C {(echo)} {(false)})
                                            ]
                                            op_id: Op_DPipe
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [2091 2105]
                                  )
                                )
                              } {(Lit_Other "=")} {(DQ (true))}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FLAGS)
                                  op: Equal
                                  rhs: 
                                    {(${ VSub_Name FLAGS) 
                                      (BracedVarSub
                                        token: <VSub_Name FLAGS>
                                        suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(" ")})
                                        spids: [2122 2126]
                                      ) (-p)
                                    }
                                  spids: [2118]
                                )
                              ]
                              spids: [2118]
                            )
                          ]
                          spids: [-1 2115]
                        )
                      ]
                      spids: [-1 2130]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name "$FLAGS"))})]
                          action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})]
                          spids: [-1 2145]
                        )
                      ]
                      spids: [-1 2153]
                    )
                  ]
                  spids: [-1 2043]
                )
              ]
              spids: [-1 2156]
            )
            (C {(git)} {(diff)} {(${ VSub_Name FLAGS)} {($ VSub_Name "$b_commit")} 
              {($ VSub_Name "$w_commit")}
            )
          ]
          spids: [2017]
        )
      spids: [2012 2016]
    )
    (FuncDef
      name: show_help
      body: 
        (BraceGroup
          children: [(C {(exec)} {(git)} {(help)} {(stash)}) (C {(exit)} {(1)})]
          spids: [2180]
        )
      spids: [2175 2179]
    )
    (FuncDef
      name: parse_flags_and_rev
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$PARSE_CACHE"))} {(Lit_Other "=")} 
                  {(DQ ($ VSub_Star "$*"))}
                )
                (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})
              ]
              op_id: Op_DAmp
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:PARSE_CACHE)
                  op: Equal
                  rhs: {(DQ ($ VSub_Star "$*"))}
                  spids: [2334]
                )
              ]
              spids: [2334]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:IS_STASH_LIKE)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [2341]
                )
              ]
              spids: [2341]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:IS_STASH_REF) op:Equal rhs:{(SQ )} spids:[2344])]
              spids: [2344]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:INDEX_OPTION) op:Equal rhs:{(SQ )} spids:[2347])]
              spids: [2347]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:s) op:Equal rhs:{(SQ )} spids:[2350])]
              spids: [2350]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:w_commit) op:Equal rhs:{(SQ )} spids:[2353])]
              spids: [2353]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:b_commit) op:Equal rhs:{(SQ )} spids:[2356])]
              spids: [2356]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:i_commit) op:Equal rhs:{(SQ )} spids:[2359])]
              spids: [2359]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:u_commit) op:Equal rhs:{(SQ )} spids:[2362])]
              spids: [2362]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:w_tree) op:Equal rhs:{(SQ )} spids:[2365])]
              spids: [2365]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:b_tree) op:Equal rhs:{(SQ )} spids:[2368])]
              spids: [2368]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:i_tree) op:Equal rhs:{(SQ )} spids:[2371])]
              spids: [2371]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:u_tree) op:Equal rhs:{(SQ )} spids:[2374])]
              spids: [2374]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:REV)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--no-flags)} {(--symbolic)} {(--sq)} 
                                    {(DQ ($ VSub_At "$@"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2379 2393]
                          )
                        }
                      spids: [2378]
                    )
                  ]
                  spids: [2378]
                )
                (C {(exit)} {(1)})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:FLAGS) op:Equal rhs:{(SQ )} spids:[2403])]
              spids: [2403]
            )
            (ForEach
              iter_name: opt
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Name "$opt"))}
                      arms: [
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:GIT_QUIET)
                                  op: Equal
                                  rhs: {(-t)}
                                  spids: [2429]
                                )
                              ]
                              spids: [2429]
                            )
                          ]
                          spids: [2423 2426 2433 -1]
                        )
                        (case_arm
                          pat_list: [{(--index)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:INDEX_OPTION)
                                  op: Equal
                                  rhs: {(--index)}
                                  spids: [2440]
                                )
                              ]
                              spids: [2440]
                            )
                          ]
                          spids: [2436 2437 2444 -1]
                        )
                        (case_arm
                          pat_list: [{(--help)}]
                          action: [(C {(show_help)})]
                          spids: [2447 2448 2454 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Lit_Other "*")}]
                          action: [
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$ALLOW_UNKNOWN_FLAGS"))} 
                                  {(Lit_Other "=")} {(t)}
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(eval_gettext)} 
                                                {
                                                  (DQ ("unknown option: ") 
                                                    (EscapedLiteralPart
                                                      token: <Lit_EscapedChar "\\$">
                                                    ) (opt)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [2478 2486]
                                      )
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DPipe
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:FLAGS)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ (${ VSub_Name FLAGS) 
                                        (BracedVarSub
                                          token: <VSub_Name FLAGS>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_ColonPlus
                                              arg_word: {(" ")}
                                            )
                                          spids: [2495 2499]
                                        ) ($ VSub_Name "$opt")
                                      )
                                    }
                                  spids: [2490]
                                )
                              ]
                              spids: [2490]
                            )
                          ]
                          spids: [2457 2459 2504 -1]
                        )
                      ]
                      spids: [2414 2420 2507]
                    )
                  ]
                  spids: [2411 2510]
                )
              spids: [-1 -1]
            )
            (C {(eval)} {(set)} {(--)} {($ VSub_Name "$REV")})
            (Case
              to_match: {($ VSub_Pound "$#")}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [
                    (AndOr
                      children: [
                        (C {(have_stash)})
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(gettext)} {(DQ ("No stash found."))})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [2542 2548]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(set)} {(--)} 
                      {(${ VSub_Name ref_stash) (Lit_Other "@") (Lit_LBrace "{") (0) (Lit_RBrace "}")}
                    )
                  ]
                  spids: [2531 2532 2565 -1]
                )
                (case_arm
                  pat_list: [{(1)}]
                  action: [(C {(Lit_Other ":")})]
                  spids: [2568 2569 2575 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("Too many revisions specified: ") 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar "\\$">
                                        ) (REV)
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2585 2593]
                          )
                        )
                      }
                    )
                  ]
                  spids: [2578 2579 2597 -1]
                )
              ]
              spids: [2524 2528 2600]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:REV)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--symbolic)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ VSub_Number "$1"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2605 2619]
                          )
                        }
                      spids: [2604]
                    )
                  ]
                  spids: [2604]
                )
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:reference)
                          op: Equal
                          rhs: {(DQ ($ VSub_Number "$1"))}
                          spids: [2626]
                        )
                      ]
                      spids: [2626]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                                        ("reference is not a valid reference")
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2635 2642]
                          )
                        )
                      }
                    )
                  ]
                  spids: [2623]
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:i_commit)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ VSub_Name "$REV") ("^2"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2651 2664]
                          )
                        }
                      spids: [2650]
                    )
                  ]
                  spids: [2650]
                )
                (AndOr
                  children: [
                    (C {(set)} {(--)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [
                                (SimpleCommand
                                  words: [
                                    {(git)}
                                    {(rev-parse)}
                                    {(DQ ($ VSub_Name "$REV"))}
                                    {(DQ ($ VSub_Name "$REV") ("^1"))}
                                    {(DQ ($ VSub_Name "$REV") (":"))}
                                    {(DQ ($ VSub_Name "$REV") ("^1:"))}
                                    {(DQ ($ VSub_Name "$REV") ("^2:"))}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                      spids: [2702]
                                    )
                                  ]
                                )
                              ]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [2673 2704]
                        )
                      }
                    )
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:s)
                              op: Equal
                              rhs: {($ VSub_Number "$1")}
                              spids: [2709]
                            )
                          ]
                          spids: [2709]
                        )
                        (AndOr
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:w_commit)
                                  op: Equal
                                  rhs: {($ VSub_Number "$1")}
                                  spids: [2715]
                                )
                              ]
                              spids: [2715]
                            )
                            (AndOr
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:b_commit)
                                      op: Equal
                                      rhs: {($ VSub_Number "$2")}
                                      spids: [2721]
                                    )
                                  ]
                                  spids: [2721]
                                )
                                (AndOr
                                  children: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:w_tree)
                                          op: Equal
                                          rhs: {($ VSub_Number "$3")}
                                          spids: [2727]
                                        )
                                      ]
                                      spids: [2727]
                                    )
                                    (AndOr
                                      children: [
                                        (Assignment
                                          keyword: Assign_None
                                          pairs: [
                                            (assign_pair
                                              lhs: (LhsName name:b_tree)
                                              op: Equal
                                              rhs: {($ VSub_Number "$4")}
                                              spids: [2733]
                                            )
                                          ]
                                          spids: [2733]
                                        )
                                        (AndOr
                                          children: [
                                            (Assignment
                                              keyword: Assign_None
                                              pairs: [
                                                (assign_pair
                                                  lhs: (LhsName name:i_tree)
                                                  op: Equal
                                                  rhs: {($ VSub_Number "$5")}
                                                  spids: [2739]
                                                )
                                              ]
                                              spids: [2739]
                                            )
                                            (AndOr
                                              children: [
                                                (Assignment
                                                  keyword: Assign_None
                                                  pairs: [
                                                    (assign_pair
                                                      lhs: (LhsName name:IS_STASH_LIKE)
                                                      op: Equal
                                                      rhs: {(t)}
                                                      spids: [2745]
                                                    )
                                                  ]
                                                  spids: [2745]
                                                )
                                                (AndOr
                                                  children: [
                                                    (C {(test)} {(DQ ($ VSub_Name "$ref_stash"))} 
                                                      {(Lit_Other "=")} 
                                                      {
                                                        (DQ 
                                                          (CommandSubPart
                                                            command_list: 
                                                              (CommandList
                                                                children: [
                                                                  (C {(git)} {(rev-parse)} 
                                                                    {(--symbolic-full-name)} 
                                                                    {
                                                                      (DQ 
                                                                        (BracedVarSub
                                                                          token: <VSub_Name REV>
                                                                          suffix_op: 
                                                                            (StringUnary
                                                                              op_id: VOp1_Percent
                                                                              arg_word: {("@*")}
                                                                            )
                                                                          spids: [2768 2772]
                                                                        )
                                                                      )
                                                                    }
                                                                  )
                                                                ]
                                                              )
                                                            left_token: <Left_CommandSub "$(">
                                                            spids: [2760 2774]
                                                          )
                                                        )
                                                      }
                                                    )
                                                    (Assignment
                                                      keyword: Assign_None
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (LhsName name:IS_STASH_REF)
                                                          op: Equal
                                                          rhs: {(t)}
                                                          spids: [2780]
                                                        )
                                                      ]
                                                      spids: [2780]
                                                    )
                                                  ]
                                                  op_id: Op_DAmp
                                                )
                                              ]
                                              op_id: Op_DAmp
                                            )
                                          ]
                                          op_id: Op_DAmp
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:u_commit)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ VSub_Name "$REV") ("^3"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2786 2799]
                          )
                        }
                      spids: [2785]
                    )
                  ]
                  spids: [2785]
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:u_tree)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    words: [{(git)} {(rev-parse)} {(DQ ($ VSub_Name "$REV") ("^3:"))}]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2815]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2805 2817]
                          )
                        }
                      spids: [2804]
                    )
                  ]
                  spids: [2804]
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [2309]
        )
      spids: [2305 2308]
    )
    (FuncDef
      name: is_stash_like
      body: 
        (BraceGroup
          children: [
            (C {(parse_flags_and_rev)} {(DQ ($ VSub_At "$@"))})
            (C {(test)} {(-n)} {(DQ ($ VSub_Name "$IS_STASH_LIKE"))})
          ]
          spids: [2826]
        )
      spids: [2822 2825]
    )
    (FuncDef
      name: assert_stash_like
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(is_stash_like)} {(DQ ($ VSub_At "$@"))})
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:args)
                          op: Equal
                          rhs: {(DQ ($ VSub_Star "$*"))}
                          spids: [2865]
                        )
                      ]
                      spids: [2865]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                                        ("args' is not a stash-like commit")
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2874 2882]
                          )
                        )
                      }
                    )
                  ]
                  spids: [2862]
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [2851]
        )
      spids: [2847 2850]
    )
    (FuncDef
      name: is_stash_ref
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(is_stash_like)} {(DQ ($ VSub_At "$@"))})
                (C {(test)} {(-n)} {(DQ ($ VSub_Name "$IS_STASH_REF"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [2895]
        )
      spids: [2891 2894]
    )
    (FuncDef
      name: assert_stash_ref
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(is_stash_ref)} {(DQ ($ VSub_At "$@"))})
                (BraceGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:args)
                          op: Equal
                          rhs: {(DQ ($ VSub_Star "$*"))}
                          spids: [2935]
                        )
                      ]
                      spids: [2935]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("'") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                                        ("args' is not a stash reference")
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2944 2952]
                          )
                        )
                      }
                    )
                  ]
                  spids: [2932]
                )
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [2921]
        )
      spids: [2917 2920]
    )
    (FuncDef
      name: apply_stash
      body: 
        (BraceGroup
          children: [
            (C {(assert_stash_like)} {(DQ ($ VSub_At "$@"))})
            (AndOr
              children: [
                (C {(git)} {(update-index)} {(-q)} {(--refresh)})
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(gettext)} {(DQ ("unable to refresh index"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [2991 2997]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:c_tree)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(git)} {(write-tree)})])
                            left_token: <Left_CommandSub "$(">
                            spids: [3007 3011]
                          )
                        }
                      spids: [3006]
                    )
                  ]
                  spids: [3006]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(gettext)} {(DQ ("Cannot apply a stash in the middle of a merge"))})
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [3019 3025]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:unstashed_index_tree)
                  op: Equal
                  rhs: {(SQ )}
                  spids: [3030]
                )
              ]
              spids: [3030]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (C {(test)} {(-n)} {(DQ ($ VSub_Name "$INDEX_OPTION"))})
                        (AndOr
                          children: [
                            (C {(test)} {(DQ ($ VSub_Name "$b_tree"))} {(KW_Bang "!") (Lit_Other "=")} 
                              {(DQ ($ VSub_Name "$i_tree"))}
                            )
                            (C {(test)} {(DQ ($ VSub_Name "$c_tree"))} {(KW_Bang "!") (Lit_Other "=")} 
                              {(DQ ($ VSub_Name "$i_tree"))}
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (Pipeline
                      children: [
                        (C {(git)} {(diff-tree)} {(--binary)} 
                          {($ VSub_Name "$s") (Lit_Other "^") (2) (Lit_Other "^") (..) 
                            ($ VSub_Name "$s") (Lit_Other "^") (2)
                          }
                        )
                        (C {(git)} {(apply)} {(--cached)})
                      ]
                      negated: False
                    )
                    (AndOr
                      children: [
                        (C {(test)} {($ VSub_QMark "$?")} {(-ne)} {(0)})
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ("Conflicts in index. Try without --index."))})
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [3116 3122]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DAmp
                    )
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:unstashed_index_tree)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: (CommandList children:[(C {(git)} {(write-tree)})])
                                    left_token: <Left_CommandSub "$(">
                                    spids: [3127 3131]
                                  )
                                }
                              spids: [3126]
                            )
                          ]
                          spids: [3126]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [(C {(gettext)} {(DQ ("Could not save index tree"))})]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [3139 3145]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(git)} {(reset)})
                  ]
                  spids: [-1 3075]
                )
              ]
              spids: [-1 3154]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$u_tree"))})]
                  action: [
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(git-read-tree)} {(DQ ($ VSub_Name "$u_tree"))}]
                          more_env: [
                            (env_pair
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ VSub_Name "$TMPindex"))}
                              spids: [3172]
                            )
                          ]
                        )
                        (AndOr
                          children: [
                            (SimpleCommand
                              words: [{(git)} {(checkout-index)} {(--all)}]
                              more_env: [
                                (env_pair
                                  name: GIT_INDEX_FILE
                                  val: {(DQ ($ VSub_Name "$TMPindex"))}
                                  spids: [3186]
                                )
                              ]
                            )
                            (AndOr
                              children: [
                                (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$TMPindex"))})
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (C {(gettext)} 
                                                {
                                                  (DQ 
                                                    (
"Could not restore untracked files from stash"
                                                    )
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [3214 3220]
                                      )
                                    )
                                  }
                                )
                              ]
                              op_id: Op_DPipe
                            )
                          ]
                          op_id: Op_DAmp
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 3169]
                )
              ]
              spids: [-1 3224]
            )
            (C {(eval)} 
              {
                (DQ ("\n") ("\t\tGITHEAD_") ($ VSub_Name "$w_tree") ("='Stashed changes' &&\n") 
                  ("\t\tGITHEAD_") ($ VSub_Name "$c_tree") ("='Updated upstream' &&\n") ("\t\tGITHEAD_") ($ VSub_Name "$b_tree") 
                  ("='Version stash was based on' &&\n") ("\t\texport GITHEAD_") ($ VSub_Name "$w_tree") (" GITHEAD_") ($ VSub_Name "$c_tree") (" GITHEAD_") 
                  ($ VSub_Name "$b_tree") ("\n") ("\t")
                )
              }
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$GIT_QUIET"))})]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:GIT_MERGE_VERBOSITY)
                              op: Equal
                              rhs: {(0)}
                              spids: [3267]
                            )
                          ]
                          spids: [3267]
                        )
                        (C {(export)} {(GIT_MERGE_VERBOSITY)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [-1 3264]
                )
              ]
              spids: [-1 3277]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(git)} {(merge-recursive)} {($ VSub_Name "$b_tree")} {(--)} 
                      {($ VSub_Name "$c_tree")} {($ VSub_Name "$w_tree")}
                    )
                  ]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$unstashed_index_tree"))})]
                          action: [
                            (C {(git)} {(read-tree)} {(DQ ($ VSub_Name "$unstashed_index_tree"))})
                          ]
                          spids: [-1 3313]
                        )
                      ]
                      else_action: [
                        (AndOr
                          children: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:a)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name "$TMP") (-added))}
                                  spids: [3328]
                                )
                              ]
                              spids: [3328]
                            )
                            (AndOr
                              children: [
                                (SimpleCommand
                                  words: [
                                    {(git)}
                                    {(diff-index)}
                                    {(--cached)}
                                    {(--name-only)}
                                    {(--diff-filter) (Lit_Other "=") (A)}
                                    {($ VSub_Name "$c_tree")}
                                  ]
                                  redirects: [
                                    (Redir
                                      op_id: Redir_Great
                                      fd: -1
                                      arg_word: {(DQ ($ VSub_Name "$a"))}
                                      spids: [3351]
                                    )
                                  ]
                                )
                                (AndOr
                                  children: [
                                    (C {(git)} {(read-tree)} {(--reset)} {($ VSub_Name "$c_tree")})
                                    (AndOr
                                      children: [
                                        (SimpleCommand
                                          words: [{(git)} {(update-index)} {(--add)} {(--stdin)}]
                                          redirects: [
                                            (Redir
                                              op_id: Redir_Less
                                              fd: -1
                                              arg_word: {(DQ ($ VSub_Name "$a"))}
                                              spids: [3378]
                                            )
                                          ]
                                        )
                                        (C {(die)} 
                                          {
                                            (DQ 
                                              (CommandSubPart
                                                command_list: 
                                                  (CommandList
                                                    children: [
                                                      (C {(gettext)} 
                                                        {(DQ ("Cannot unstage modified files"))}
                                                      )
                                                    ]
                                                  )
                                                left_token: <Left_CommandSub "$(">
                                                spids: [3389 3395]
                                              )
                                            )
                                          }
                                        )
                                      ]
                                      op_id: Op_DPipe
                                    )
                                  ]
                                  op_id: Op_DAmp
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          op_id: Op_DAmp
                        )
                        (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$a"))})
                      ]
                      spids: [3325 3408]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:squelch)
                          op: Equal
                          rhs: {(SQ )}
                          spids: [3411]
                        )
                      ]
                      spids: [3411]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$GIT_QUIET"))})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:squelch)
                                  op: Equal
                                  rhs: {(SQ <">/dev/null 2>&1">)}
                                  spids: [3428]
                                )
                              ]
                              spids: [3428]
                            )
                          ]
                          spids: [-1 3425]
                        )
                      ]
                      spids: [-1 3434]
                    )
                    (AndOr
                      children: [
                        (Subshell
                          child: 
                            (AndOr
                              children: [
                                (C {(cd)} {(DQ ($ VSub_Name "$START_DIR"))})
                                (C {(eval)} {(DQ ("git status ") ($ VSub_Name "$squelch"))})
                              ]
                              op_id: Op_DAmp
                            )
                          spids: [3437 3452]
                        )
                        (C {(Lit_Other ":")})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  spids: [-1 3295]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:status)
                      op: Equal
                      rhs: {($ VSub_QMark "$?")}
                      spids: [3466]
                    )
                  ]
                  spids: [3466]
                )
                (C {(git)} {(rerere)})
                (If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$INDEX_OPTION"))})]
                      action: [
                        (SimpleCommand
                          words: [{(gettextln)} {(DQ ("Index was not unstashed."))}]
                          redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[3495])]
                        )
                      ]
                      spids: [-1 3486]
                    )
                  ]
                  spids: [-1 3499]
                )
                (C {(exit)} {($ VSub_Name "$status")})
              ]
              spids: [3459 3507]
            )
          ]
          spids: [2966]
        )
      spids: [2961 2965]
    )
    (FuncDef
      name: pop_stash
      body: 
        (BraceGroup
          children: [
            (C {(assert_stash_ref)} {(DQ ($ VSub_At "$@"))})
            (If
              arms: [
                (if_arm
                  cond: [(C {(apply_stash)} {(DQ ($ VSub_At "$@"))})]
                  action: [(C {(drop_stash)} {(DQ ($ VSub_At "$@"))})]
                  spids: [-1 3536]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:status)
                      op: Equal
                      rhs: {($ VSub_QMark "$?")}
                      spids: [3549]
                    )
                  ]
                  spids: [3549]
                )
                (C {(say)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(gettext)} {(DQ ("The stash is kept in case you need it again."))})
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [3556 3562]
                      )
                    )
                  }
                )
                (C {(exit)} {($ VSub_Name "$status")})
              ]
              spids: [3546 3571]
            )
          ]
          spids: [3516]
        )
      spids: [3512 3515]
    )
    (FuncDef
      name: drop_stash
      body: 
        (BraceGroup
          children: [
            (C {(assert_stash_ref)} {(DQ ($ VSub_At "$@"))})
            (AndOr
              children: [
                (C {(git)} {(reflog)} {(delete)} {(--updateref)} {(--rewrite)} {(DQ (${ VSub_Name REV))})
                (AndOr
                  children: [
                    (C {(say)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("Dropped ") 
                                        (EscapedLiteralPart
                                          token: <Lit_EscapedChar "\\$">
                                        ) ("{REV} (") (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) ("s)")
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [3614 3624]
                          )
                        )
                      }
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\$">) 
                                        ("{REV}: Could not drop stash entry")
                                      )
                                    }
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [3633 3640]
                          )
                        )
                      }
                    )
                  ]
                  op_id: Op_DPipe
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (SimpleCommand
                  words: [
                    {(git)}
                    {(rev-parse)}
                    {(--verify)}
                    {(--quiet)}
                    {(DQ ($ VSub_Name "$ref_stash") ("@{0}"))}
                  ]
                  redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[3662])]
                )
                (C {(clear_stash)})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [3581]
        )
      spids: [3576 3580]
    )
    (FuncDef
      name: apply_to_branch
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(test)} {(-n)} {(DQ ($ VSub_Number "$1"))})
                (C {(die)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(gettext)} {(DQ ("No branch name specified"))})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [3694 3700]
                      )
                    )
                  }
                )
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:branch)
                  op: Equal
                  rhs: {($ VSub_Number "$1")}
                  spids: [3704]
                )
              ]
              spids: [3704]
            )
            (C {(shift)} {(1)})
            (C {(set)} {(--)} {(--index)} {(DQ ($ VSub_At "$@"))})
            (C {(assert_stash_like)} {(DQ ($ VSub_At "$@"))})
            (AndOr
              children: [
                (C {(git)} {(checkout)} {(-b)} {($ VSub_Name "$branch")} 
                  {($ VSub_Name "$REV") (Lit_Other "^")}
                )
                (AndOr
                  children: [
                    (C {(apply_stash)} {(DQ ($ VSub_At "$@"))})
                    (BraceGroup
                      children: [
                        (AndOr
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ VSub_Name "$IS_STASH_REF"))})
                            (C {(drop_stash)} {(DQ ($ VSub_At "$@"))})
                          ]
                          op_id: Op_DPipe
                        )
                      ]
                      spids: [3755]
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [3678]
        )
      spids: [3673 3677]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:PARSE_CACHE)
          op: Equal
          rhs: {(SQ <--not-parsed>)}
          spids: [3780]
        )
      ]
      spids: [3780]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:seen_non_option) op:Equal rhs:{(SQ )} spids:[3788])]
      spids: [3788]
    )
    (ForEach
      iter_name: opt
      do_arg_iter: True
      body: 
        (DoGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name "$opt"))}
              arms: [
                (case_arm pat_list:[{(-) (Lit_Other "*")}] spids:[380638083810-1])
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:seen_non_option)
                              op: Equal
                              rhs: {(t)}
                              spids: [3816]
                            )
                          ]
                          spids: [3816]
                        )
                      terminator: <Op_Semi ";">
                    )
                    (ControlFlow token:<ControlFlow_Break break>)
                  ]
                  spids: [3813 3814 3822 -1]
                )
              ]
              spids: [3797 3803 3825]
            )
          ]
          spids: [3794 3827]
        )
      spids: [-1 -1]
    )
    (AndOr
      children: [
        (C {(test)} {(-n)} {(DQ ($ VSub_Name "$seen_non_option"))})
        (C {(set)} {(DQ (save))} {(DQ ($ VSub_At "$@"))})
      ]
      op_id: Op_DPipe
    )
    (Case
      to_match: {(DQ ($ VSub_Number "$1"))}
      arms: [
        (case_arm
          pat_list: [{(list)}]
          action: [(C {(shift)}) (C {(list_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3862 3863 3876 -1]
        )
        (case_arm
          pat_list: [{(show)}]
          action: [(C {(shift)}) (C {(show_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3878 3879 3892 -1]
        )
        (case_arm
          pat_list: [{(save)}]
          action: [(C {(shift)}) (C {(save_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3894 3895 3908 -1]
        )
        (case_arm
          pat_list: [{(apply)}]
          action: [(C {(shift)}) (C {(apply_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3910 3911 3924 -1]
        )
        (case_arm
          pat_list: [{(clear)}]
          action: [(C {(shift)}) (C {(clear_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3926 3927 3940 -1]
        )
        (case_arm
          pat_list: [{(create)}]
          action: [
            (C {(shift)})
            (AndOr
              children: [
                (C {(create_stash)} {(DQ ($ VSub_Star "$*"))})
                (C {(echo)} {(DQ ($ VSub_Name "$w_commit"))})
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [3942 3943 3964 -1]
        )
        (case_arm
          pat_list: [{(store)}]
          action: [(C {(shift)}) (C {(store_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3966 3967 3980 -1]
        )
        (case_arm
          pat_list: [{(drop)}]
          action: [(C {(shift)}) (C {(drop_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3982 3983 3996 -1]
        )
        (case_arm
          pat_list: [{(pop)}]
          action: [(C {(shift)}) (C {(pop_stash)} {(DQ ($ VSub_At "$@"))})]
          spids: [3998 3999 4012 -1]
        )
        (case_arm
          pat_list: [{(branch)}]
          action: [(C {(shift)}) (C {(apply_to_branch)} {(DQ ($ VSub_At "$@"))})]
          spids: [4014 4015 4028 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Case
              to_match: {($ VSub_Pound "$#")}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [
                    (AndOr
                      children: [
                        (C {(save_stash)})
                        (C {(say)} 
                          {
                            (DQ 
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(gettext)} 
                                        {
                                          (DQ ("(To restore them type ") 
                                            (EscapedLiteralPart
                                              token: <Lit_EscapedChar "\\\"">
                                            ) ("git stash apply") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) (")")
                                          )
                                        }
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [4053 4063]
                              )
                            )
                          }
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  spids: [4041 4042 4067 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [(C {(usage)})]
                  spids: [4070 4071 -1 4077]
                )
              ]
              spids: [4034 4038 4077]
            )
          ]
          spids: [4030 4031 4080 -1]
        )
      ]
      spids: [3854 3860 4082]
    )
  ]
)