(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dashless)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (C {(basename)} {(DQ ($ Id.VSub_Number '$0'))})
                          (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/-/ /' span_id:22))})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [7]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('list [<options>]\n') ('   or: ') ($ Id.VSub_DollarName '$dashless') 
                (' show [<stash>]\n') ('   or: ') ($ Id.VSub_DollarName '$dashless') (' drop [-q|--quiet] [<stash>]\n') ('   or: ') 
                ($ Id.VSub_DollarName '$dashless') (' ( pop | apply ) [--index] [-q|--quiet] [<stash>]\n') ('   or: ') ($ Id.VSub_DollarName '$dashless') 
                (' branch <branchname> [<stash>]\n') ('   or: ') ($ Id.VSub_DollarName '$dashless') 
                (' [save [--patch] [-k|--[no-]keep-index] [-q|--quiet]\n') ('\t\t       [-u|--include-untracked] [-a|--all] [<message>]]\n') ('   or: ') 
                ($ Id.VSub_DollarName '$dashless') (' clear')
              )
            }
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUBDIRECTORY_OK)
          op: assign_op.Equal
          rhs: {(Yes)}
          spids: [51]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTIONS_SPEC)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [54]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:START_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:57)
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
          spids: [56]
        )
      ]
    )
    (C {(.)} {(git-sh-setup)})
    (C {(require_work_tree)})
    (C {(cd_to_toplevel)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMP)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$GIT_DIR') (/.git-stash.) ($ Id.VSub_Dollar '$$'))}
          spids: [70]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TMPindex)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:GIT_INDEX_FILE span_id:79)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_Hyphen
                    arg_word: 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:82)
                            command_list: 
                              (command.CommandList
                                children: [(C {(git)} {(rev-parse)} {(--git-path)} {(index)})]
                              )
                          )
                        )
                      }
                  )
              ) (.stash.) ($ Id.VSub_Dollar '$$')
            }
          spids: [77]
        )
      ]
    )
    (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'rm -f "$TMP-"* "$TMPindex"' span_id:99))} {(0)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:ref_stash)
          op: assign_op.Equal
          rhs: {(refs/stash)}
          spids: [105]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(git)} {(config)} {(--get-colorbool)} {(color.interactive)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:118)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:help_color)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:125)
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(git)} {(config)} {(--get-color)} {(color.interactive.help)} 
                                  {(SQ (Token id:Id.Lit_Chars val:'red bold' span_id:135))}
                                )
                              ]
                            )
                        )
                      )
                    }
                  spids: [123]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:reset_color)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:143)
                          command_list: 
                            (command.CommandList
                              children: [(C {(git)} {(config)} {(--get-color)} {(SQ )} {(reset)})]
                            )
                        )
                      )
                    }
                  spids: [141]
                )
              ]
            )
          ]
          spids: [109 120]
        )
      ]
      else_action: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:help_color)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [160]
            )
          ]
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:reset_color)
              op: assign_op.Equal
              rhs: (word.Empty)
              spids: [163]
            )
          ]
        )
      ]
    )
    (command.ShFunction
      name: no_changes
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(git)} {(diff-index)} {(--quiet)} {(--cached)} {(HEAD)} {(--ignore-submodules)} {(--)})
                (C {(git)} {(diff-files)} {(--quiet)} {(--ignore-submodules)})
                (command.Subshell
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$untracked'))})
                            (C {(test)} {(-z)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:220)
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {(untracked_files)})]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: untracked_files
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:excl_opt)
                  op: assign_op.Equal
                  rhs: {(--exclude-standard)}
                  spids: [237]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$untracked'))} {(Id.Lit_Equals '=')} {(DQ (all))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:excl_opt)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [255]
                    )
                  ]
                )
              ]
            )
            (C {(git)} {(ls-files)} {(-o)} {(-z)} {($ Id.VSub_DollarName '$excl_opt')})
          ]
        )
    )
    (command.ShFunction
      name: clear_stash
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:297)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} 
                                    {(DQ ('git stash clear with parameters is unimplemented'))}
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [279 291]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:current)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:313)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                        {($ Id.VSub_DollarName '$ref_stash')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [312]
                        )
                      ]
                    )
                  ]
                  action: [
                    (C {(git)} {(update-ref)} {(-d)} {($ Id.VSub_DollarName '$ref_stash')} 
                      {($ Id.VSub_DollarName '$current')}
                    )
                  ]
                  spids: [310 326]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: create_stash
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:stash_msg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [353]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:untracked)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$2'))}
                  spids: [359]
                )
              ]
            )
            (C {(git)} {(update-index)} {(-q)} {(--refresh)})
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(no_changes)})]
                  action: [
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:383)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [375 380]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:b_commit)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:399)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})]
                                  )
                              )
                            }
                          spids: [398]
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:head)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:414)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(git)} {(rev-list)} {(--oneline)} {(-n)} {(1)} {(HEAD)} {(--)})
                                    ]
                                  )
                              )
                            }
                          spids: [413]
                        )
                      ]
                    )
                  ]
                  spids: [396 410]
                )
              ]
              else_action: [
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:437)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('You do not have the initial commit yet'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:branch)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:454)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(git)} {(symbolic-ref)} {(-q)} {(HEAD)})]
                                  )
                              )
                            }
                          spids: [453]
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:branch)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:branch span_id:470)
                                suffix_op: 
                                  (suffix_op.Unary
                                    op_id: Id.VOp1_Pound
                                    arg_word: {(refs) (Id.Lit_Slash /) (heads) (Id.Lit_Slash /)}
                                  )
                              )
                            }
                          spids: [468]
                        )
                      ]
                    )
                  ]
                  spids: [451 465]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:branch)
                      op: assign_op.Equal
                      rhs: {(SQ (Token id:Id.Lit_Chars val:'(no branch)' span_id:484))}
                      spids: [482]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:msg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:492)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s: %s' span_id:496))} 
                                {(DQ ($ Id.VSub_DollarName '$branch'))} {(DQ ($ Id.VSub_DollarName '$head'))}
                              )
                            ]
                          )
                      )
                    }
                  spids: [491]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:i_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:515)
                            command_list: (command.CommandList children:[(C {(git)} {(write-tree)})])
                          )
                        }
                      spids: [514]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:i_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:525)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(printf)} 
                                        {
                                          (SQ 
                                            (Token
                                              id: Id.Lit_Chars
                                              val: 'index on %s\\n'
                                              span_id: 529
                                            )
                                          )
                                        } {(DQ ($ Id.VSub_DollarName '$msg'))}
                                      )
                                      (C {(git)} {(commit-tree)} {($ Id.VSub_DollarName '$i_tree')} 
                                        {(-p)} {($ Id.VSub_DollarName '$b_commit')}
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [524]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:556)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Cannot save the current index state'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$untracked'))})]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:u_commit)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:590)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Pipeline
                                            children: [
                                              (C {(untracked_files)})
                                              (command.Subshell
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (command.AndOr
                                                        ops: [
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
                                                        ]
                                                        children: [
                                                          (command.ShAssignment
                                                            pairs: [
                                                              (assign_pair
                                                                lhs: 
                                                                  (sh_lhs_expr.Name
                                                                    name: GIT_INDEX_FILE
                                                                  )
                                                                op: assign_op.Equal
                                                                rhs: 
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName 
'$TMPindex'
                                                                      )
                                                                    )
                                                                  }
                                                                spids: [600]
                                                              )
                                                            ]
                                                          )
                                                          (C {(export)} {(GIT_INDEX_FILE)})
                                                          (C {(rm)} {(-f)} 
                                                            {(DQ ($ Id.VSub_DollarName '$TMPindex'))}
                                                          )
                                                          (C {(git)} {(update-index)} {(-z)} {(--add)} 
                                                            {(--remove)} {(--stdin)}
                                                          )
                                                          (command.ShAssignment
                                                            pairs: [
                                                              (assign_pair
                                                                lhs: (sh_lhs_expr.Name name:u_tree)
                                                                op: assign_op.Equal
                                                                rhs: 
                                                                  {
                                                                    (command_sub
                                                                      left_token: 
                                                                        (Token
                                                                          id: Id.Left_DollarParen
                                                                          val: '$('
                                                                          span_id: 642
                                                                        )
                                                                      command_list: 
                                                                        (command.CommandList
                                                                          children: [
                                                                            (C {(git)} {(write-tree)})
                                                                          ]
                                                                        )
                                                                    )
                                                                  }
                                                                spids: [641]
                                                              )
                                                            ]
                                                          )
                                                          (command.Pipeline
                                                            children: [
                                                              (C {(printf)} 
                                                                {
                                                                  (SQ 
                                                                    (Token
                                                                      id: Id.Lit_Chars
                                                                      val: 
'untracked files on %s\\n'
                                                                      span_id: 654
                                                                    )
                                                                  )
                                                                } {(DQ ($ Id.VSub_DollarName '$msg'))}
                                                              )
                                                              (C {(git)} {(commit-tree)} 
                                                                {($ Id.VSub_DollarName '$u_tree')}
                                                              )
                                                            ]
                                                            negated: F
                                                          )
                                                          (C {(rm)} {(-f)} 
                                                            {(DQ ($ Id.VSub_DollarName '$TMPindex'))}
                                                          )
                                                        ]
                                                      )
                                                    ]
                                                  )
                                              )
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [589]
                            )
                          ]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:690)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ('Cannot save the untracked files'))})
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:untracked_commit_option)
                              op: assign_op.Equal
                              rhs: {(DQ ('-p ') ($ Id.VSub_DollarName '$u_commit'))}
                              spids: [701]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:706)
                    )
                  ]
                  spids: [567 578]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:untracked_commit_option)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [712]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$patch_mode'))})]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:w_tree)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:739)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Subshell
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (command.AndOr
                                                    ops: [
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
Id.Op_DAmp
                                                    ]
                                                    children: [
                                                      (C {(git)} {(read-tree)} 
                                                        {(--index-output) (Id.Lit_Equals '=') 
                                                          (DQ ($ Id.VSub_DollarName '$TMPindex'))
                                                        } {(-m)} {($ Id.VSub_DollarName '$i_tree')}
                                                      )
                                                      (command.ShAssignment
                                                        pairs: [
                                                          (assign_pair
                                                            lhs: 
                                                              (sh_lhs_expr.Name
                                                                name: GIT_INDEX_FILE
                                                              )
                                                            op: assign_op.Equal
                                                            rhs: 
                                                              {
                                                                (DQ 
                                                                  ($ Id.VSub_DollarName '$TMPindex')
                                                                )
                                                              }
                                                            spids: [761]
                                                          )
                                                        ]
                                                      )
                                                      (C {(export)} {(GIT_INDEX_FILE)})
                                                      (command.Simple
                                                        words: [
                                                          {(git)}
                                                          {(diff)}
                                                          {(--name-only)}
                                                          {(-z)}
                                                          {(HEAD)}
                                                          {(--)}
                                                        ]
                                                        redirects: [
                                                          (redir.Redir
                                                            op: 
                                                              (Token
                                                                id: Id.Redir_Great
                                                                val: '>'
                                                                span_id: 788
                                                              )
                                                            fd: -1
                                                            arg_word: 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName '$TMP') 
                                                                  (-stagenames)
                                                                )
                                                              }
                                                          )
                                                        ]
                                                      )
                                                      (command.Simple
                                                        words: [
                                                          {(git)}
                                                          {(update-index)}
                                                          {(-z)}
                                                          {(--add)}
                                                          {(--remove)}
                                                          {(--stdin)}
                                                        ]
                                                        redirects: [
                                                          (redir.Redir
                                                            op: 
                                                              (Token
                                                                id: Id.Redir_Less
                                                                val: '<'
                                                                span_id: 809
                                                              )
                                                            fd: -1
                                                            arg_word: 
                                                              {
                                                                (DQ ($ Id.VSub_DollarName '$TMP') 
                                                                  (-stagenames)
                                                                )
                                                              }
                                                          )
                                                        ]
                                                      )
                                                      (C {(git)} {(write-tree)})
                                                      (C {(rm)} {(-f)} 
                                                        {(DQ ($ Id.VSub_DollarName '$TMPindex'))}
                                                      )
                                                    ]
                                                  )
                                                ]
                                              )
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [738]
                            )
                          ]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:844)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ('Cannot save the current worktree state'))})
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [719 730]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                  children: [
                    (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$TMP') (-index))})
                    (command.Simple
                      words: [{(git)} {(read-tree)} {(HEAD)}]
                      more_env: [
                        (env_pair
                          name: GIT_INDEX_FILE
                          val: {(DQ ($ Id.VSub_DollarName '$TMP') (-index))}
                          spids: [871]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(git)} {(add--interactive)} {(--patch) (Id.Lit_Equals '=') (stash)} {(--)}]
                      more_env: [
                        (env_pair
                          name: GIT_INDEX_FILE
                          val: {(DQ ($ Id.VSub_DollarName '$TMP') (-index))}
                          spids: [891]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:w_tree)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:918)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [{(git)} {(write-tree)}]
                                        more_env: [
                                          (env_pair
                                            name: GIT_INDEX_FILE
                                            val: {(DQ ($ Id.VSub_DollarName '$TMP') (-index))}
                                            spids: [919]
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [917]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:936)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} {(DQ ('Cannot save the current worktree state'))})
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DAmp Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [
                        {(git)}
                        {(diff-tree)}
                        {(-p)}
                        {(HEAD)}
                        {($ Id.VSub_DollarName '$w_tree')}
                        {(--)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:959)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$TMP') (-patch))}
                        )
                      ]
                    )
                    (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$TMP') (-patch))})
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:983)
                            command_list: 
                              (command.CommandList
                                children: [(C {(gettext)} {(DQ ('No changes selected'))})]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$TMP') (-index))})
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1009)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} {(DQ ("Cannot remove temporary index (can't happen)"))})
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$stash_msg'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:stash_msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1043)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(printf)} 
                                        {(SQ (Token id:Id.Lit_Chars val:'WIP on %s' span_id:1047))} {(DQ ($ Id.VSub_DollarName '$msg'))}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1042]
                        )
                      ]
                    )
                  ]
                  spids: [1028 1039]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:stash_msg)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1060)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(printf)} 
                                    {(SQ (Token id:Id.Lit_Chars val:'On %s: %s' span_id:1064))} {(DQ ($ Id.VSub_DollarName '$branch'))} {(DQ ($ Id.VSub_DollarName '$stash_msg'))}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1059]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:w_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1081)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Pipeline
                                    children: [
                                      (C {(printf)} 
                                        {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:1085))} {(DQ ($ Id.VSub_DollarName '$stash_msg'))}
                                      )
                                      (C {(git)} {(commit-tree)} {($ Id.VSub_DollarName '$w_tree')} 
                                        {(-p)} {($ Id.VSub_DollarName '$b_commit')} {(-p)} {($ Id.VSub_DollarName '$i_commit')} 
                                        {($ Id.VSub_DollarName '$untracked_commit_option')}
                                      )
                                    ]
                                    negated: F
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1080]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1118)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Cannot record working tree state'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: store_stash
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:1138)
              cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(-m)} {(--message)}]
                          action: [
                            (C {(shift)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:stash_msg)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                  spids: [1171]
                                )
                              ]
                            )
                          ]
                          spids: [1162 1165 1177 -1]
                        )
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:quiet)
                                  op: assign_op.Equal
                                  rhs: {(t)}
                                  spids: [1186]
                                )
                              ]
                            )
                          ]
                          spids: [1180 1183 1190 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:1197)
                            )
                          ]
                          spids: [1193 1194 1200 -1]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {($ Id.VSub_Pound '$#')} {(Id.Lit_Equals '=')} {(1)})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1226)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1230)
                                    ) ($ Id.VSub_DollarName '$dashless') (' store') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1233)
                                    ) (' requires one <commit> argument')
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:w_commit)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                  spids: [1241]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$stash_msg'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:stash_msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ('Created via ') 
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1264)
                                ) ('git stash store') 
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1266)
                                ) (.)
                              )
                            }
                          spids: [1261]
                        )
                      ]
                    )
                  ]
                  spids: [1247 1258]
                )
              ]
            )
            (C {(git)} {(update-ref)} {(--create-reflog)} {(-m)} {(DQ ($ Id.VSub_DollarName '$stash_msg'))} 
              {($ Id.VSub_DollarName '$ref_stash')} {($ Id.VSub_DollarName '$w_commit')}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1292]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(test)} {($ Id.VSub_DollarName '$ret')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})
                (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$quiet'))})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1321)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Cannot update ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1326)
                                    ) ('ref_stash with ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1328)
                                    ) (w_commit)
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:1335)
              arg_word: {($ Id.VSub_DollarName '$ret')}
            )
          ]
        )
    )
    (command.ShFunction
      name: save_stash
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:keep_index)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1350]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:patch_mode)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1353]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:untracked)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1356]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:1359)
              cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_Number '$1'))}
                      arms: [
                        (case_arm
                          pat_list: [{(-k)} {(--keep-index)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:keep_index)
                                  op: assign_op.Equal
                                  rhs: {(t)}
                                  spids: [1389]
                                )
                              ]
                            )
                          ]
                          spids: [1383 1386 1393 -1]
                        )
                        (case_arm
                          pat_list: [{(--no-keep-index)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:keep_index)
                                  op: assign_op.Equal
                                  rhs: {(n)}
                                  spids: [1400]
                                )
                              ]
                            )
                          ]
                          spids: [1396 1397 1404 -1]
                        )
                        (case_arm
                          pat_list: [{(-p)} {(--patch)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:patch_mode)
                                  op: assign_op.Equal
                                  rhs: {(t)}
                                  spids: [1413]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$keep_index'))})
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:keep_index)
                                      op: assign_op.Equal
                                      rhs: {(t)}
                                      spids: [1431]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                          spids: [1407 1410 1435 -1]
                        )
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:GIT_QUIET)
                                  op: assign_op.Equal
                                  rhs: {(t)}
                                  spids: [1444]
                                )
                              ]
                            )
                          ]
                          spids: [1438 1441 1448 -1]
                        )
                        (case_arm
                          pat_list: [{(-u)} {(--include-untracked)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:untracked)
                                  op: assign_op.Equal
                                  rhs: {(untracked)}
                                  spids: [1457]
                                )
                              ]
                            )
                          ]
                          spids: [1451 1454 1461 -1]
                        )
                        (case_arm
                          pat_list: [{(-a)} {(--all)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:untracked)
                                  op: assign_op.Equal
                                  rhs: {(all)}
                                  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)})
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:1494)
                            )
                          ]
                          spids: [1487 1488 1497 -1]
                        )
                        (case_arm
                          pat_list: [{(-) (Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:option)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number '$1'))}
                                  spids: [1505]
                                )
                              ]
                            )
                            (C {(eval_gettextln)} 
                              {
                                (DQ ("error: unknown option for 'stash save': ") 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1555)
                                  ) ('option\n') ("       To provide a message, use git stash save -- '") 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1558)
                                  ) ("option'")
                                )
                              }
                            )
                            (C {(usage)})
                          ]
                          spids: [1500 1502 1566 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:1573)
                            )
                          ]
                          spids: [1569 1570 1576 -1]
                        )
                      ]
                    )
                    (C {(shift)})
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$patch_mode'))})
                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$untracked'))})
                      ]
                    )
                  ]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1616)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} 
                                    {
                                      (DQ 
                                        (
"Can't use --patch and --include-untracked or --all at the same time"
                                        )
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [1589 1610]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:stash_msg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '$*'))}
                  spids: [1630]
                )
              ]
            )
            (C {(git)} {(update-index)} {(-q)} {(--refresh)})
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(no_changes)})]
                  action: [
                    (C {(say)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1657)
                            command_list: 
                              (command.CommandList
                                children: [(C {(gettext)} {(DQ ('No local changes to save'))})]
                              )
                          )
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1667)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [1646 1651]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe Id.Op_DPipe]
              children: [
                (C {(git)} {(reflog)} {(exists)} {($ Id.VSub_DollarName '$ref_stash')})
                (C {(clear_stash)})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1693)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Cannot initialize stash'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (C {(create_stash)} {(DQ ($ Id.VSub_DollarName '$stash_msg'))} 
              {($ Id.VSub_DollarName '$untracked')}
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(store_stash)} {(-m)} {(DQ ($ Id.VSub_DollarName '$stash_msg'))} {(-q)} 
                  {($ Id.VSub_DollarName '$w_commit')}
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1731)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Cannot save the current status'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (C {(say)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1744)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(eval_gettext)} 
                            {
                              (DQ ('Saved working directory and index state ') 
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1749)
                                ) (stash_msg)
                              )
                            }
                          )
                        ]
                      )
                  )
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$patch_mode'))})]
                  action: [
                    (C {(git)} {(reset)} {(--hard)} 
                      {
                        (braced_var_sub
                          token: (Token id:Id.VSub_Name val:GIT_QUIET span_id:1778)
                          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{(-q)})
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$untracked'))} {(Id.Lit_Equals '=')} 
                          {(DQ (all))}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CLEAN_X_OPTION)
                              op: assign_op.Equal
                              rhs: {(-x)}
                              spids: [1798]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:CLEAN_X_OPTION)
                              op: assign_op.Equal
                              rhs: (word.Empty)
                              spids: [1803]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$untracked'))})]
                          action: [
                            (C {(git)} {(clean)} {(--force)} {(--quiet)} {(-d)} 
                              {($ Id.VSub_DollarName '$CLEAN_X_OPTION')}
                            )
                          ]
                          spids: [1806 1817]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {(DQ ($ Id.VSub_DollarName '$keep_index'))} 
                                  {(Id.Lit_Equals '=')} {(DQ (t))}
                                )
                                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$i_tree'))})
                              ]
                            )
                          ]
                          action: [
                            (C {(git)} {(read-tree)} {(--reset)} {(-u)} {($ Id.VSub_DollarName '$i_tree')})
                          ]
                          spids: [1837 1862]
                        )
                      ]
                    )
                  ]
                  spids: [1757 1768]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [{(git)} {(apply)} {(-R)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:1888)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$TMP') (-patch))}
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1901)
                            command_list: 
                              (command.CommandList
                                children: [(C {(gettext)} {(DQ ('Cannot remove worktree changes'))})]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$keep_index'))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (t))}
                        )
                      ]
                      action: [(C {(git)} {(reset)})]
                      spids: [1912 1928]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: have_stash
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(git)} {(rev-parse)} {(--verify)} {(--quiet)} {($ Id.VSub_DollarName '$ref_stash')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1962)
                  fd: -1
                  arg_word: {(/dev/null)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: list_stash
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(have_stash)})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1980)
                  arg_word: {(0)}
                )
              ]
            )
            (C {(git)} {(log)} {(--format) (Id.Lit_Equals '=') (DQ ('%gd: %gs'))} {(-g)} 
              {(--first-parent)} {(-m)} {(DQ ($ Id.VSub_At '$@'))} {($ Id.VSub_DollarName '$ref_stash')} {(--)}
            )
          ]
        )
    )
    (command.ShFunction
      name: show_stash
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ALLOW_UNKNOWN_FLAGS)
                  op: assign_op.Equal
                  rhs: {(t)}
                  spids: [2020]
                )
              ]
            )
            (C {(assert_stash_like)} {(DQ ($ Id.VSub_At '$@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$FLAGS'))})]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2051)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.AndOr
                                            ops: [Id.Op_DPipe]
                                            children: [
                                              (C {(git)} {(config)} {(--bool)} {(stash.showStat)})
                                              (C {(echo)} {(true)})
                                            ]
                                          )
                                        ]
                                      )
                                  )
                                )
                              } {(Id.Lit_Equals '=')} {(DQ (true))}
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: {(--stat)}
                                  spids: [2078]
                                )
                              ]
                            )
                          ]
                          spids: [2046 2075]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2091)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.AndOr
                                            ops: [Id.Op_DPipe]
                                            children: [
                                              (C {(git)} {(config)} {(--bool)} {(stash.showPatch)})
                                              (C {(echo)} {(false)})
                                            ]
                                          )
                                        ]
                                      )
                                  )
                                )
                              } {(Id.Lit_Equals '=')} {(DQ (true))}
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(${ Id.VSub_Name FLAGS) 
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:FLAGS span_id:2123)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VTest_ColonPlus
                                            arg_word: {(' ')}
                                          )
                                      ) (-p)
                                    }
                                  spids: [2118]
                                )
                              ]
                            )
                          ]
                          spids: [2086 2115]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$FLAGS'))})]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Return val:return span_id:2148)
                              arg_word: {(0)}
                            )
                          ]
                          spids: [2134 2145]
                        )
                      ]
                    )
                  ]
                  spids: [2032 2043]
                )
              ]
            )
            (C {(git)} {(diff)} {(${ Id.VSub_Name FLAGS)} {($ Id.VSub_DollarName '$b_commit')} 
              {($ Id.VSub_DollarName '$w_commit')}
            )
          ]
        )
    )
    (command.ShFunction
      name: show_help
      body: 
        (command.BraceGroup
          children: [
            (C {(exec)} {(git)} {(help)} {(stash)})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:2192)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.ShFunction
      name: parse_flags_and_rev
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$PARSE_CACHE'))} {(Id.Lit_Equals '=')} 
                  {(DQ ($ Id.VSub_Star '$*'))}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:2326)
                  arg_word: {(0)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PARSE_CACHE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '$*'))}
                  spids: [2334]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IS_STASH_LIKE)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2341]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:IS_STASH_REF)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2344]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:INDEX_OPTION)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2347]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:s)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2350]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:w_commit)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2353]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:b_commit)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2356]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i_commit)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2359]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:u_commit)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2362]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:w_tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2365]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:b_tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2368]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:i_tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2371]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:u_tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2374]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:REV)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2379)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--no-flags)} {(--symbolic)} {(--sq)} 
                                    {(DQ ($ Id.VSub_At '$@'))}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2378]
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:2397)
                  arg_word: {(1)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:FLAGS)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [2403]
                )
              ]
            )
            (command.ForEach
              iter_name: opt
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$opt'))}
                      arms: [
                        (case_arm
                          pat_list: [{(-q)} {(--quiet)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:GIT_QUIET)
                                  op: assign_op.Equal
                                  rhs: {(-t)}
                                  spids: [2429]
                                )
                              ]
                            )
                          ]
                          spids: [2423 2426 2433 -1]
                        )
                        (case_arm
                          pat_list: [{(--index)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:INDEX_OPTION)
                                  op: assign_op.Equal
                                  rhs: {(--index)}
                                  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: [{(-) (Id.Lit_Star '*')}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(test)} {(DQ ($ Id.VSub_DollarName '$ALLOW_UNKNOWN_FLAGS'))} 
                                  {(Id.Lit_Equals '=')} {(t)}
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 2478
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(eval_gettext)} 
                                                {
                                                  (DQ ('unknown option: ') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\$'
                                                          span_id: 2483
                                                        )
                                                    ) (opt)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name FLAGS) 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:FLAGS span_id:2496)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VTest_ColonPlus
                                              arg_word: {(' ')}
                                            )
                                        ) ($ Id.VSub_DollarName '$opt')
                                      )
                                    }
                                  spids: [2490]
                                )
                              ]
                            )
                          ]
                          spids: [2457 2459 2504 -1]
                        )
                      ]
                    )
                  ]
                )
            )
            (C {(eval)} {(Id.KW_Set set)} {(--)} {($ Id.VSub_DollarName '$REV')})
            (command.Case
              to_match: {($ Id.VSub_Pound '$#')}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(have_stash)})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2542)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(gettext)} {(DQ ('No stash found.'))})]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (C {(Id.KW_Set set)} {(--)} 
                      {(${ Id.VSub_Name ref_stash) (Id.Lit_Other '@') (Id.Lit_LBrace '{') (0) 
                        (Id.Lit_RBrace '}')
                      }
                    )
                  ]
                  spids: [2531 2532 2565 -1]
                )
                (case_arm
                  pat_list: [{(1)}]
                  action: [(C {(Id.Lit_Other ':')})]
                  spids: [2568 2569 2575 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2585)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Too many revisions specified: ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2590)
                                        ) (REV)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [2578 2579 2597 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:REV)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2605)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--symbolic)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ Id.VSub_Number '$1'))}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2604]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:reference)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number '$1'))}
                          spids: [2626]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2635)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2639)
                                        ) ('reference is not a valid reference')
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
                Id.Op_DAmp
              ]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:i_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2651)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ Id.VSub_DollarName '$REV') ('^2'))}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2650]
                    )
                  ]
                )
                (C {(Id.KW_Set set)} {(--)} 
                  {
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2673)
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.Simple
                              words: [
                                {(git)}
                                {(rev-parse)}
                                {(DQ ($ Id.VSub_DollarName '$REV'))}
                                {(DQ ($ Id.VSub_DollarName '$REV') ('^1'))}
                                {(DQ ($ Id.VSub_DollarName '$REV') (':'))}
                                {(DQ ($ Id.VSub_DollarName '$REV') ('^1:'))}
                                {(DQ ($ Id.VSub_DollarName '$REV') ('^2:'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'2>' span_id:2702)
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                          ]
                        )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:s)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2709]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:w_commit)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$1')}
                      spids: [2715]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:b_commit)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$2')}
                      spids: [2721]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:w_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$3')}
                      spids: [2727]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:b_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$4')}
                      spids: [2733]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:i_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number '$5')}
                      spids: [2739]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IS_STASH_LIKE)
                      op: assign_op.Equal
                      rhs: {(t)}
                      spids: [2745]
                    )
                  ]
                )
                (C {(test)} {(DQ ($ Id.VSub_DollarName '$ref_stash'))} {(Id.Lit_Equals '=')} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2760)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(rev-parse)} {(--symbolic-full-name)} 
                                {
                                  (DQ 
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:REV span_id:2769)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VOp1_Percent
                                          arg_word: {('@*')}
                                        )
                                    )
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:IS_STASH_REF)
                      op: assign_op.Equal
                      rhs: {(t)}
                      spids: [2780]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:u_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2786)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                    {(DQ ($ Id.VSub_DollarName '$REV') ('^3'))}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2785]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:u_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2805)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Simple
                                    words: [
                                      {(git)}
                                      {(rev-parse)}
                                      {(DQ ($ Id.VSub_DollarName '$REV') ('^3:'))}
                                    ]
                                    redirects: [
                                      (redir.Redir
                                        op: (Token id:Id.Redir_Great val:'2>' span_id:2815)
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                      spids: [2804]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: is_stash_like
      body: 
        (command.BraceGroup
          children: [
            (C {(parse_flags_and_rev)} {(DQ ($ Id.VSub_At '$@'))})
            (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$IS_STASH_LIKE'))})
          ]
        )
    )
    (command.ShFunction
      name: assert_stash_like
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(is_stash_like)} {(DQ ($ Id.VSub_At '$@'))})
                (command.BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:args)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Star '$*'))}
                          spids: [2865]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2874)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("'") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2879)
                                        ) ("args' is not a stash-like commit")
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: is_stash_ref
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(is_stash_like)} {(DQ ($ Id.VSub_At '$@'))})
                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$IS_STASH_REF'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: assert_stash_ref
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(is_stash_ref)} {(DQ ($ Id.VSub_At '$@'))})
                (command.BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:args)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Star '$*'))}
                          spids: [2935]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2944)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ("'") 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2949)
                                        ) ("args' is not a stash reference")
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: apply_stash
      body: 
        (command.BraceGroup
          children: [
            (C {(assert_stash_like)} {(DQ ($ Id.VSub_At '$@'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(git)} {(update-index)} {(-q)} {(--refresh)})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2991)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('unable to refresh index'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:c_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3007)
                            command_list: (command.CommandList children:[(C {(git)} {(write-tree)})])
                          )
                        }
                      spids: [3006]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3019)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(gettext)} {(DQ ('Cannot apply a stash in the middle of a merge'))})
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:unstashed_index_tree)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [3030]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp]
                      children: [
                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$INDEX_OPTION'))})
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$b_tree'))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$i_tree'))}
                        )
                        (C {(test)} {(DQ ($ Id.VSub_DollarName '$c_tree'))} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$i_tree'))}
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(git)} {(diff-tree)} {(--binary)} 
                          {($ Id.VSub_DollarName '$s') (Id.Lit_Other '^') (2) (Id.Lit_Other '^') (..) 
                            ($ Id.VSub_DollarName '$s') (Id.Lit_Other '^') (2)
                          }
                        )
                        (C {(git)} {(apply)} {(--cached)})
                      ]
                      negated: F
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3116)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gettext)} {(DQ ('Conflicts in index. Try without --index.'))})
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:unstashed_index_tree)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3127)
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {(git)} {(write-tree)})]
                                      )
                                  )
                                }
                              spids: [3126]
                            )
                          ]
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3139)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(gettext)} {(DQ ('Could not save index tree'))})]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (C {(git)} {(reset)})
                  ]
                  spids: [3033 3075]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$u_tree'))})]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (command.Simple
                          words: [{(git-read-tree)} {(DQ ($ Id.VSub_DollarName '$u_tree'))}]
                          more_env: [
                            (env_pair
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ Id.VSub_DollarName '$TMPindex'))}
                              spids: [3172]
                            )
                          ]
                        )
                        (command.Simple
                          words: [{(git)} {(checkout-index)} {(--all)}]
                          more_env: [
                            (env_pair
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ Id.VSub_DollarName '$TMPindex'))}
                              spids: [3186]
                            )
                          ]
                        )
                        (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$TMPindex'))})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3214)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gettext)} 
                                        {(DQ ('Could not restore untracked files from stash'))}
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [3158 3169]
                )
              ]
            )
            (C {(eval)} 
              {
                (DQ ('\n') ('\t\tGITHEAD_') ($ Id.VSub_DollarName '$w_tree') ("='Stashed changes' &&\n") 
                  ('\t\tGITHEAD_') ($ Id.VSub_DollarName '$c_tree') ("='Updated upstream' &&\n") ('\t\tGITHEAD_') 
                  ($ Id.VSub_DollarName '$b_tree') ("='Version stash was based on' &&\n") ('\t\texport GITHEAD_') ($ Id.VSub_DollarName '$w_tree') 
                  (' GITHEAD_') ($ Id.VSub_DollarName '$c_tree') (' GITHEAD_') ($ Id.VSub_DollarName '$b_tree') ('\n') ('\t')
                )
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_QUIET'))})]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:GIT_MERGE_VERBOSITY)
                              op: assign_op.Equal
                              rhs: {(0)}
                              spids: [3267]
                            )
                          ]
                        )
                        (C {(export)} {(GIT_MERGE_VERBOSITY)})
                      ]
                    )
                  ]
                  spids: [3253 3264]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(git)} {(merge-recursive)} {($ Id.VSub_DollarName '$b_tree')} {(--)} 
                      {($ Id.VSub_DollarName '$c_tree')} {($ Id.VSub_DollarName '$w_tree')}
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$unstashed_index_tree'))})
                          ]
                          action: [
                            (C {(git)} {(read-tree)} 
                              {(DQ ($ Id.VSub_DollarName '$unstashed_index_tree'))}
                            )
                          ]
                          spids: [3302 3313]
                        )
                      ]
                      else_action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:a)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$TMP') (-added))}
                                  spids: [3328]
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {(git)}
                                {(diff-index)}
                                {(--cached)}
                                {(--name-only)}
                                {(--diff-filter) (Id.Lit_Equals '=') (A)}
                                {($ Id.VSub_DollarName '$c_tree')}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:3351)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$a'))}
                                )
                              ]
                            )
                            (C {(git)} {(read-tree)} {(--reset)} {($ Id.VSub_DollarName '$c_tree')})
                            (command.Simple
                              words: [{(git)} {(update-index)} {(--add)} {(--stdin)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Less val:'<' span_id:3378)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$a'))}
                                )
                              ]
                            )
                            (C {(die)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3389)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} {(DQ ('Cannot unstage modified files'))})
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                        (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$a'))})
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:squelch)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [3411]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$GIT_QUIET'))})]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:squelch)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(SQ (Token id:Id.Lit_Chars val:'>/dev/null 2>&1' span_id:3430))}
                                  spids: [3428]
                                )
                              ]
                            )
                          ]
                          spids: [3414 3425]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Subshell
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {(cd)} {(DQ ($ Id.VSub_DollarName '$START_DIR'))})
                                    (C {(eval)} {(DQ ('git status ') ($ Id.VSub_DollarName '$squelch'))})
                                  ]
                                )
                              ]
                            )
                        )
                        (C {(Id.Lit_Other ':')})
                      ]
                    )
                  ]
                  spids: [3280 3295]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [3466]
                    )
                  ]
                )
                (C {(git)} {(rerere)})
                (command.If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$INDEX_OPTION'))})]
                      action: [
                        (command.Simple
                          words: [{(gettextln)} {(DQ ('Index was not unstashed.'))}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:3495)
                              fd: -1
                              arg_word: {(2)}
                            )
                          ]
                        )
                      ]
                      spids: [3475 3486]
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:3502)
                  arg_word: {($ Id.VSub_DollarName '$status')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: pop_stash
      body: 
        (command.BraceGroup
          children: [
            (C {(assert_stash_ref)} {(DQ ($ Id.VSub_At '$@'))})
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(apply_stash)} {(DQ ($ Id.VSub_At '$@'))})]
                  action: [(C {(drop_stash)} {(DQ ($ Id.VSub_At '$@'))})]
                  spids: [3527 3536]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '$?')}
                      spids: [3549]
                    )
                  ]
                )
                (C {(say)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3556)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(gettext)} {(DQ ('The stash is kept in case you need it again.'))})
                            ]
                          )
                      )
                    )
                  }
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:3566)
                  arg_word: {($ Id.VSub_DollarName '$status')}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: drop_stash
      body: 
        (command.BraceGroup
          children: [
            (C {(assert_stash_ref)} {(DQ ($ Id.VSub_At '$@'))})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(git)} {(reflog)} {(delete)} {(--updateref)} {(--rewrite)} {(DQ (${ Id.VSub_Name REV))})
                (C {(say)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3614)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Dropped ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3619)
                                    ) ('{REV} (') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3621)) 
                                    ('s)')
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3633)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3637)
                                    ) ('{REV}: Could not drop stash entry')
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [
                    {(git)}
                    {(rev-parse)}
                    {(--verify)}
                    {(--quiet)}
                    {(DQ ($ Id.VSub_DollarName '$ref_stash') ('@{0}'))}
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:3662)
                      fd: -1
                      arg_word: {(/dev/null)}
                    )
                  ]
                )
                (C {(clear_stash)})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: apply_to_branch
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-n)} {(DQ ($ Id.VSub_Number '$1'))})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3694)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('No branch name specified'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:branch)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3704]
                )
              ]
            )
            (C {(shift)} {(1)})
            (C {(Id.KW_Set set)} {(--)} {(--index)} {(DQ ($ Id.VSub_At '$@'))})
            (C {(assert_stash_like)} {(DQ ($ Id.VSub_At '$@'))})
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(git)} {(checkout)} {(-b)} {($ Id.VSub_DollarName '$branch')} 
                  {($ Id.VSub_DollarName '$REV') (Id.Lit_Other '^')}
                )
                (C {(apply_stash)} {(DQ ($ Id.VSub_At '$@'))})
                (command.BraceGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$IS_STASH_REF'))})
                        (C {(drop_stash)} {(DQ ($ Id.VSub_At '$@'))})
                      ]
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PARSE_CACHE)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:--not-parsed span_id:3782))}
          spids: [3780]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:seen_non_option)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [3788]
        )
      ]
    )
    (command.ForEach
      iter_name: opt
      do_arg_iter: T
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$opt'))}
              arms: [
                (case_arm
                  pat_list: [{(-) (Id.Lit_Star '*')}]
                  spids: [3806 3808 3810 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:seen_non_option)
                              op: assign_op.Equal
                              rhs: {(t)}
                              spids: [3816]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:3818)
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:3820)
                    )
                  ]
                  spids: [3813 3814 3822 -1]
                )
              ]
            )
          ]
        )
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$seen_non_option'))})
        (C {(Id.KW_Set set)} {(DQ (save))} {(DQ ($ Id.VSub_At '$@'))})
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number '$1'))}
      arms: [
        (case_arm
          pat_list: [{(list)}]
          action: [(C {(shift)}) (C {(list_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3862 3863 3876 -1]
        )
        (case_arm
          pat_list: [{(show)}]
          action: [(C {(shift)}) (C {(show_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3878 3879 3892 -1]
        )
        (case_arm
          pat_list: [{(save)}]
          action: [(C {(shift)}) (C {(save_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3894 3895 3908 -1]
        )
        (case_arm
          pat_list: [{(apply)}]
          action: [(C {(shift)}) (C {(apply_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3910 3911 3924 -1]
        )
        (case_arm
          pat_list: [{(clear)}]
          action: [(C {(shift)}) (C {(clear_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3926 3927 3940 -1]
        )
        (case_arm
          pat_list: [{(create)}]
          action: [
            (C {(shift)})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(create_stash)} {(DQ ($ Id.VSub_Star '$*'))})
                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$w_commit'))})
              ]
            )
          ]
          spids: [3942 3943 3964 -1]
        )
        (case_arm
          pat_list: [{(store)}]
          action: [(C {(shift)}) (C {(store_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3966 3967 3980 -1]
        )
        (case_arm
          pat_list: [{(drop)}]
          action: [(C {(shift)}) (C {(drop_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3982 3983 3996 -1]
        )
        (case_arm
          pat_list: [{(pop)}]
          action: [(C {(shift)}) (C {(pop_stash)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [3998 3999 4012 -1]
        )
        (case_arm
          pat_list: [{(branch)}]
          action: [(C {(shift)}) (C {(apply_to_branch)} {(DQ ($ Id.VSub_At '$@'))})]
          spids: [4014 4015 4028 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Case
              to_match: {($ Id.VSub_Pound '$#')}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(save_stash)})
                        (C {(say)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4053)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(gettext)} 
                                        {
                                          (DQ ('(To restore them type ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 4058
                                                )
                                            ) ('git stash apply') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\"'
                                                  span_id: 4060
                                                )
                                            ) (')')
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [4041 4042 4067 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(usage)})]
                  spids: [4070 4071 -1 4077]
                )
              ]
            )
          ]
          spids: [4030 4031 4080 -1]
        )
      ]
    )
  ]
)