(command.CommandList
  children: [
    (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_KEEPDASHDASH='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OPTIONS_KEEPDASHDASH='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'OPTIONS_KEEPDASHDASH='>
              name: OPTIONS_KEEPDASHDASH
            )
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'OPTIONS_STUCKLONG='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'OPTIONS_STUCKLONG='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIONS_STUCKLONG='> name:OPTIONS_STUCKLONG)
          op: assign_op.Equal
          rhs: {<t>}
        )
      ]
      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: 
            {
              (DQ 
                <
'git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] [<upstream>] [<branch>]\n'
                > <'git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]\n'> 
                <'git-rebase --continue | --abort | --skip | --edit-todo\n'> <'--\n'> <' Available options are\n'> 
                <'v,verbose!         display a diffstat of what changed upstream\n'> <'q,quiet!           be quiet. implies --no-stat\n'> 
                <'autostash          automatically stash/stash pop before and after\n'> <'fork-point         use \'merge-base --fork-point\' to refine upstream\n'> 
                <'onto=!             rebase onto given branch instead of upstream\n'> <'p,preserve-merges! try to recreate merges instead of ignoring them\n'> 
                <'s,strategy=!       use the given merge strategy\n'> <'no-ff!             cherry-pick all commits, even if unchanged\n'> 
                <'m,merge!           use merging strategies to rebase\n'> <'i,interactive!     let the user edit the list of commits to rebase\n'> 
                <'x,exec=!           add exec lines after each commit of the editable list\n'> <'k,keep-empty\t   preserve empty commits during rebase\n'> 
                <'f,force-rebase!    force rebase even if branch is up to date\n'> <'X,strategy-option=! pass the argument through to the merge strategy\n'> 
                <'stat!              display a diffstat of what changed upstream\n'> <'n,no-stat!         do not show diffstat of what changed upstream\n'> 
                <'verify             allow pre-rebase hook to run\n'> <'rerere-autoupdate  allow rerere to update index with resolved conflicts\n'> 
                <'root!              rebase all reachable commits up to the root(s)\n'> <'autosquash         move commits that begin with squash!/fixup! under -i\n'> 
                <'committer-date-is-author-date! passed to \'git am\'\n'> <'ignore-date!       passed to \'git am\'\n'> <'whitespace=!       passed to \'git apply\'\n'> 
                <'ignore-whitespace! passed to \'git apply\'\n'> <'C=!                passed to \'git apply\'\n'> <'S,gpg-sign?        GPG-sign commits\n'> 
                <' Actions:\n'> <'continue!          continue\n'> <'abort!             abort and check out the original branch\n'> 
                <'skip!              skip current patch and continue\n'> <'edit-todo!         edit the todo list during an interactive rebase\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<git-sh-setup>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <set_reflog_action>
      more_env: []
      words: [{<set_reflog_action>} {<rebase>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <require_work_tree_exists>
      more_env: []
      words: [{<require_work_tree_exists>}]
      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 'LF='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LF='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LF='> name:LF)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
              name: ok_to_skip_pre_rebase
            )
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'resolvemsg='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'resolvemsg='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'resolvemsg='> name:resolvemsg)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'\n'> 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <gettext>
                      more_env: []
                      words: [
                        {<gettext>}
                        {
                          (SQ <'When you have resolved this problem, run "git rebase --continue".\n'> 
                            <'If you prefer to skip this patch, run "git rebase --skip" instead.\n'> <'To check out the original branch and stop rebasing, run "git rebase --abort".'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                ) <'\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<onto>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <unset>
      more_env: []
      words: [{<unset>} {<restrict_revision>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'cmd='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'cmd='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'strategy='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'strategy='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'strategy_opts='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'strategy_opts='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy_opts='> name:strategy_opts)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'do_merge='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'do_merge='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'do_merge='> name:do_merge)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'merge_dir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'merge_dir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'merge_dir='> name:merge_dir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/rebase-merge'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'apply_dir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'apply_dir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'apply_dir='> name:apply_dir)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/rebase-apply'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'verbose='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'verbose='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'diffstat='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'diffstat='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [
            {<test>}
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<config>} {<--bool>} {<rebase.stat>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
            {<Id.Lit_Equals '='>}
            {<true>}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'diffstat='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'diffstat='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
              op: assign_op.Equal
              rhs: {<t>}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'autostash='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'autostash='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autostash='> name:autostash)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<config>} {<--bool>} {<rebase.autostash>}]
                          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 _>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'fork_point='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'fork_point='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fork_point='> name:fork_point)
          op: assign_op.Equal
          rhs: {<auto>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'git_am_opt='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'git_am_opt='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'rebase_root='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'rebase_root='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rebase_root='> name:rebase_root)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'force_rebase='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'force_rebase='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force_rebase='> name:force_rebase)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
              name: allow_rerere_autoupdate
            )
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'in_progress='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'in_progress='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in_progress='> name:in_progress)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'type='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'type='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'state_dir='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'state_dir='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'action='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'action='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'preserve_merges='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'preserve_merges='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'preserve_merges='> name:preserve_merges)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'autosquash='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'autosquash='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autosquash='> name:autosquash)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'keep_empty='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'keep_empty='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep_empty='> name:keep_empty)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [
            {<test>}
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<config>} {<--bool>} {<rebase.autosquash>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
            {<Id.Lit_Equals '='>}
            {(DQ <true>)}
          ]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'autosquash='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'autosquash='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autosquash='> name:autosquash)
              op: assign_op.Equal
              rhs: {<t>}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: 
        (case_arg.Word
          w: 
            {
              (DQ 
                (CommandSub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<config>} {<--bool>} {<commit.gpgsign>}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
        )
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <true>
          pattern: (pat.Words words:[{<true>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'gpg_sign_opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'gpg_sign_opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gpg_sign_opt='> name:gpg_sign_opt)
                  op: assign_op.Equal
                  rhs: {<-S>}
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'gpg_sign_opt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'gpg_sign_opt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gpg_sign_opt='> name:gpg_sign_opt)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShFunction
      name_tok: <read_basic_state>
      name: read_basic_state
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir) <'/head-name'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir) <'/onto'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'head_name='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'head_name='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head_name='> name:head_name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/head-name'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'onto='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'onto='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto='> name:onto)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/onto'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  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>}
                                {<-f>}
                                {(DQ ($ Id.VSub_DollarName state_dir)) <'/orig-head'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'orig_head='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'orig_head='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'orig_head='>
                                  name: orig_head
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <cat>
                                        more_env: []
                                        words: [
                                          {<cat>}
                                          {(DQ ($ Id.VSub_DollarName state_dir)) <'/orig-head'>}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [337 349]
                    )
                  ]
                  else_kw: <Id.KW_Else else>
                  else_action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'orig_head='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'orig_head='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig_head='> name:orig_head)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/head'>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (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: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/quiet'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/verbose'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'verbose='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'verbose='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
                      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 _>
              ]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'strategy='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'strategy='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <cat>
                                  more_env: []
                                  words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy'>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy_opts'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'strategy_opts='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'strategy_opts='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'strategy_opts='>
                          name: strategy_opts
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <cat>
                                  more_env: []
                                  words: [
                                    {<cat>}
                                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy_opts'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [
                    {<test>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/allow_rerere_autoupdate'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                          name: allow_rerere_autoupdate
                        )
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <cat>
                                  more_env: []
                                  words: [
                                    {<cat>}
                                    {(DQ ($ Id.VSub_DollarName state_dir)) 
                                      <'/allow_rerere_autoupdate'>
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/gpg_sign_opt'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'gpg_sign_opt='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'gpg_sign_opt='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gpg_sign_opt='> name:gpg_sign_opt)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <cat>
                                  more_env: []
                                  words: [
                                    {<cat>}
                                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/gpg_sign_opt'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <write_basic_state>
      name: write_basic_state
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName head_name))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/head-name'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName onto))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/onto'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName orig_head))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/orig-head'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/quiet'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<t>} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName verbose))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <Id.Lit_Colon ':'>
                  more_env: []
                  words: [{<Id.Lit_Colon ':'>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/verbose'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName strategy))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName strategy))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName strategy_opts))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName strategy_opts))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/strategy_opts'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName allow_rerere_autoupdate))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName allow_rerere_autoupdate))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/allow_rerere_autoupdate'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/gpg_sign_opt'>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <output>
      name: output
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName verbose))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ )}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'output='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'output='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'output='> name:output)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <Id.Left_DoubleQuote '"'>
                                    more_env: []
                                    words: [{(DQ ($ Id.VSub_At '@'))}]
                                    redirects: [
                                      (Redir
                                        op: <Id.Redir_GreatAnd '2>&'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<1>}
                                      )
                                    ]
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (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.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {($ Id.VSub_DollarName status)}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {<0>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                            {(DQ ($ Id.VSub_DollarName output))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_DollarName status)}
                    )
                  ]
                  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: <Id.Left_DoubleQuote '"'>
                      more_env: []
                      words: [{(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <move_to_original_branch>
      name: move_to_original_branch
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName head_name))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <'refs/'>
                  pattern: (pat.Words words:[{<'refs/'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'message='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'message='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'message='> name:message)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <'rebase finished: '> ($ Id.VSub_DollarName head_name) <' onto '> 
                                ($ Id.VSub_DollarName onto)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<update-ref>}
                            {<-m>}
                            {(DQ ($ Id.VSub_DollarName message))}
                            {($ Id.VSub_DollarName head_name)}
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <git>
                                    more_env: []
                                    words: [{<git>} {<rev-parse>} {<HEAD>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                            {($ Id.VSub_DollarName orig_head)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<symbolic-ref>}
                            {<-m>}
                            {(DQ <'rebase finished: returning to '> ($ Id.VSub_DollarName head_name))}
                            {<HEAD>}
                            {($ Id.VSub_DollarName head_name)}
                          ]
                          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 <'Could not move back to '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <head_name>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <apply_autostash>
      name: apply_autostash
      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>} {<-f>} {(DQ ($ Id.VSub_DollarName state_dir) <'/autostash'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'stash_sha1='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'stash_sha1='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_sha1='> name:stash_sha1)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <cat>
                                    more_env: []
                                    words: [
                                      {<cat>}
                                      {(DQ ($ Id.VSub_DollarName state_dir) <'/autostash'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      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>} {<stash>} {<apply>} {($ Id.VSub_DollarName stash_sha1)}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_GreatAnd '2>&'>
                                      loc: (redir_loc.Fd fd:2)
                                      arg: {<1>}
                                    )
                                    (Redir
                                      op: <Id.Redir_Great '>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {<'/dev/null'>}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [{<gettext>} {(SQ <'Applied autostash.'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [931 948]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<stash>}
                                {<store>}
                                {<-m>}
                                {(DQ <autostash>)}
                                {<-q>}
                                {($ Id.VSub_DollarName stash_sha1)}
                              ]
                              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 store '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <stash_sha1>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.Simple
                          blame_tok: <gettext>
                          more_env: []
                          words: [
                            {<gettext>}
                            {
                              (SQ <'Applying autostash resulted in conflicts.\n'> 
                                <'Your changes are safe in the stash.\n'> <'You can run "git stash pop" or "git stash drop" at any time.\n'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [905 917]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <finish_rebase>
      name: finish_rebase
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <apply_autostash>
                  more_env: []
                  words: [{<apply_autostash>}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Sentence
                      child: 
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<gc>} {<--auto>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <true>
                              more_env: []
                              words: [{<true>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName state_dir))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <run_specific_rebase>
      name: run_specific_rebase
      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.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName interactive_rebase))}
                                {<Id.Lit_Equals '='>}
                                {<implied>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'GIT_EDITOR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'GIT_EDITOR='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'GIT_EDITOR='> name:GIT_EDITOR)
                          op: assign_op.Equal
                          rhs: {<Id.Lit_Colon ':'>}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [{<export>} {<GIT_EDITOR>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'autosquash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'autosquash='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autosquash='> name:autosquash)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1068 1083]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <.>
              more_env: []
              words: [{<.>} {<git-rebase--> ($ Id.VSub_DollarName type)}]
              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.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_DollarName ret)} {<-eq>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <finish_rebase>
                      more_env: []
                      words: [{<finish_rebase>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1111 1122]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_DollarName ret)} {<-eq>} {<2>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <apply_autostash>
                          more_env: []
                          words: [{<apply_autostash>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <rm>
                          more_env: []
                          words: [{<rm>} {<-rf>} {(DQ ($ Id.VSub_DollarName state_dir))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [{<die>} {(DQ <'Nothing to do'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                    )
                  ]
                  spids: [1128 1142]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <run_pre_rebase_hook>
      name: run_pre_rebase_hook
      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.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName ok_to_skip_pre_rebase))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {<-x>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <git>
                                          more_env: []
                                          words: [
                                            {<git>}
                                            {<rev-parse>}
                                            {<--git-path>}
                                            {<'hooks/pre-rebase'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<rev-parse>} {<--git-path>} {<'hooks/pre-rebase'>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Number 1>
                                var_name: 1
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_Plus _>
                                    arg_word: {(DQ ($ Id.VSub_At '@'))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                          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 <'The pre-rebase hook refused to rebase.'>)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [1186 1216]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName apply_dir)) <'/applying'>}]
          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 <'It looks like git-am is in progress. Cannot rebase.'>)}]
                      redirects: []
                      do_fork: T
                    )
                  right: <Id.Eof_RParen _>
                )
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (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>} {<-d>} {(DQ ($ Id.VSub_DollarName apply_dir))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'type='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'type='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                  op: assign_op.Equal
                  rhs: {<am>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'state_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'state_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName apply_dir))}
                )
              ]
              redirects: []
            )
          ]
          spids: [1285 1295]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName merge_dir))}]
                  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>}
                            {<-f>}
                            {(DQ ($ Id.VSub_DollarName merge_dir)) <'/interactive'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'type='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'type='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                          op: assign_op.Equal
                          rhs: {<interactive>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'interactive_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'interactive_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'interactive_rebase='>
                              name: interactive_rebase
                            )
                          op: assign_op.Equal
                          rhs: {<explicit>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1320 1332]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'type='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'type='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                      op: assign_op.Equal
                      rhs: {<merge>}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'state_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'state_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName merge_dir))}
                )
              ]
              redirects: []
            )
          ]
          spids: [1307 1317]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName type))}]
          redirects: []
          do_fork: T
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'in_progress='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'in_progress='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in_progress='> name:in_progress)
              op: assign_op.Equal
              rhs: {<t>}
            )
          ]
          redirects: []
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'total_argc='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'total_argc='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total_argc='> name:total_argc)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Pound '#')}
        )
      ]
      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: <--no-verify>
                  pattern: (pat.Words words:[{<--no-verify>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                              name: ok_to_skip_pre_rebase
                            )
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--verify>
                  pattern: (pat.Words words:[{<--verify>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'ok_to_skip_pre_rebase='>
                              name: ok_to_skip_pre_rebase
                            )
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--continue>
                  pattern: (pat.Words words:[{<--continue>} {<--skip>} {<--abort>} {<--edit-todo>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {($ Id.VSub_DollarName total_argc)} {<-eq>} {<2>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <usage>
                          more_env: []
                          words: [{<usage>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'action='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'action='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'action='> name:action)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Number 1>
                                var_name: 1
                                suffix_op: (suffix_op.Unary op:<Id.VOp1_DPound '##'> arg_word:{<-->})
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--onto>
                  pattern: (pat.Words words:[{<--onto> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'onto='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'onto='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto='> name:onto)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--onto='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--exec>
                  pattern: (pat.Words words:[{<--exec> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'cmd='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'cmd='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmd='> name:cmd)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name cmd) <'exec '> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--exec='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                ) (${ Id.VSub_Name LF)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName interactive_rebase))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'interactive_rebase='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'interactive_rebase='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'interactive_rebase='>
                                  name: interactive_rebase
                                )
                              op: assign_op.Equal
                              rhs: {<implied>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--interactive>
                  pattern: (pat.Words words:[{<--interactive>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'interactive_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'interactive_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'interactive_rebase='>
                              name: interactive_rebase
                            )
                          op: assign_op.Equal
                          rhs: {<explicit>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--keep-empty>
                  pattern: (pat.Words words:[{<--keep-empty>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'keep_empty='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'keep_empty='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keep_empty='> name:keep_empty)
                          op: assign_op.Equal
                          rhs: {<yes>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--preserve-merges>
                  pattern: (pat.Words words:[{<--preserve-merges>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'preserve_merges='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'preserve_merges='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'preserve_merges='>
                              name: preserve_merges
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName interactive_rebase))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'interactive_rebase='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'interactive_rebase='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'interactive_rebase='>
                                  name: interactive_rebase
                                )
                              op: assign_op.Equal
                              rhs: {<implied>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--autosquash>
                  pattern: (pat.Words words:[{<--autosquash>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'autosquash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'autosquash='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autosquash='> name:autosquash)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--no-autosquash>
                  pattern: (pat.Words words:[{<--no-autosquash>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'autosquash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'autosquash='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autosquash='> name:autosquash)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--fork-point>
                  pattern: (pat.Words words:[{<--fork-point>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'fork_point='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'fork_point='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fork_point='> name:fork_point)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--no-fork-point>
                  pattern: (pat.Words words:[{<--no-fork-point>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'fork_point='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'fork_point='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fork_point='> name:fork_point)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--merge>
                  pattern: (pat.Words words:[{<--merge>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'do_merge='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'do_merge='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'do_merge='> name:do_merge)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--strategy-option>
                  pattern: 
                    (pat.Words
                      words: [{<--strategy-option> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'strategy_opts='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'strategy_opts='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'strategy_opts='>
                              name: strategy_opts
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName strategy_opts) <' '> 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<rev-parse>}
                                        {<--sq-quote>}
                                        {
                                          (DQ <--> 
                                            (BracedVarSub
                                              left: <Id.Left_DollarBrace '${'>
                                              token: <Id.VSub_Number 1>
                                              var_name: 1
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op: <Id.VOp1_Pound '#'>
                                                  arg_word: {<'--strategy-option='>}
                                                )
                                              right: <Id.Right_DollarBrace '}'>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'do_merge='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'do_merge='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'do_merge='> name:do_merge)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName strategy))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'strategy='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'strategy='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
                              op: assign_op.Equal
                              rhs: {<recursive>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--strategy>
                  pattern: (pat.Words words:[{<--strategy> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'strategy='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'strategy='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--strategy='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'do_merge='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'do_merge='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'do_merge='> name:do_merge)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--no-stat>
                  pattern: (pat.Words words:[{<--no-stat>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'diffstat='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'diffstat='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--stat>
                  pattern: (pat.Words words:[{<--stat>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'diffstat='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'diffstat='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--autostash>
                  pattern: (pat.Words words:[{<--autostash>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'autostash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'autostash='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autostash='> name:autostash)
                          op: assign_op.Equal
                          rhs: {<true>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--no-autostash>
                  pattern: (pat.Words words:[{<--no-autostash>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'autostash='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'autostash='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'autostash='> name:autostash)
                          op: assign_op.Equal
                          rhs: {<false>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--verbose>
                  pattern: (pat.Words words:[{<--verbose>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'verbose='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'verbose='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'diffstat='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'diffstat='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                    (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: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--quiet>
                  pattern: (pat.Words words:[{<--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: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'git_am_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'git_am_opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName git_am_opt) <' -q'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'verbose='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'verbose='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'verbose='> name:verbose)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'diffstat='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'diffstat='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'diffstat='> name:diffstat)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--whitespace>
                  pattern: (pat.Words words:[{<--whitespace> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'git_am_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'git_am_opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName git_am_opt) <' --whitespace='> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--whitespace='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: 
                        (case_arg.Word
                          w: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--whitespace='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <fix>
                          pattern: (pat.Words words:[{<fix>} {<strip>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'force_rebase='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'force_rebase='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'force_rebase='>
                                      name: force_rebase
                                    )
                                  op: assign_op.Equal
                                  rhs: {<t>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--ignore-whitespace>
                  pattern: (pat.Words words:[{<--ignore-whitespace>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'git_am_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'git_am_opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName git_am_opt) <' '> ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--committer-date-is-author-date>
                  pattern: (pat.Words words:[{<--committer-date-is-author-date>} {<--ignore-date>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'git_am_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'git_am_opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName git_am_opt) <' '> ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'force_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'force_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'force_rebase='>
                              name: force_rebase
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-C>
                  pattern: (pat.Words words:[{<-C> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'git_am_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'git_am_opt='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'git_am_opt='> name:git_am_opt)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName git_am_opt) <' '> ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--root>
                  pattern: (pat.Words words:[{<--root>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'rebase_root='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'rebase_root='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'rebase_root='>
                              name: rebase_root
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--force-rebase>
                  pattern: (pat.Words words:[{<--force-rebase>} {<--no-ff>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'force_rebase='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'force_rebase='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'force_rebase='>
                              name: force_rebase
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--rerere-autoupdate>
                  pattern: (pat.Words words:[{<--rerere-autoupdate>} {<--no-rerere-autoupdate>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'allow_rerere_autoupdate='>
                              name: allow_rerere_autoupdate
                            )
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--gpg-sign>
                  pattern: (pat.Words words:[{<--gpg-sign>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gpg_sign_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gpg_sign_opt='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'gpg_sign_opt='>
                              name: gpg_sign_opt
                            )
                          op: assign_op.Equal
                          rhs: {<-S>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <--gpg-sign>
                  pattern: (pat.Words words:[{<--gpg-sign> <Id.Lit_Equals '='> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'gpg_sign_opt='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'gpg_sign_opt='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'gpg_sign_opt='>
                              name: gpg_sign_opt
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ <-S> 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Number 1>
                                  var_name: 1
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<'--gpg-sign='>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  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 _>
                )
              ]
              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 '#')} {<-gt>} {<2>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <usage>
          more_env: []
          words: [{<usage>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (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 action))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName in_progress))}]
                  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 rebase in progress?'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (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 type))}
                                {<Id.Lit_Equals '='>}
                                {<interactive>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION))}
                                {<Id.Lit_Equals '='>}
                                {<rebase>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
                              name: GIT_REFLOG_ACTION
                            )
                          op: assign_op.Equal
                          rhs: {(DQ <'rebase -i ('> ($ Id.VSub_DollarName action) <')'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [{<export>} {<GIT_REFLOG_ACTION>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [2017 2042]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [1977 1987]
        )
      ]
      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 action))}
                        {<Id.Lit_Equals '='>}
                        {(DQ <edit-todo>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName type))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <interactive>)}
                      ]
                      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 
                                <
'The --edit-todo action can only be used during interactive rebase.'
                                >
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2063 2092]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName action))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.ControlFlow_Continue continue>
          pattern: (pat.Words words:[{<Id.ControlFlow_Continue continue>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {<'/dev/null'>}
                    )
                  ]
                  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 read HEAD'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<update-index>} {<--ignore-submodules>} {<--refresh>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<diff-files>} {<--quiet>} {<--ignore-submodules>}]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {
                                      (DQ <'You must edit all merge conflicts and then\n'> 
                                        <'mark them as resolved using git add'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <read_basic_state>
              more_env: []
              words: [{<read_basic_state>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <run_specific_rebase>
              more_env: []
              words: [{<run_specific_rebase>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <skip>
          pattern: (pat.Words words:[{<skip>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <output>
                  more_env: []
                  words: [{<output>} {<git>} {<reset>} {<--hard>} {<HEAD>}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Exit exit>
                  arg_word: {($ Id.VSub_QMark '?')}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <read_basic_state>
              more_env: []
              words: [{<read_basic_state>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <run_specific_rebase>
              more_env: []
              words: [{<run_specific_rebase>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <abort>
          pattern: (pat.Words words:[{<abort>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<rerere>} {<clear>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <read_basic_state>
              more_env: []
              words: [{<read_basic_state>}]
              redirects: []
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName head_name))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <'refs/'>
                  pattern: (pat.Words words:[{<'refs/'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<symbolic-ref>}
                            {<-m>}
                            {(DQ <'rebase: aborting'>)}
                            {<HEAD>}
                            {($ Id.VSub_DollarName head_name)}
                          ]
                          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 <'Could not move back to '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <head_name>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <output>
              more_env: []
              words: [{<output>} {<git>} {<reset>} {<--hard>} {($ Id.VSub_DollarName orig_head)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <finish_rebase>
              more_env: []
              words: [{<finish_rebase>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <edit-todo>
          pattern: (pat.Words words:[{<edit-todo>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.Simple
              blame_tok: <run_specific_rebase>
              more_env: []
              words: [{<run_specific_rebase>}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      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 in_progress))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'state_dir_base='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'state_dir_base='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir_base='> name:state_dir_base)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name state_dir>
                        var_name: state_dir
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_DPound '##'>
                            arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmd_live_rebase='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmd_live_rebase='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'cmd_live_rebase='>
                      name: cmd_live_rebase
                    )
                  op: assign_op.Equal
                  rhs: {(DQ <'git rebase (--continue | --abort | --skip)'>)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmd_clear_stale_rebase='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmd_clear_stale_rebase='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'cmd_clear_stale_rebase='>
                      name: cmd_clear_stale_rebase
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <'rm -fr '> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) ($ Id.VSub_DollarName state_dir) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <die>
              more_env: []
              words: [
                {<die>}
                {
                  (DQ <'\n'> 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (SQ 
                                <
'It seems that there is already a $state_dir_base directory, and\n'
                                > <'I wonder if you are in the middle of another rebase.  If that is the\n'> <'case, please try\n'> 
                                <'\t$cmd_live_rebase\n'> <'If that is not the case, please\n'> <'\t$cmd_clear_stale_rebase\n'> 
                                <
'and run me again.  I am stopping in case you still have something\n'
                                > <'valuable there.'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [2336 2346]
        )
      ]
      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>} {<-n>} {(DQ ($ Id.VSub_DollarName rebase_root))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName onto))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName interactive_rebase))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'interactive_rebase='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'interactive_rebase='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'interactive_rebase='>
                          name: interactive_rebase
                        )
                      op: assign_op.Equal
                      rhs: {<implied>}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          spids: [2396 2416]
        )
      ]
      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 interactive_rebase))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'type='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'type='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                  op: assign_op.Equal
                  rhs: {<interactive>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'state_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'state_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName merge_dir))}
                )
              ]
              redirects: []
            )
          ]
          spids: [2435 2445]
        )
        (IfArm
          keyword: <Id.KW_Elif elif>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName do_merge))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'type='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'type='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
                  op: assign_op.Equal
                  rhs: {<merge>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'state_dir='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'state_dir='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName merge_dir))}
                )
              ]
              redirects: []
            )
          ]
          spids: [2457 2467]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'type='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'type='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'type='> name:type)
              op: assign_op.Equal
              rhs: {<am>}
            )
          ]
          redirects: []
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'state_dir='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'state_dir='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'state_dir='> name:state_dir)
              op: assign_op.Equal
              rhs: {(DQ ($ Id.VSub_DollarName apply_dir))}
            )
          ]
          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 rebase_root))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Pound '#'))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'upstream_name='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'upstream_name='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'upstream_name='>
                                              name: upstream_name
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<rev-parse>}
                                                      {<--symbolic-full-name>}
                                                      {<--verify>}
                                                      {<-q>}
                                                      {<Id.Lit_At '@'> <Id.Lit_LBrace '{'> <upstream> 
                                                        <Id.Lit_RBrace '}'>
                                                      }
                                                    ]
                                                    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: []
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <.>
                              more_env: []
                              words: [{<.>} {<git-parse-remote>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <error_on_missing_default_upstream>
                              more_env: []
                              words: [
                                {<error_on_missing_default_upstream>}
                                {(DQ <rebase>)}
                                {(DQ <rebase>)}
                                {(DQ <against>)}
                                {
                                  (DQ <'git rebase '> 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [{<gettext>} {(SQ <'<branch>'>)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [2520 2548]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {(DQ ($ Id.VSub_DollarName fork_point))}
                            {<Id.Lit_Equals '='>}
                            {<auto>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'fork_point='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'fork_point='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'fork_point='>
                                  name: fork_point
                                )
                              op: assign_op.Equal
                              rhs: {<t>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      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.ShAssignment
                      left: <Id.Lit_VarLike 'upstream_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'upstream_name='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'upstream_name='>
                              name: upstream_name
                            )
                          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>}
                                    {(DQ ($ Id.VSub_DollarName upstream_name))}
                                    {<Id.Lit_Equals '='>}
                                    {(DQ <->)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'upstream_name='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'upstream_name='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'upstream_name='>
                                      name: upstream_name
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'@{-1}'>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2616 2631]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'upstream='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'upstream='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'upstream='> name:upstream)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <peel_committish>
                                more_env: []
                                words: [{<peel_committish>} {(DQ (${ Id.VSub_Name upstream_name))}]
                                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: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'invalid upstream '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <upstream_name>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'upstream_arg='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'upstream_arg='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'upstream_arg='> name:upstream_arg)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName upstream_name))}
                )
              ]
              redirects: []
            )
          ]
          spids: [2494 2504]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_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>} {<-z>} {(DQ ($ Id.VSub_DollarName onto))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              then_kw: <Id.KW_Then then>
              action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'empty_tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'empty_tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'empty_tree='> name:empty_tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<hash-object>} {<-t>} {<tree>} {<'/dev/null'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'onto='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'onto='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto='> name:onto)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<commit-tree>} {($ Id.VSub_DollarName empty_tree)}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Less '<'>
                                    loc: (redir_loc.Fd fd:0)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'squash_onto='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'squash_onto='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'squash_onto='> name:squash_onto)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName onto))}
                    )
                  ]
                  redirects: []
                )
              ]
              spids: [2689 2700]
            )
          ]
          else_action: []
          fi_kw: <Id.KW_Fi fi>
          redirects: []
        )
        (command.Simple
          blame_tok: <unset>
          more_env: []
          words: [{<unset>} {<upstream_name>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <unset>
          more_env: []
          words: [{<unset>} {<upstream>}]
          redirects: []
          do_fork: T
        )
        (command.AndOr
          children: [
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [{<test>} {($ Id.VSub_Pound '#')} {<-gt>} {<1>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <usage>
              more_env: []
              words: [{<usage>}]
              redirects: []
              do_fork: T
            )
          ]
          ops: [<Id.Op_DAmp _>]
        )
        (command.ShAssignment
          left: <Id.Lit_VarLike 'upstream_arg='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'upstream_arg='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'upstream_arg='> name:upstream_arg)
              op: assign_op.Equal
              rhs: {<--root>}
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'onto_name='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'onto_name='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto_name='> name:onto_name)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name onto>
                var_name: onto
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_Hyphen _>
                    arg_word: {(DQ ($ Id.VSub_DollarName upstream_name))}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName onto_name))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'> <Id.Lit_TDot ...> <Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.AndOr
                          children: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'left='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'left='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'left='> name:left)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name onto_name>
                                        var_name: onto_name
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Percent '%'>
                                            arg_word: {<...> <Id.Lit_Other '*'>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                                (AssignPair
                                  left: <Id.Lit_VarLike 'right='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'right='> name:right)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name onto_name>
                                        var_name: onto_name
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<Id.Lit_Other '*'> <...>}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'onto='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'onto='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto='> name:onto)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<merge-base>}
                                              {<--all>}
                                              {
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name left>
                                                  var_name: left
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VTest_ColonHyphen _>
                                                      arg_word: {<HEAD>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              }
                                              {
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name right>
                                                  var_name: right
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VTest_ColonHyphen _>
                                                      arg_word: {<HEAD>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              }
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName onto))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_QMark '?'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (DQ ($ Id.VSub_DollarName LF)) 
                                  <Id.Lit_QMark '?'> <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 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <'onto_name: there are more than one merge bases'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_SingleQuote '\''>
                          pattern: (pat.Words words:[{(SQ )}])
                          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 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <'onto_name: there is no merge base'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  spids: [2794 2837]
                )
              ]
              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: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'onto_name: there is no merge base'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <Id.Lit_Star '*'>
          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'onto='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'onto='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto='> name:onto)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <peel_committish>
                                more_env: []
                                words: [{<peel_committish>} {(DQ ($ Id.VSub_DollarName onto_name))}]
                                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: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Does not point to a valid commit: '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <onto_name>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'switch_to='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'switch_to='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'switch_to='> name:switch_to)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.Case
      case_kw: <Id.KW_Case case>
      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_Pound '#'))})
      arms_start: <Id.KW_In in>
      arms: [
        (CaseArm
          left: <1>
          pattern: (pat.Words words:[{<1>}])
          middle: <Id.Right_CasePat _>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'branch_name='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'branch_name='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'branch_name='> name:branch_name)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'switch_to='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'switch_to='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'switch_to='> name:switch_to)
                  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.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<show-ref>}
                                {<--verify>}
                                {<--quiet>}
                                {<-->}
                                {(DQ <'refs/heads/'> ($ Id.VSub_Number 1))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'orig_head='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'orig_head='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'orig_head='>
                                      name: orig_head
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <git>
                                            more_env: []
                                            words: [
                                              {<git>}
                                              {<rev-parse>}
                                              {<-q>}
                                              {<--verify>}
                                              {(DQ <'refs/heads/'> ($ Id.VSub_Number 1))}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head_name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head_name='> name:head_name)
                          op: assign_op.Equal
                          rhs: {(DQ <'refs/heads/'> ($ Id.VSub_Number 1))}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3002 3039]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'orig_head='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'orig_head='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'orig_head='>
                                  name: orig_head
                                )
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<rev-parse>}
                                          {<-q>}
                                          {<--verify>}
                                          {(DQ ($ Id.VSub_Number 1))}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'head_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head_name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head_name='> name:head_name)
                          op: assign_op.Equal
                          rhs: {(DQ <'detached HEAD'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3049 3067]
                )
              ]
              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: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'fatal: no such branch: '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <branch_name>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          right: <Id.Op_DSemi _>
        )
        (CaseArm
          left: <0>
          pattern: (pat.Words words:[{<0>}])
          middle: <Id.Right_CasePat _>
          action: [
            (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_name='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'branch_name='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'branch_name='>
                                  name: branch_name
                                )
                              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 'head_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'head_name='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head_name='> name:head_name)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName branch_name)}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'branch_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'branch_name='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'branch_name='>
                              name: branch_name
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [
                                      {<expr>}
                                      {(DQ <z> ($ Id.VSub_DollarName branch_name))}
                                      {<Id.Lit_Colon ':'>}
                                      {(SQ <'zrefs/heads/\\(.*\\)'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3107 3121]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'head_name='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'head_name='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head_name='> name:head_name)
                      op: assign_op.Equal
                      rhs: {(DQ <'detached HEAD'>)}
                    )
                  ]
                  redirects: []
                )
                (command.Sentence
                  child: 
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'branch_name='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'branch_name='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'branch_name='>
                              name: branch_name
                            )
                          op: assign_op.Equal
                          rhs: {<HEAD>}
                        )
                      ]
                      redirects: []
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'orig_head='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'orig_head='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig_head='> name:orig_head)
                      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: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          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 <'BUG: unexpected number of arguments left to parse'>)}]
              redirects: []
              do_fork: T
            )
          ]
          right: <Id.Op_DSemi _>
        )
      ]
      arms_end: <Id.KW_Esac esac>
      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 ($ Id.VSub_DollarName fork_point))} {<Id.Lit_Equals '='>} {<t>}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'new_upstream='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'new_upstream='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_upstream='> name:new_upstream)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [
                              {<git>}
                              {<merge-base>}
                              {<--fork-point>}
                              {(DQ ($ Id.VSub_DollarName upstream_name))}
                              {
                                (DQ 
                                  (BracedVarSub
                                    left: <Id.Left_DollarBrace '${'>
                                    token: <Id.VSub_Name switch_to>
                                    var_name: switch_to
                                    suffix_op: 
                                      (suffix_op.Unary
                                        op: <Id.VTest_ColonHyphen _>
                                        arg_word: {<HEAD>}
                                      )
                                    right: <Id.Right_DollarBrace '}'>
                                  )
                                )
                              }
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              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 new_upstream))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'restrict_revision='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'restrict_revision='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'restrict_revision='>
                              name: restrict_revision
                            )
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName new_upstream)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [3238 3249]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [3199 3211]
        )
      ]
      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 autostash))}
                        {<Id.Lit_Equals '='>}
                        {<true>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Subshell
                          left: <Id.Op_LParen _>
                          child: 
                            (command.Simple
                              blame_tok: <require_clean_work_tree>
                              more_env: []
                              words: [{<require_clean_work_tree>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Right_Subshell _>
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '2>'>
                              loc: (redir_loc.Fd fd:2)
                              arg: {<'/dev/null'>}
                            )
                          ]
                        )
                      ]
                      ops: []
                    )
                  ]
                  ops: [<Id.Op_DAmp _>]
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'stash_sha1='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'stash_sha1='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_sha1='> name:stash_sha1)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<stash>} {<create>} {(DQ <autostash>)}]
                                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>} {(SQ <'Cannot autostash'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <mkdir>
                  more_env: []
                  words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName state_dir))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {($ Id.VSub_DollarName stash_sha1)}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/autostash'>)}
                    )
                  ]
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'stash_abbrev='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'stash_abbrev='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'stash_abbrev='> name:stash_abbrev)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [
                                  {<git>}
                                  {<rev-parse>}
                                  {<--short>}
                                  {($ Id.VSub_DollarName stash_sha1)}
                                ]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [{<eval_gettext>} {(SQ <'Created autostash: $stash_abbrev'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<reset>} {<--hard>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          spids: [3261 3284]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <require_clean_work_tree>
      more_env: []
      words: [
        {<require_clean_work_tree>}
        {(DQ <rebase>)}
        {
          (DQ 
            (CommandSub
              left_token: <Id.Left_DollarParen '$('>
              child: 
                (command.Simple
                  blame_tok: <gettext>
                  more_env: []
                  words: [{<gettext>} {(DQ <'Please commit or stash them.'>)}]
                  redirects: []
                  do_fork: T
                )
              right: <Id.Eof_RParen _>
            )
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'mb='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'mb='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mb='> name:mb)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <git>
                    more_env: []
                    words: [
                      {<git>}
                      {<merge-base>}
                      {(DQ ($ Id.VSub_DollarName onto))}
                      {(DQ ($ Id.VSub_DollarName orig_head))}
                    ]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      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 type))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {<interactive>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName upstream))}
                        {<Id.Lit_Equals '='>}
                        {(DQ ($ Id.VSub_DollarName onto))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName mb))}
                        {<Id.Lit_Equals '='>}
                        {(DQ ($ Id.VSub_DollarName onto))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName restrict_revision))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      negated: <Id.KW_Bang '!'>
                      children: [
                        (command.Subshell
                          left: <Id.Op_LParen _>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<rev-list>}
                                    {<--parents>}
                                    {(DQ ($ Id.VSub_DollarName onto)) <..> 
                                      (DQ ($ Id.VSub_DollarName orig_head))
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <sane_grep>
                                  more_env: []
                                  words: [{<sane_grep>} {(DQ <' .* '>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          right: <Id.Right_Subshell _>
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<'/dev/null'>}
                            )
                          ]
                        )
                      ]
                      ops: []
                    )
                  ]
                  ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
                )
              ]
            )
          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>} {<-z>} {(DQ ($ Id.VSub_DollarName force_rebase))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName switch_to))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: [
                            (EnvPair
                              left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
                              name: GIT_REFLOG_ACTION
                              val: 
                                {
                                  (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> 
                                    ($ Id.VSub_DollarName switch_to)
                                  )
                                }
                            )
                          ]
                          words: [
                            {<git>}
                            {<checkout>}
                            {<-q>}
                            {(DQ ($ Id.VSub_DollarName switch_to))}
                            {<-->}
                          ]
                          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 <'Current branch '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'branch_name is up to date.'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <finish_rebase>
                      more_env: []
                      words: [{<finish_rebase>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<0>}
                    )
                  ]
                  spids: [3519 3530]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (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 <'Current branch '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'branch_name is up to date, rebase forced.'>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [3427 3516]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <run_pre_rebase_hook>
      more_env: []
      words: [
        {<run_pre_rebase_hook>}
        {(DQ ($ Id.VSub_DollarName upstream_arg))}
        {(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>} {<-n>} {(DQ ($ Id.VSub_DollarName diffstat))}]
                  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 verbose))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Changes from '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'mb to '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'onto:'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [3643 3654]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <git>
              more_env: [(EnvPair left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER val:{(SQ )})]
              words: [
                {<git>}
                {<diff>}
                {<--stat>}
                {<--summary>}
                {(DQ ($ Id.VSub_DollarName mb))}
                {(DQ ($ Id.VSub_DollarName onto))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          spids: [3630 3640]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <test>
          more_env: []
          words: [{<test>} {(DQ ($ Id.VSub_DollarName type))} {<Id.Lit_Equals '='>} {<interactive>}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <run_specific_rebase>
          more_env: []
          words: [{<run_specific_rebase>}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (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 <'First, rewinding head to replay your work on top of it...'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              right: <Id.Eof_RParen _>
            )
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.AndOr
      children: [
        (command.Simple
          blame_tok: <git>
          more_env: [
            (EnvPair
              left: <Id.Lit_VarLike 'GIT_REFLOG_ACTION='>
              name: GIT_REFLOG_ACTION
              val: 
                {
                  (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> 
                    ($ Id.VSub_DollarName onto_name)
                  )
                }
            )
          ]
          words: [{<git>} {<checkout>} {<-q>} {(DQ ($ Id.VSub_DollarName onto) <'^0'>)}]
          redirects: []
          do_fork: T
        )
        (command.Simple
          blame_tok: <die>
          more_env: []
          words: [{<die>} {(DQ <'could not detach HEAD'>)}]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DPipe _>]
    )
    (command.Simple
      blame_tok: <git>
      more_env: []
      words: [{<git>} {<update-ref>} {<ORIG_HEAD>} {($ Id.VSub_DollarName orig_head)}]
      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>}
                    {(DQ ($ Id.VSub_DollarName mb))}
                    {<Id.Lit_Equals '='>}
                    {(DQ ($ Id.VSub_DollarName orig_head))}
                  ]
                  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: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (DQ <'Fast-forwarded '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <'branch_name to '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <onto_name.>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <move_to_original_branch>
              more_env: []
              words: [{<move_to_original_branch>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <finish_rebase>
              more_env: []
              words: [{<finish_rebase>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [3778 3792]
        )
      ]
      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 rebase_root))}]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'revisions='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'revisions='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName onto) <..> ($ Id.VSub_DollarName orig_head))}
                )
              ]
              redirects: []
            )
          ]
          spids: [3825 3835]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.ShAssignment
          left: <Id.Lit_VarLike 'revisions='>
          pairs: [
            (AssignPair
              left: <Id.Lit_VarLike 'revisions='>
              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions)
              op: assign_op.Equal
              rhs: 
                {
                  (DQ 
                    (BracedVarSub
                      left: <Id.Left_DollarBrace '${'>
                      token: <Id.VSub_Name restrict_revision>
                      var_name: restrict_revision
                      suffix_op: 
                        (suffix_op.Unary
                          op: <Id.VTest_Hyphen _>
                          arg_word: {($ Id.VSub_DollarName upstream)}
                        )
                      right: <Id.Right_DollarBrace '}'>
                    ) <..> ($ Id.VSub_DollarName orig_head)
                  )
                }
            )
          ]
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <run_specific_rebase>
      more_env: []
      words: [{<run_specific_rebase>}]
      redirects: []
      do_fork: T
    )
  ]
)