(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'dashless='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'dashless='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dashless='> name:dashless)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <basename>
                        more_env: []
                        words: [{<basename>} {(DQ ($ Id.VSub_Number 0))}]
                        redirects: []
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <sed>
                        more_env: []
                        words: [{<sed>} {<-e>} {(SQ <'s/-/ /'>)}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'USAGE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'USAGE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> 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'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SUBDIRECTORY_OK='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SUBDIRECTORY_OK='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SUBDIRECTORY_OK='> name:SUBDIRECTORY_OK)
          op: assign_op.Equal
          rhs: {<Yes>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OPTIONS_SPEC='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OPTIONS_SPEC='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIONS_SPEC='> name:OPTIONS_SPEC)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'START_DIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'START_DIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'START_DIR='> name:START_DIR)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <pwd>
                    more_env: []
                    words: [{<pwd>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<git-sh-setup>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <require_work_tree>
      more_env: []
      words: [{<require_work_tree>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cd_to_toplevel>
      more_env: []
      words: [{<cd_to_toplevel>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TMP='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TMP='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMP='> name:TMP)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/.git-stash.'> ($ Id.VSub_Dollar '$'))}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TMPindex='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TMPindex='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TMPindex='> name:TMPindex)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name GIT_INDEX_FILE>
                var_name: GIT_INDEX_FILE
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_Hyphen _>
                    arg_word: 
                      {
                        (DQ 
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<rev-parse>} {<--git-path>} {<index>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        )
                      }
                  )
                right: <Id.Right_DollarBrace '}'>
              ) <.stash.> ($ Id.VSub_Dollar '$')
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <trap>
      more_env: []
      words: [{<trap>} {(SQ <'rm -f "$TMP-"* "$TMPindex"'>)} {<0>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ref_stash='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ref_stash='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ref_stash='> name:ref_stash)
          op: assign_op.Equal
          rhs: {<'refs/stash'>}
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<config>} {<--get-colorbool>} {<color.interactive>}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'help_color='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'help_color='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'help_color='> name:help_color)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<config>}
                                {<--get-color>}
                                {<color.interactive.help>}
                                {(SQ <'red bold'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'reset_color='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'reset_color='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reset_color='> name:reset_color)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<config>} {<--get-color>} {(SQ )} {<reset>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
          ]
          spids: [109 120]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'help_color='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'help_color='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'help_color='> name:help_color)
              op: assign_op.Equal
              rhs: (rhs_word__Empty)
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'reset_color='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'reset_color='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reset_color='> name:reset_color)
              op: assign_op.Equal
              rhs: (rhs_word__Empty)
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShFunction
      name_tok: <no_changes>
      name: no_changes
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<diff-index>}
                    {<--quiet>}
                    {<--cached>}
                    {<HEAD>}
                    {<--ignore-submodules>}
                    {<-->}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<diff-files>} {<--quiet>} {<--ignore-submodules>}]
                  redirects: []
                  do_fork: T
                )
                (command.Subshell
                  left: <Id.Op_LParen _>
                  child: 
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName untracked))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {<-z>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <untracked_files>
                                      more_env: []
                                      words: [{<untracked_files>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  right: <Id.Right_Subshell _>
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <untracked_files>
      name: untracked_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'excl_opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'excl_opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'excl_opt='> name:excl_opt)
                  op: assign_op.Equal
                  rhs: {<--exclude-standard>}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {(DQ ($ Id.VSub_DollarName untracked))}
                    {<Id.Lit_Equals '='>}
                    {(DQ <all>)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'excl_opt='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'excl_opt='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'excl_opt='> name:excl_opt)
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<ls-files>} {<-o>} {<-z>} {($ Id.VSub_DollarName excl_opt)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <clear_stash>
      name: clear_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {($ Id.VSub_Pound '#')}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {<0>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {(DQ <'git stash clear with parameters is unimplemented'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [279 291]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'current='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'current='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'current='> name:current)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<rev-parse>}
                                          {<--verify>}
                                          {<--quiet>}
                                          {($ Id.VSub_DollarName ref_stash)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<update-ref>}
                        {<-d>}
                        {($ Id.VSub_DollarName ref_stash)}
                        {($ Id.VSub_DollarName current)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [310 326]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <create_stash>
      name: create_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'stash_msg='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'stash_msg='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_msg='> name:stash_msg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'untracked='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'untracked='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'untracked='> name:untracked)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 2))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<update-index>} {<-q>} {<--refresh>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <no_changes>
                          more_env: []
                          words: [{<no_changes>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [(command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})]
                  spids: [375 380]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'b_commit='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'b_commit='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b_commit='> name:b_commit)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [{<git>} {<rev-list>} {<--oneline>} {<-n>} {<1>} {<HEAD>} {<-->}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [396 410]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'You do not have the initial commit yet'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'branch='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'branch='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [{<git>} {<symbolic-ref>} {<-q>} {<HEAD>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'branch='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'branch='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name branch>
                                var_name: branch
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VOp1_Pound '#'>
                                    arg_word: {<refs> <Id.Lit_Slash '/'> <heads> <Id.Lit_Slash '/'>}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [451 465]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'branch='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'branch='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                      op: assign_op.Equal
                      rhs: {(SQ <'(no branch)'>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'msg='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'msg='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <printf>
                            more_env: []
                            words: [
                              {<printf>}
                              {(SQ <'%s: %s'>)}
                              {(DQ ($ Id.VSub_DollarName branch))}
                              {(DQ ($ Id.VSub_DollarName head))}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'i_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'i_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_tree='> name:i_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<write-tree>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'i_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'i_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_commit='> name:i_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <printf>
                                    more_env: []
                                    words: [
                                      {<printf>}
                                      {(SQ <'index on %s\\n'>)}
                                      {(DQ ($ Id.VSub_DollarName msg))}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [
                                      {<git>}
                                      {<commit-tree>}
                                      {($ Id.VSub_DollarName i_tree)}
                                      {<-p>}
                                      {($ Id.VSub_DollarName b_commit)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Cannot save the current index state'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName untracked))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'u_commit='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'u_commit='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u_commit='> name:u_commit)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Pipeline
                                        children: [
                                          (command.Simple
                                            blame_tok: <untracked_files>
                                            more_env: []
                                            words: [{<untracked_files>}]
                                            redirects: []
                                            do_fork: T
                                          )
                                          (command.Subshell
                                            left: <Id.Op_LParen _>
                                            child: 
                                              (command.AndOr
                                                children: [
                                                  (command.ShAssignment
                                                    left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                    pairs: [
                                                      (AssignPair
                                                        left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                        lhs: 
                                                          (sh_lhs_expr.Name
                                                            left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                            name: GIT_INDEX_FILE
                                                          )
                                                        op: assign_op.Equal
                                                        rhs: {(DQ ($ Id.VSub_DollarName TMPindex))}
                                                      )
                                                    ]
                                                    redirects: []
                                                  )
                                                  (command.Simple
                                                    blame_tok: <export>
                                                    more_env: []
                                                    words: [{<export>} {<GIT_INDEX_FILE>}]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.Simple
                                                    blame_tok: <rm>
                                                    more_env: []
                                                    words: [
                                                      {<rm>}
                                                      {<-f>}
                                                      {(DQ ($ Id.VSub_DollarName TMPindex))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<update-index>}
                                                      {<-z>}
                                                      {<--add>}
                                                      {<--remove>}
                                                      {<--stdin>}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                  (command.ShAssignment
                                                    left: <Id.Lit_VarLike 'u_tree='>
                                                    pairs: [
                                                      (AssignPair
                                                        left: <Id.Lit_VarLike 'u_tree='>
                                                        lhs: 
                                                          (sh_lhs_expr.Name
                                                            left: <Id.Lit_VarLike 'u_tree='>
                                                            name: u_tree
                                                          )
                                                        op: assign_op.Equal
                                                        rhs: 
                                                          {
                                                            (CommandSub
                                                              left_token: <Id.Left_DollarParen '$('>
                                                              child: 
                                                                (command.Simple
                                                                  blame_tok: <git>
                                                                  more_env: []
                                                                  words: [{<git>} {<write-tree>}]
                                                                  redirects: []
                                                                  do_fork: T
                                                                )
                                                              right: <Id.Eof_RParen _>
                                                            )
                                                          }
                                                      )
                                                    ]
                                                    redirects: []
                                                  )
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <printf>
                                                        more_env: []
                                                        words: [
                                                          {<printf>}
                                                          {(SQ <'untracked files on %s\\n'>)}
                                                          {(DQ ($ Id.VSub_DollarName msg))}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: []
                                                        words: [
                                                          {<git>}
                                                          {<commit-tree>}
                                                          {($ Id.VSub_DollarName u_tree)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                  (command.Simple
                                                    blame_tok: <rm>
                                                    more_env: []
                                                    words: [
                                                      {<rm>}
                                                      {<-f>}
                                                      {(DQ ($ Id.VSub_DollarName TMPindex))}
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                ]
                                                ops: [
                                                  <Id.Op_DAmp _>
                                                  <Id.Op_DAmp _>
                                                  <Id.Op_DAmp _>
                                                  <Id.Op_DAmp _>
                                                  <Id.Op_DAmp _>
                                                  <Id.Op_DAmp _>
                                                ]
                                              )
                                            right: <Id.Right_Subshell _>
                                            redirects: []
                                          )
                                        ]
                                        ops: [<Id.Op_Pipe _>]
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [{<gettext>} {(DQ <'Cannot save the untracked files'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'untracked_commit_option='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'untracked_commit_option='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'untracked_commit_option='>
                                  name: untracked_commit_option
                                )
                              op: assign_op.Equal
                              rhs: {(DQ <'-p '> ($ Id.VSub_DollarName u_commit))}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  spids: [567 578]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'untracked_commit_option='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'untracked_commit_option='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'untracked_commit_option='>
                          name: untracked_commit_option
                        )
                      op: assign_op.Equal
                      rhs: (rhs_word__Empty)
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName patch_mode))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'w_tree='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'w_tree='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_tree='> name:w_tree)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Subshell
                                        left: <Id.Op_LParen _>
                                        child: 
                                          (command.AndOr
                                            children: [
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<read-tree>}
                                                  {<--index-output> <Id.Lit_Equals '='> 
                                                    (DQ ($ Id.VSub_DollarName TMPindex))
                                                  }
                                                  {<-m>}
                                                  {($ Id.VSub_DollarName i_tree)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.ShAssignment
                                                left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                pairs: [
                                                  (AssignPair
                                                    left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                    lhs: 
                                                      (sh_lhs_expr.Name
                                                        left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                                        name: GIT_INDEX_FILE
                                                      )
                                                    op: assign_op.Equal
                                                    rhs: {(DQ ($ Id.VSub_DollarName TMPindex))}
                                                  )
                                                ]
                                                redirects: []
                                              )
                                              (command.Simple
                                                blame_tok: <export>
                                                more_env: []
                                                words: [{<export>} {<GIT_INDEX_FILE>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<diff>}
                                                  {<--name-only>}
                                                  {<-z>}
                                                  {<HEAD>}
                                                  {<-->}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '>'>
                                                    loc: (redir_loc.Fd fd:1)
                                                    arg: 
                                                      {(DQ ($ Id.VSub_DollarName TMP) <-stagenames>)}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<update-index>}
                                                  {<-z>}
                                                  {<--add>}
                                                  {<--remove>}
                                                  {<--stdin>}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Less '<'>
                                                    loc: (redir_loc.Fd fd:0)
                                                    arg: 
                                                      {(DQ ($ Id.VSub_DollarName TMP) <-stagenames>)}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [{<git>} {<write-tree>}]
                                                redirects: []
                                                do_fork: T
                                              )
                                              (command.Simple
                                                blame_tok: <rm>
                                                more_env: []
                                                words: [
                                                  {<rm>}
                                                  {<-f>}
                                                  {(DQ ($ Id.VSub_DollarName TMPindex))}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            ]
                                            ops: [
                                              <Id.Op_DAmp _>
                                              <Id.Op_DAmp _>
                                              <Id.Op_DAmp _>
                                              <Id.Op_DAmp _>
                                              <Id.Op_DAmp _>
                                              <Id.Op_DAmp _>
                                            ]
                                          )
                                        right: <Id.Right_Subshell _>
                                        redirects: []
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {(DQ <'Cannot save the current worktree state'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [719 730]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName TMP) <-index>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: [
                        (EnvPair
                          left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                          name: GIT_INDEX_FILE
                          val: {(DQ ($ Id.VSub_DollarName TMP) <-index>)}
                        )
                      ]
                      words: [{<git>} {<read-tree>} {<HEAD>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: [
                        (EnvPair
                          left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                          name: GIT_INDEX_FILE
                          val: {(DQ ($ Id.VSub_DollarName TMP) <-index>)}
                        )
                      ]
                      words: [{<git>} {<add--interactive>} {<--patch> <Id.Lit_Equals '='> <stash>} {<-->}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'w_tree='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'w_tree='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_tree='> name:w_tree)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: [
                                      (EnvPair
                                        left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                                        name: GIT_INDEX_FILE
                                        val: {(DQ ($ Id.VSub_DollarName TMP) <-index>)}
                                      )
                                    ]
                                    words: [{<git>} {<write-tree>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'Cannot save the current worktree state'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<diff-tree>} {<-p>} {<HEAD>} {($ Id.VSub_DollarName w_tree)} {<-->}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName TMP) <-patch>)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName TMP) <-patch>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'No changes selected'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                )
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName TMP) <-index>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {(DQ <'Cannot remove temporary index (can\'t happen)'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName stash_msg))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'stash_msg='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'stash_msg='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_msg='> name:stash_msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <printf>
                                    more_env: []
                                    words: [
                                      {<printf>}
                                      {(SQ <'WIP on %s'>)}
                                      {(DQ ($ Id.VSub_DollarName msg))}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1028 1039]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'stash_msg='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'stash_msg='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_msg='> name:stash_msg)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <printf>
                                more_env: []
                                words: [
                                  {<printf>}
                                  {(SQ <'On %s: %s'>)}
                                  {(DQ ($ Id.VSub_DollarName branch))}
                                  {(DQ ($ Id.VSub_DollarName stash_msg))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'w_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'w_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_commit='> name:w_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    blame_tok: <printf>
                                    more_env: []
                                    words: [
                                      {<printf>}
                                      {(SQ <'%s\\n'>)}
                                      {(DQ ($ Id.VSub_DollarName stash_msg))}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [
                                      {<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)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                ]
                                ops: [<Id.Op_Pipe _>]
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Cannot record working tree state'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <store_stash>
      name: store_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {($ Id.VSub_Pound '#')}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<0>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-m>
                          pattern: (pat.Words words:[{<-m>} {<--message>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'stash_msg='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'stash_msg='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'stash_msg='>
                                      name: stash_msg
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'quiet='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'quiet='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'quiet='> name:quiet)
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {($ Id.VSub_Pound '#')} {<Id.Lit_Equals '='>} {<1>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) ($ Id.VSub_DollarName dashless) <' store'> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\"'>
                                      ch: '"'
                                    ) <' requires one <commit> argument'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'w_commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'w_commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_commit='> name:w_commit)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName stash_msg))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'stash_msg='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'stash_msg='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_msg='> name:stash_msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'Created via '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\"'>
                                  ch: '"'
                                ) <'git stash store'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <.>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1247 1258]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<update-ref>}
                {<--create-reflog>}
                {<-m>}
                {(DQ ($ Id.VSub_DollarName stash_msg))}
                {($ Id.VSub_DollarName ref_stash)}
                {($ Id.VSub_DollarName w_commit)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ret='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ret='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {($ Id.VSub_DollarName ret)}
                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                    {<0>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName quiet))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Cannot update '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'ref_stash with '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <w_commit>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <save_stash>
      name: save_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'keep_index='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'keep_index='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep_index='> name:keep_index)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'patch_mode='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'patch_mode='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'patch_mode='> name:patch_mode)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'untracked='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'untracked='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'untracked='> name:untracked)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {($ Id.VSub_Pound '#')}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<0>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-k>
                          pattern: (pat.Words words:[{<-k>} {<--keep-index>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'keep_index='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'keep_index='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'keep_index='>
                                      name: keep_index
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--no-keep-index>
                          pattern: (pat.Words words:[{<--no-keep-index>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'keep_index='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'keep_index='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'keep_index='>
                                      name: keep_index
                                    )
                                  op: assign_op.Equal
                                  rhs: {<n>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-p>
                          pattern: (pat.Words words:[{<-p>} {<--patch>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'patch_mode='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'patch_mode='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'patch_mode='>
                                      name: patch_mode
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName keep_index))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'keep_index='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'keep_index='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'keep_index='>
                                          name: keep_index
                                        )
                                      op: assign_op.Equal
                                      rhs: {<t>}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-u>
                          pattern: (pat.Words words:[{<-u>} {<--include-untracked>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'untracked='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'untracked='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'untracked='>
                                      name: untracked
                                    )
                                  op: assign_op.Equal
                                  rhs: {<untracked>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-a>
                          pattern: (pat.Words words:[{<-a>} {<--all>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'untracked='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'untracked='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'untracked='>
                                      name: untracked
                                    )
                                  op: assign_op.Equal
                                  rhs: {<all>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--help>
                          pattern: (pat.Words words:[{<--help>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <show_help>
                              more_env: []
                              words: [{<show_help>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <-->
                          pattern: (pat.Words words:[{<-->}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <shift>
                              more_env: []
                              words: [{<shift>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Break break>
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'option='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'option='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'option='> name:option)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_Number 1))}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <eval_gettextln>
                              more_env: []
                              words: [
                                {<eval_gettextln>}
                                {
                                  (DQ <'error: unknown option for \'stash save\': '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'option\n'> <'       To provide a message, use git stash save -- \''> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'option\''>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <usage>
                              more_env: []
                              words: [{<usage>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Break break>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName patch_mode))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName untracked))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {
                                      (DQ 
                                        <
'Can\'t use --patch and --include-untracked or --all at the same time'
                                        >
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1589 1610]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'stash_msg='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'stash_msg='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_msg='> name:stash_msg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '*'))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<update-index>} {<-q>} {<--refresh>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <no_changes>
                          more_env: []
                          words: [{<no_changes>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <say>
                      more_env: []
                      words: [
                        {<say>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'No local changes to save'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [1646 1651]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<reflog>} {<exists>} {($ Id.VSub_DollarName ref_stash)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <clear_stash>
                  more_env: []
                  words: [{<clear_stash>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Cannot initialize stash'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <create_stash>
              more_env: []
              words: [
                {<create_stash>}
                {(DQ ($ Id.VSub_DollarName stash_msg))}
                {($ Id.VSub_DollarName untracked)}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <store_stash>
                  more_env: []
                  words: [
                    {<store_stash>}
                    {<-m>}
                    {(DQ ($ Id.VSub_DollarName stash_msg))}
                    {<-q>}
                    {($ Id.VSub_DollarName w_commit)}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Cannot save the current status'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [
                {<say>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (DQ <'Saved working directory and index state '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <stash_msg>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName patch_mode))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<reset>}
                        {<--hard>}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name GIT_QUIET>
                            var_name: GIT_QUIET
                            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonPlus _> arg_word:{<-q>})
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {(DQ ($ Id.VSub_DollarName untracked))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <all>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                                  name: CLEAN_X_OPTION
                                )
                              op: assign_op.Equal
                              rhs: {<-x>}
                            )
                          ]
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'CLEAN_X_OPTION='>
                                  name: CLEAN_X_OPTION
                                )
                              op: assign_op.Equal
                              rhs: (rhs_word__Empty)
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName untracked))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<clean>}
                                {<--force>}
                                {<--quiet>}
                                {<-d>}
                                {($ Id.VSub_DollarName CLEAN_X_OPTION)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1806 1817]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {(DQ ($ Id.VSub_DollarName keep_index))}
                                        {<Id.Lit_Equals '='>}
                                        {(DQ <t>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName i_tree))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<read-tree>}
                                {<--reset>}
                                {<-u>}
                                {($ Id.VSub_DollarName i_tree)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [1837 1862]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1757 1768]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<apply>} {<-R>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName TMP) <-patch>)}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'Cannot remove worktree changes'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName keep_index))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <t>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<reset>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [1912 1928]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <have_stash>
      name: have_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<rev-parse>} {<--verify>} {<--quiet>} {($ Id.VSub_DollarName ref_stash)}]
              redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <list_stash>
      name: list_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <have_stash>
                  more_env: []
                  words: [{<have_stash>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<log>}
                {<--format> <Id.Lit_Equals '='> (DQ <'%gd: %gs'>)}
                {<-g>}
                {<--first-parent>}
                {<-m>}
                {(DQ ($ Id.VSub_At '@'))}
                {($ Id.VSub_DollarName ref_stash)}
                {<-->}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <show_stash>
      name: show_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ALLOW_UNKNOWN_FLAGS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ALLOW_UNKNOWN_FLAGS='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'ALLOW_UNKNOWN_FLAGS='>
                      name: ALLOW_UNKNOWN_FLAGS
                    )
                  op: assign_op.Equal
                  rhs: {<t>}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <assert_stash_like>
              more_env: []
              words: [{<assert_stash_like>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName FLAGS))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <git>
                                                  more_env: []
                                                  words: [
                                                    {<git>}
                                                    {<config>}
                                                    {<--bool>}
                                                    {<stash.showStat>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {<true>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _>]
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <true>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FLAGS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FLAGS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS='> name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: {<--stat>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2046 2075]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.AndOr
                                              children: [
                                                (command.Simple
                                                  blame_tok: <git>
                                                  more_env: []
                                                  words: [
                                                    {<git>}
                                                    {<config>}
                                                    {<--bool>}
                                                    {<stash.showPatch>}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Simple
                                                  blame_tok: <echo>
                                                  more_env: []
                                                  words: [{<echo>} {<false>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                              ops: [<Id.Op_DPipe _>]
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <true>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FLAGS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FLAGS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS='> name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {(${ Id.VSub_Name FLAGS) 
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name FLAGS>
                                        var_name: FLAGS
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VTest_ColonPlus _>
                                            arg_word: {<' '>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      ) <-p>
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2086 2115]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName FLAGS))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          spids: [2134 2145]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [2032 2043]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<diff>}
                {(${ Id.VSub_Name FLAGS)}
                {($ Id.VSub_DollarName b_commit)}
                {($ Id.VSub_DollarName w_commit)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <show_help>
      name: show_help
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <exec>
              more_env: []
              words: [{<exec>} {<git>} {<help>} {<stash>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <parse_flags_and_rev>
      name: parse_flags_and_rev
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {(DQ ($ Id.VSub_DollarName PARSE_CACHE))}
                    {<Id.Lit_Equals '='>}
                    {(DQ ($ Id.VSub_Star '*'))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'PARSE_CACHE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'PARSE_CACHE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PARSE_CACHE='> name:PARSE_CACHE)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Star '*'))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IS_STASH_LIKE='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IS_STASH_LIKE='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IS_STASH_LIKE='> name:IS_STASH_LIKE)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'IS_STASH_REF='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'IS_STASH_REF='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IS_STASH_REF='> name:IS_STASH_REF)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'INDEX_OPTION='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'INDEX_OPTION='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INDEX_OPTION='> name:INDEX_OPTION)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 's='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 's='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'w_commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'w_commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_commit='> name:w_commit)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'b_commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'b_commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b_commit='> name:b_commit)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'i_commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'i_commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_commit='> name:i_commit)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'u_commit='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'u_commit='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u_commit='> name:u_commit)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'w_tree='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'w_tree='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_tree='> name:w_tree)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'b_tree='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'b_tree='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b_tree='> name:b_tree)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'i_tree='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'i_tree='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_tree='> name:i_tree)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'u_tree='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'u_tree='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u_tree='> name:u_tree)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'REV='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'REV='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REV='> name:REV)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-parse>}
                                  {<--no-flags>}
                                  {<--symbolic>}
                                  {<--sq>}
                                  {(DQ ($ Id.VSub_At '@'))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'FLAGS='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'FLAGS='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS='> name:FLAGS)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [opt]
              iterable: (for_iter__Args)
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <-q>
                          pattern: (pat.Words words:[{<-q>} {<--quiet>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'GIT_QUIET='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'GIT_QUIET='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'GIT_QUIET='>
                                      name: GIT_QUIET
                                    )
                                  op: assign_op.Equal
                                  rhs: {<-t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--index>
                          pattern: (pat.Words words:[{<--index>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'INDEX_OPTION='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'INDEX_OPTION='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'INDEX_OPTION='>
                                      name: INDEX_OPTION
                                    )
                                  op: assign_op.Equal
                                  rhs: {<--index>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <--help>
                          pattern: (pat.Words words:[{<--help>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.Simple
                              blame_tok: <show_help>
                              more_env: []
                              words: [{<show_help>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <->
                          pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_DollarName ALLOW_UNKNOWN_FLAGS))}
                                    {<Id.Lit_Equals '='>}
                                    {<t>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <die>
                                  more_env: []
                                  words: [
                                    {<die>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval_gettext>
                                              more_env: []
                                              words: [
                                                {<eval_gettext>}
                                                {
                                                  (DQ <'unknown option: '> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <opt>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'FLAGS='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'FLAGS='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FLAGS='> name:FLAGS)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ (${ Id.VSub_Name FLAGS) 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name FLAGS>
                                          var_name: FLAGS
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonPlus _>
                                              arg_word: {<' '>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        ) ($ Id.VSub_DollarName opt)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [{<eval>} {<set>} {<-->} {($ Id.VSub_DollarName REV)}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <have_stash>
                          more_env: []
                          words: [{<have_stash>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [{<gettext>} {(DQ <'No stash found.'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <set>
                      more_env: []
                      words: [
                        {<set>}
                        {<-->}
                        {(${ Id.VSub_Name ref_stash) <Id.Lit_At '@'> <Id.Lit_LBrace '{'> <0> 
                          <Id.Lit_RBrace '}'>
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <1>
                  pattern: (pat.Words words:[{<1>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Too many revisions specified: '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <REV>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'REV='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'REV='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'REV='> name:REV)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-parse>}
                                  {<--symbolic>}
                                  {<--verify>}
                                  {<--quiet>}
                                  {(DQ ($ Id.VSub_Number 1))}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'reference='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'reference='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'reference='> name:reference)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'reference is not a valid reference'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'i_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'i_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_commit='> name:i_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-parse>}
                                  {<--verify>}
                                  {<--quiet>}
                                  {(DQ ($ Id.VSub_DollarName REV) <'^2'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <set>
                  more_env: []
                  words: [
                    {<set>}
                    {<-->}
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            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
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 's='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 's='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 's='> name:s)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'w_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'w_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_commit='> name:w_commit)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'b_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'b_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b_commit='> name:b_commit)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 2)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'w_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'w_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'w_tree='> name:w_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 3)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'b_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'b_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'b_tree='> name:b_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 4)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'i_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'i_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i_tree='> name:i_tree)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 5)}
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'IS_STASH_LIKE='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'IS_STASH_LIKE='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'IS_STASH_LIKE='>
                          name: IS_STASH_LIKE
                        )
                      op: assign_op.Equal
                      rhs: {<t>}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {(DQ ($ Id.VSub_DollarName ref_stash))}
                    {<Id.Lit_Equals '='>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<rev-parse>}
                                {<--symbolic-full-name>}
                                {
                                  (DQ 
                                    (BracedVarSub
                                      left: <Id.Left_DollarBrace '${'>
                                      token: <Id.VSub_Name REV>
                                      var_name: REV
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op: <Id.VOp1_Percent '%'>
                                          arg_word: {<Id.Lit_Other '@'> <Id.Lit_Other '*'>}
                                        )
                                      right: <Id.Right_DollarBrace '}'>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'IS_STASH_REF='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'IS_STASH_REF='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'IS_STASH_REF='> name:IS_STASH_REF)
                      op: assign_op.Equal
                      rhs: {<t>}
                    )
                  ]
                  redirects: []
                )
              ]
              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 _>
              ]
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'u_commit='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'u_commit='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u_commit='> name:u_commit)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-parse>}
                                  {<--verify>}
                                  {<--quiet>}
                                  {(DQ ($ Id.VSub_DollarName REV) <'^3'>)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'u_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'u_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'u_tree='> name:u_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<rev-parse>} {(DQ ($ Id.VSub_DollarName REV) <'^3:'>)}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <is_stash_like>
      name: is_stash_like
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <parse_flags_and_rev>
              more_env: []
              words: [{<parse_flags_and_rev>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName IS_STASH_LIKE))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <assert_stash_like>
      name: assert_stash_like
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <is_stash_like>
                  more_env: []
                  words: [{<is_stash_like>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'args='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'args='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Star '*'))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'\''> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'args\' is not a stash-like commit'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <is_stash_ref>
      name: is_stash_ref
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <is_stash_like>
                  more_env: []
                  words: [{<is_stash_like>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName IS_STASH_REF))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <assert_stash_ref>
      name: assert_stash_ref
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <is_stash_ref>
                  more_env: []
                  words: [{<is_stash_ref>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'args='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'args='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Star '*'))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'\''> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'args\' is not a stash reference'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <apply_stash>
      name: apply_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <assert_stash_like>
              more_env: []
              words: [{<assert_stash_like>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<update-index>} {<-q>} {<--refresh>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'unable to refresh index'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'c_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'c_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'c_tree='> name:c_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<write-tree>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [
                                {<gettext>}
                                {(DQ <'Cannot apply a stash in the middle of a merge'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'unstashed_index_tree='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'unstashed_index_tree='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'unstashed_index_tree='>
                      name: unstashed_index_tree
                    )
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName INDEX_OPTION))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName b_tree))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ ($ Id.VSub_DollarName i_tree))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName c_tree))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ ($ Id.VSub_DollarName i_tree))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<diff-tree>}
                            {<--binary>}
                            {($ Id.VSub_DollarName s) <Id.Lit_Other '^'> <2> <Id.Lit_Other '^'> <..> 
                              ($ Id.VSub_DollarName s) <Id.Lit_Other '^'> <2>
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<apply>} {<--cached>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {(DQ <'Conflicts in index. Try without --index.'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'unstashed_index_tree='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'unstashed_index_tree='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'unstashed_index_tree='>
                                  name: unstashed_index_tree
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [{<git>} {<write-tree>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [{<gettext>} {(DQ <'Could not save index tree'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<reset>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3034 3076]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName u_tree))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git-read-tree>
                          more_env: [
                            (EnvPair
                              left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ Id.VSub_DollarName TMPindex))}
                            )
                          ]
                          words: [{<git-read-tree>} {(DQ ($ Id.VSub_DollarName u_tree))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: [
                            (EnvPair
                              left: <Id.Lit_VarLike 'GIT_INDEX_FILE='>
                              name: GIT_INDEX_FILE
                              val: {(DQ ($ Id.VSub_DollarName TMPindex))}
                            )
                          ]
                          words: [{<git>} {<checkout-index>} {<--all>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <rm>
                          more_env: []
                          words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName TMPindex))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {(DQ <'Could not restore untracked files from stash'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                  ]
                  spids: [3159 3170]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<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'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                                  name: GIT_MERGE_VERBOSITY
                                )
                              op: assign_op.Equal
                              rhs: {<0>}
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <export>
                          more_env: []
                          words: [{<export>} {<GIT_MERGE_VERBOSITY>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [3254 3265]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<merge-recursive>}
                            {($ Id.VSub_DollarName b_tree)}
                            {<-->}
                            {($ Id.VSub_DollarName c_tree)}
                            {($ Id.VSub_DollarName w_tree)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {<-n>}
                                    {(DQ ($ Id.VSub_DollarName unstashed_index_tree))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<read-tree>}
                                {(DQ ($ Id.VSub_DollarName unstashed_index_tree))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [3303 3314]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.AndOr
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'a='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'a='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'a='> name:a)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName TMP) <-added>)}
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<diff-index>}
                                {<--cached>}
                                {<--name-only>}
                                {<--diff-filter> <Id.Lit_Equals '='> <A>}
                                {($ Id.VSub_DollarName c_tree)}
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName a))}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<read-tree>} {<--reset>} {($ Id.VSub_DollarName c_tree)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<update-index>} {<--add>} {<--stdin>}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName a))}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <die>
                              more_env: []
                              words: [
                                {<die>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [{<gettext>} {(DQ <'Cannot unstage modified files'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
                        )
                        (command.Simple
                          blame_tok: <rm>
                          more_env: []
                          words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName a))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'squelch='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'squelch='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'squelch='> name:squelch)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'squelch='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'squelch='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'squelch='>
                                      name: squelch
                                    )
                                  op: assign_op.Equal
                                  rhs: {(SQ <'>/dev/null 2>&1'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [3415 3426]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Subshell
                          left: <Id.Op_LParen _>
                          child: 
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <cd>
                                  more_env: []
                                  words: [{<cd>} {(DQ ($ Id.VSub_DollarName START_DIR))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <eval>
                                  more_env: []
                                  words: [{<eval>} {(DQ <'git status '> ($ Id.VSub_DollarName squelch))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          right: <Id.Right_Subshell _>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <Id.Lit_Colon ':'>
                          more_env: []
                          words: [{<Id.Lit_Colon ':'>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [3281 3296]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'status='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'status='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<rerere>}]
                  redirects: []
                  do_fork: T
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName INDEX_OPTION))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <gettextln>
                          more_env: []
                          words: [{<gettextln>} {(DQ <'Index was not unstashed.'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      spids: [3476 3487]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_DollarName status)}
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <pop_stash>
      name: pop_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <assert_stash_ref>
              more_env: []
              words: [{<assert_stash_ref>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <apply_stash>
                          more_env: []
                          words: [{<apply_stash>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <drop_stash>
                      more_env: []
                      words: [{<drop_stash>} {(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3528 3537]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'status='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'status='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'status='> name:status)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <say>
                  more_env: []
                  words: [
                    {<say>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [
                                {<gettext>}
                                {(DQ <'The stash is kept in case you need it again.'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_DollarName status)}
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <drop_stash>
      name: drop_stash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <assert_stash_ref>
              more_env: []
              words: [{<assert_stash_ref>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<reflog>}
                    {<delete>}
                    {<--updateref>}
                    {<--rewrite>}
                    {(DQ (${ Id.VSub_Name REV))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <say>
                  more_env: []
                  words: [
                    {<say>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Dropped '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'{REV} ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'s)'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'{REV}: Could not drop stash entry'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<rev-parse>}
                    {<--verify>}
                    {<--quiet>}
                    {(DQ ($ Id.VSub_DollarName ref_stash) <'@{0}'>)}
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <clear_stash>
                  more_env: []
                  words: [{<clear_stash>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <apply_to_branch>
      name: apply_to_branch
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'No branch name specified'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'branch='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'branch='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch='> name:branch)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>} {<1>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <set>
              more_env: []
              words: [{<set>} {<-->} {<--index>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <assert_stash_like>
              more_env: []
              words: [{<assert_stash_like>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<checkout>}
                    {<-b>}
                    {($ Id.VSub_DollarName branch)}
                    {($ Id.VSub_DollarName REV) <Id.Lit_Other '^'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <apply_stash>
                  more_env: []
                  words: [{<apply_stash>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName IS_STASH_REF))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <drop_stash>
                          more_env: []
                          words: [{<drop_stash>} {(DQ ($ Id.VSub_At '@'))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PARSE_CACHE='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PARSE_CACHE='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PARSE_CACHE='> name:PARSE_CACHE)
          op: assign_op.Equal
          rhs: {(SQ <--not-parsed>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'seen_non_option='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'seen_non_option='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'seen_non_option='> name:seen_non_option)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [opt]
      iterable: (for_iter__Args)
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName opt))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <->
                  pattern: (pat.Words words:[{<-> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'seen_non_option='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'seen_non_option='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'seen_non_option='>
                                  name: seen_non_option
                                )
                              op: assign_op.Equal
                              rhs: {<t>}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName seen_non_option))}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <set>
          more_env: []
          words: [{<set>} {(DQ <save>)} {(DQ ($ Id.VSub_At '@'))}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Number 1))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <list>
          pattern: (pat.Words words:[{<list>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <list_stash>
              more_env: []
              words: [{<list_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <show>
          pattern: (pat.Words words:[{<show>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <show_stash>
              more_env: []
              words: [{<show_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <save>
          pattern: (pat.Words words:[{<save>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <save_stash>
              more_env: []
              words: [{<save_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <apply>
          pattern: (pat.Words words:[{<apply>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <apply_stash>
              more_env: []
              words: [{<apply_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <clear>
          pattern: (pat.Words words:[{<clear>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <clear_stash>
              more_env: []
              words: [{<clear_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <create>
          pattern: (pat.Words words:[{<create>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <create_stash>
                  more_env: []
                  words: [{<create_stash>} {(DQ ($ Id.VSub_Star '*'))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName w_commit))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <store>
          pattern: (pat.Words words:[{<store>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <store_stash>
              more_env: []
              words: [{<store_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <drop>
          pattern: (pat.Words words:[{<drop>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <drop_stash>
              more_env: []
              words: [{<drop_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <pop>
          pattern: (pat.Words words:[{<pop>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <pop_stash>
              more_env: []
              words: [{<pop_stash>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <branch>
          pattern: (pat.Words words:[{<branch>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <shift>
              more_env: []
              words: [{<shift>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <apply_to_branch>
              more_env: []
              words: [{<apply_to_branch>} {(DQ ($ Id.VSub_At '@'))}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <save_stash>
                          more_env: []
                          words: [{<save_stash>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <say>
                          more_env: []
                          words: [
                            {<say>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {
                                          (DQ <'(To restore them type '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\"'>
                                              ch: '"'
                                            ) <'git stash apply'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <')'>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <usage>
                      more_env: []
                      words: [{<usage>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
  ]
)