(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'todo='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'todo='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todo='> name:todo)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/git-rebase-todo'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'done='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'done='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'done='> name:done)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/done'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'msg='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'msg='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'squash_msg='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'squash_msg='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'squash_msg='> name:squash_msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message-squash'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'fixup_msg='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'fixup_msg='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixup_msg='> name:fixup_msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/message-fixup'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'rewritten='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'rewritten='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten='> name:rewritten)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'dropped='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'dropped='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dropped='> name:dropped)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/dropped'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'end='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'end='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/end'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'msgnum='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'msgnum='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/msgnum'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'author_script='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'author_script='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'author_script='> name:author_script)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/author-script'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'amend='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'amend='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'amend='> name:amend)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/amend'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'rewritten_list='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'rewritten_list='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten_list='> name:rewritten_list)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten-list'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'rewritten_pending='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'rewritten_pending='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rewritten_pending='> name:rewritten_pending)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten-pending'>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'cr='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'cr='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cr='> name:cr)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Simple
                    blame_tok: <printf>
                    more_env: []
                    words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <015>)}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'strategy_args='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'strategy_args='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy_args='> name:strategy_args)
          op: assign_op.Equal
          rhs: 
            {
              (BracedVarSub
                left: <Id.Left_DollarBrace '${'>
                token: <Id.VSub_Name strategy>
                var_name: strategy
                suffix_op: 
                  (suffix_op.Unary
                    op: <Id.VTest_ColonPlus _>
                    arg_word: {<'--strategy='> ($ Id.VSub_DollarName strategy)}
                  )
                right: <Id.Right_DollarBrace '}'>
              )
            }
        )
      ]
      redirects: []
    )
    (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: <eval>
          more_env: []
          words: [
            {<eval>}
            {(SQ <'\n'> <'\tfor strategy_opt in '>) (DQ ($ Id.VSub_DollarName strategy_opts)) 
              (SQ <'\n'> <'\tdo\n'> 
                <
'\t\tstrategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"\n'
                > <'\tdone\n'>
              )
            }
          ]
          redirects: []
          do_fork: T
        )
      ]
      ops: [<Id.Op_DAmp _>]
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='>
          lhs: 
            (sh_lhs_expr.Name
              left: <Id.Lit_VarLike 'GIT_CHERRY_PICK_HELP='>
              name: GIT_CHERRY_PICK_HELP
            )
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName resolvemsg))}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <export>
      more_env: []
      words: [{<export>} {<GIT_CHERRY_PICK_HELP>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'comment_char='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'comment_char='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'comment_char='> name:comment_char)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_DollarParen '$('>
                child: 
                  (command.Pipeline
                    children: [
                      (command.Simple
                        blame_tok: <git>
                        more_env: []
                        words: [{<git>} {<config>} {<--get>} {<core.commentchar>}]
                        redirects: [
                          (Redir
                            op: <Id.Redir_Great '2>'>
                            loc: (redir_loc.Fd fd:2)
                            arg: {<'/dev/null'>}
                          )
                        ]
                        do_fork: T
                      )
                      (command.Simple
                        blame_tok: <cut>
                        more_env: []
                        words: [{<cut>} {<-c1>}]
                        redirects: []
                        do_fork: T
                      )
                    ]
                    ops: [<Id.Op_Pipe _>]
                  )
                right: <Id.Eof_RParen _>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <Id.Lit_Colon ':'>
      more_env: []
      words: [
        {<Id.Lit_Colon ':'>}
        {
          (BracedVarSub
            left: <Id.Left_DollarBrace '${'>
            token: <Id.VSub_Name comment_char>
            var_name: comment_char
            suffix_op: (suffix_op.Unary op:<Id.VTest_ColonEquals _> arg_word:{<Id.Lit_Pound '#'>})
            right: <Id.Right_DollarBrace '}'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <warn>
      name: warn
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <printf>
              more_env: []
              words: [{<printf>} {(SQ <'%s\\n'>)} {(DQ ($ Id.VSub_Star '*'))}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <commit_message>
      name: commit_message
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<cat-file>} {<commit>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {(DQ <'1,/^'> <Id.Lit_Dollar '$'> <'/d'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'orig_reflog_action='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'orig_reflog_action='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'orig_reflog_action='> name:orig_reflog_action)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION))}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <comment_for_reflog>
      name: comment_for_reflog
      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 orig_reflog_action))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ )} {<rebase> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  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_Number 1) <')'>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [{<export>} {<GIT_REFLOG_ACTION>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'last_count='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'last_count='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last_count='> name:last_count)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <mark_action_done>
      name: mark_action_done
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-e>} {<1q>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName todo))}
                )
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName done))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [{<sed>} {<-e>} {<1d>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName todo))}
                )
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [
                {<mv>}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                {(DQ ($ Id.VSub_DollarName todo))}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'new_count='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'new_count='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_count='> name:new_count)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Pipeline
                                  children: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<stripspace>} {<--strip-comments>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Less '<'>
                                          loc: (redir_loc.Fd fd:0)
                                          arg: {(DQ ($ Id.VSub_DollarName done))}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <wc>
                                      more_env: []
                                      words: [{<wc>} {<-l>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_Pipe _>]
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {($ Id.VSub_DollarName new_count)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName msgnum))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'total='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'total='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total='> name:total)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName new_count)}
                            right: 
                              {
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (command.Simple
                                          blame_tok: <git>
                                          more_env: []
                                          words: [{<git>} {<stripspace>} {<--strip-comments>}]
                                          redirects: [
                                            (Redir
                                              op: <Id.Redir_Less '<'>
                                              loc: (redir_loc.Fd fd:0)
                                              arg: {(DQ ($ Id.VSub_DollarName todo))}
                                            )
                                          ]
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <wc>
                                          more_env: []
                                          words: [{<wc>} {<-l>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_Pipe _>]
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              }
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {($ Id.VSub_DollarName total)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName end))}
                )
              ]
              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 last_count))}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {(DQ ($ Id.VSub_DollarName new_count))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'last_count='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'last_count='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'last_count='> name:last_count)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName new_count)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (DQ <'Rebasing ('> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <'new_count/'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'total)'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <Id.Lit_BadBackslash '\\'> <r>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName verbose))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  spids: [592 608]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <reschedule_last_action>
      name: reschedule_last_action
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <tail>
                  more_env: []
                  words: [{<tail>} {<-n>} {<1>} {(DQ ($ Id.VSub_DollarName done))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <cat>
                  more_env: []
                  words: [{<cat>} {<->} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [
                {<sed>}
                {<-e>}
                {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <d>}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName done))}
                )
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName done)) <.new>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [
                {<mv>}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                {(DQ ($ Id.VSub_DollarName todo))}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <mv>
              more_env: []
              words: [
                {<mv>}
                {<-f>}
                {(DQ ($ Id.VSub_DollarName done)) <.new>}
                {(DQ ($ Id.VSub_DollarName done))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <append_todo_help>
      name: append_todo_help
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <gettext>
                  more_env: []
                  words: [
                    {<gettext>}
                    {
                      (DQ <'\n'> <'Commands:\n'> <' p, pick = use commit\n'> 
                        <' r, reword = use commit, but edit the commit message\n'> <' e, edit = use commit, but stop for amending\n'> 
                        <' s, squash = use commit, but meld into previous commit\n'> <' f, fixup = like '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') <squash> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\"'>
                          ch: '"'
                        ) <', but discard this commit\'s log message\n'> 
                        <' x, exec = run command (the rest of the line) using shell\n'> <' d, drop = remove commit\n'> <'\n'> 
                        <'These lines can be re-ordered; they are executed from top to bottom.\n'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<stripspace>} {<--comment-lines>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (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>}
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <get_missing_commit_check_level>
                                    more_env: []
                                    words: [{<get_missing_commit_check_level>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                            {<Id.Lit_Equals '='>}
                            {<error>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <gettext>
                          more_env: []
                          words: [
                            {<gettext>}
                            {
                              (DQ <'\n'> 
                                <
'Do not remove any line. Use \'drop\' explicitly to remove a commit.\n'
                                >
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<stripspace>} {<--comment-lines>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(DQ ($ Id.VSub_DollarName todo))}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  spids: [788 801]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Pipeline
                  children: [
                    (command.Simple
                      blame_tok: <gettext>
                      more_env: []
                      words: [
                        {<gettext>}
                        {(DQ <'\n'> <'If you remove a line here THAT COMMIT WILL BE LOST.\n'>)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<stripspace>} {<--comment-lines>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_Pipe _>]
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <make_patch>
      name: make_patch
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sha1_and_parents='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sha1_and_parents='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'sha1_and_parents='>
                      name: sha1_and_parents
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<rev-list>} {<--parents>} {<-1>} {(DQ ($ Id.VSub_Number 1))}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName sha1_and_parents))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_QMark '?'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> 
                          <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<diff>} {<--cc>} {($ Id.VSub_DollarName sha1_and_parents)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_QMark '?'>
                  pattern: 
                    (pat.Words
                      words: [
                        {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> 
                          <Id.Lit_Star '*'>
                        }
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<diff-tree>} {<-p>} {(DQ ($ Id.VSub_Number 1) <'^!'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Root commit'>)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/patch'>}
                )
              ]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName msg))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <commit_message>
                  more_env: []
                  words: [{<commit_message>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName msg))}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName author_script))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <get_author_ident_from_commit>
                  more_env: []
                  words: [{<get_author_ident_from_commit>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName author_script))}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <die_with_patch>
      name: die_with_patch
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <make_patch>
              more_env: []
              words: [{<make_patch>} {(DQ ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <die>
              more_env: []
              words: [{<die>} {(DQ ($ Id.VSub_Number 2))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <exit_with_patch>
      name: exit_with_patch
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_Number 1))}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <make_patch>
              more_env: []
              words: [{<make_patch>} {($ Id.VSub_Number 1)}]
              redirects: []
              do_fork: T
            )
            (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: {(DQ ($ Id.VSub_DollarName amend))}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
                  lhs: 
                    (sh_lhs_expr.Name
                      left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
                      name: gpg_sign_opt_quoted
                    )
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name gpg_sign_opt>
                        var_name: gpg_sign_opt
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonPlus _>
                            arg_word: 
                              {
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<rev-parse>}
                                        {<--sq-quote>}
                                        {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              }
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [
                {<warn>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (DQ <'You can amend the commit now, with\n'> <'\n'> 
                                <'\tgit commit --amend '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'gpg_sign_opt_quoted\n'> <'\n'> 
                                <'Once you are satisfied with your changes, run\n'> <'\n'> <'\tgit rebase --continue'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [{<warn>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Exit exit>
              arg_word: {($ Id.VSub_Number 2)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <die_abort>
      name: die_abort
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          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 ($ Id.VSub_Number 1))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <has_action>
      name: has_action
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [
                {<test>}
                {<-n>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<stripspace>} {<--strip-comments>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_Number 1))}
                            )
                          ]
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <is_empty_commit>
      name: is_empty_commit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'tree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'tree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tree='> name:tree)
                      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)) <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> 
                                    <tree> <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: []
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sha1='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sha1='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'sha1: not a commit that can be picked'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ptree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ptree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ptree='> name:ptree)
                      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)) <Id.Lit_Other '^'> <Id.Lit_Other '^'> 
                                    <Id.Lit_LBrace '{'> <tree> <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: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ptree='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ptree='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ptree='> name:ptree)
                      op: assign_op.Equal
                      rhs: {<4b825dc642cb6eb9a060e54bf8d69288fbee4904>}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <test>
              more_env: []
              words: [
                {<test>}
                {(DQ ($ Id.VSub_DollarName tree))}
                {<Id.Lit_Equals '='>}
                {(DQ ($ Id.VSub_DollarName ptree))}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <is_merge_commit>
      name: is_merge_commit
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [
                {<git>}
                {<rev-parse>}
                {<--verify>}
                {<--quiet>}
                {(DQ ($ Id.VSub_Number 1)) <Id.Lit_Other '^'> <2>}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {<'/dev/null'>}
                )
                (Redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_with_author>
      name: do_with_author
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Subshell
              left: <Id.Op_LParen _>
              child: 
                (command.CommandList
                  children: [
                    (command.Simple
                      blame_tok: <export>
                      more_env: []
                      words: [{<export>} {<GIT_AUTHOR_NAME>} {<GIT_AUTHOR_EMAIL>} {<GIT_AUTHOR_DATE>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <Id.Left_DoubleQuote '"'>
                      more_env: []
                      words: [{(DQ ($ Id.VSub_At '@'))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              right: <Id.Right_Subshell _>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git_sequence_editor>
      name: git_sequence_editor
      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>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                              name: GIT_SEQUENCE_EDITOR
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<config>} {<sequence.editor>}]
                                      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: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {<-z>}
                                    {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'GIT_SEQUENCE_EDITOR='>
                                          name: GIT_SEQUENCE_EDITOR
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <git>
                                                  more_env: []
                                                  words: [{<git>} {<Id.KW_Var var>} {<GIT_EDITOR>}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ControlFlow
                                  keyword: <Id.ControlFlow_Return return>
                                  arg_word: {($ Id.VSub_QMark '?')}
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [1404 1417]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1378 1389]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [{<eval>} {(DQ ($ Id.VSub_DollarName GIT_SEQUENCE_EDITOR))} {(SQ <'"$@"'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <pick_one>
      name: pick_one
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ff='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ff='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff)
                  op: assign_op.Equal
                  rhs: {<--ff>}
                )
              ]
              redirects: []
            )
            (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: <-n>
                  pattern: (pat.Words words:[{<-n>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'sha1='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'sha1='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number 2)}
                            )
                          ]
                          redirects: []
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ff='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ff='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      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 'sha1='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sha1='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName force_rebase))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_SingleQuote '\''>
                  pattern: (pat.Words words:[{(SQ )}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_QMark '?'>
                  pattern: (pat.Words words:[{<Id.Lit_QMark '?'> <Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ff='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ff='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ff='> name:ff)
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <output>
                  more_env: []
                  words: [{<output>} {<git>} {<rev-parse>} {<--verify>} {($ Id.VSub_DollarName 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 <'Invalid commit name: '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <sha1>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <is_empty_commit>
                          more_env: []
                          words: [{<is_empty_commit>} {(DQ ($ Id.VSub_DollarName sha1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'empty_args='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'empty_args='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'empty_args='> name:empty_args)
                          op: assign_op.Equal
                          rhs: {(DQ <--allow-empty>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1554 1563]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName rewritten))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <pick_one_preserving_merges>
                  more_env: []
                  words: [{<pick_one_preserving_merges>} {(DQ ($ Id.VSub_At '@'))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <output>
              more_env: []
              words: [
                {<output>}
                {<eval>}
                {<git>}
                {<cherry-pick>}
                {
                  (BracedVarSub
                    left: <Id.Left_DollarBrace '${'>
                    token: <Id.VSub_Name gpg_sign_opt>
                    var_name: gpg_sign_opt
                    suffix_op: 
                      (suffix_op.Unary
                        op: <Id.VTest_ColonPlus _>
                        arg_word: 
                          {
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<rev-parse>}
                                    {<--sq-quote>}
                                    {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          }
                      )
                    right: <Id.Right_DollarBrace '}'>
                  )
                }
                {(DQ ($ Id.VSub_DollarName strategy_args))}
                {($ Id.VSub_DollarName empty_args)}
                {($ Id.VSub_DollarName ff)}
                {(DQ ($ Id.VSub_At '@'))}
              ]
              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.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName ret))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Lit_LBracket '['>
                  pattern: (pat.Words words:[{<Id.Lit_LBracket '['> <01> <Id.Lit_RBracket ']'>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <reschedule_last_action>
                      more_env: []
                      words: [{<reschedule_last_action>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName ret)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <pick_one_preserving_merges>
      name: pick_one_preserving_merges
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'fast_forward='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'fast_forward='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fast_forward='> name:fast_forward)
                  op: assign_op.Equal
                  rhs: {<t>}
                )
              ]
              redirects: []
            )
            (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: <-n>
                  pattern: (pat.Words words:[{<-n>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'fast_forward='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'fast_forward='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'fast_forward='>
                              name: fast_forward
                            )
                          op: assign_op.Equal
                          rhs: {<f>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sha1='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sha1='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 2)}
                        )
                      ]
                      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 'sha1='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sha1='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number 1)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sha1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sha1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<rev-parse>} {($ Id.VSub_DollarName sha1)}]
                            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)) <'/current-commit'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_DollarName fast_forward))}
                                    {<Id.Lit_Equals '='>}
                                    {<t>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.WhileUntil
                              keyword: <Id.KW_While while>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <read>
                                      more_env: []
                                      words: [{<read>} {<current_commit>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              body: 
                                (command.DoGroup
                                  left: <Id.KW_Do do>
                                  children: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<rev-parse>} {<HEAD>}]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: 
                                            {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> 
                                              ($ Id.VSub_DollarName current_commit)
                                            }
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Less '<'>
                                  loc: (redir_loc.Fd fd:0)
                                  arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>}
                                )
                              ]
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [
                                    {<rm>}
                                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <die>
                                  more_env: []
                                  words: [
                                    {<die>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <gettext>
                                              more_env: []
                                              words: [
                                                {<gettext>}
                                                {
                                                  (DQ 
                                                    <
'Cannot write current commit\'s replacement sha1'
                                                    >
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [1760 1773]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [1745 1757]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {($ Id.VSub_DollarName sha1)}]
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/current-commit'>}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'new_parents='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'new_parents='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_parents='> name:new_parents)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'pend='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'pend='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ <' '> 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<rev-list>}
                                    {<--parents>}
                                    {<-1>}
                                    {($ Id.VSub_DollarName sha1)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <cut>
                                  more_env: []
                                  words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                          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>}
                            {(DQ ($ Id.VSub_DollarName pend))}
                            {<Id.Lit_Equals '='>}
                            {(DQ <' '>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'pend='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'pend='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend)
                          op: assign_op.Equal
                          rhs: {(DQ <' root'>)}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1890 1905]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ ($ Id.VSub_DollarName pend))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ )}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'p='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'p='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'p='> name:p)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [
                                      {<expr>}
                                      {(DQ ($ Id.VSub_DollarName pend))}
                                      {<Id.Lit_Colon ':'>}
                                      {(SQ <' \\([^ ]*\\)'>)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'pend='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'pend='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name pend>
                                  var_name: pend
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VOp1_Pound '#'>
                                      arg_word: {<' '> ($ Id.VSub_DollarName p)}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                )
                              )
                            }
                        )
                      ]
                      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 rewritten)) <'/'> 
                                      ($ Id.VSub_DollarName p)
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'new_p='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'new_p='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'new_p='> name:new_p)
                                  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 rewritten)) <'/'> 
                                                ($ Id.VSub_DollarName p)
                                              }
                                            ]
                                            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>} {<-z>} {(DQ ($ Id.VSub_DollarName new_p))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'new_p='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'new_p='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'new_p='>
                                              name: new_p
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (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 _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [2006 2017]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {($ Id.VSub_DollarName p)}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {($ Id.VSub_DollarName new_p)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'fast_forward='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'fast_forward='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'fast_forward='>
                                          name: fast_forward
                                        )
                                      op: assign_op.Equal
                                      rhs: {<f>}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.Case
                              case_kw: <Id.KW_Case case>
                              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName new_parents))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_Star '*'> ($ Id.VSub_DollarName new_p) 
                                          <Id.Lit_Star '*'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: []
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'new_parents='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'new_parents='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'new_parents='>
                                              name: new_parents
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName new_parents) <' '> 
                                                ($ Id.VSub_DollarName new_p)
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                          ]
                          spids: [1965 1978]
                        )
                      ]
                      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>}
                                        {<-f>}
                                        {(DQ ($ Id.VSub_DollarName dropped)) <'/'> 
                                          ($ Id.VSub_DollarName p)
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'fast_forward='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'fast_forward='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'fast_forward='>
                                          name: fast_forward
                                        )
                                      op: assign_op.Equal
                                      rhs: {<f>}
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'replacement='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'replacement='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'replacement='>
                                          name: replacement
                                        )
                                      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 dropped)) <'/'> 
                                                      ($ Id.VSub_DollarName p)
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName replacement))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'replacement='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'replacement='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'replacement='>
                                              name: replacement
                                            )
                                          op: assign_op.Equal
                                          rhs: {<root>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'pend='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'pend='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pend='> name:pend)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ <' '> ($ Id.VSub_DollarName replacement) 
                                            ($ Id.VSub_DollarName pend)
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [2091 2104]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'new_parents='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'new_parents='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'new_parents='>
                                      name: new_parents
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName new_parents) <' '> 
                                        ($ Id.VSub_DollarName p)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName fast_forward)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <t>
                  pattern: (pat.Words words:[{<t>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <output>
                      more_env: []
                      words: [
                        {<output>}
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Fast-forward to '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <sha1>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <output>
                          more_env: []
                          words: [{<output>} {<git>} {<reset>} {<--hard>} {($ Id.VSub_DollarName 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 fast-forward to '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <sha1>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <f>
                  pattern: (pat.Words words:[{<f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'first_parent='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'first_parent='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'first_parent='>
                              name: first_parent
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <expr>
                                    more_env: []
                                    words: [
                                      {<expr>}
                                      {(DQ ($ Id.VSub_DollarName new_parents))}
                                      {<Id.Lit_Colon ':'>}
                                      {(SQ <' \\([^ ]*\\)'>)}
                                    ]
                                    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: <Id.Lit_LBracket '['>
                                  more_env: []
                                  words: [
                                    {<Id.Lit_LBracket '['>}
                                    {(DQ ($ Id.VSub_Number 1))}
                                    {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                    {(DQ <-n>)}
                                    {<Id.Lit_RBracket ']'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <output>
                                  more_env: []
                                  words: [
                                    {<output>}
                                    {<git>}
                                    {<checkout>}
                                    {($ Id.VSub_DollarName first_parent)}
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Great '2>'>
                                      loc: (redir_loc.Fd fd:2)
                                      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: <eval_gettext>
                                              more_env: []
                                              words: [
                                                {<eval_gettext>}
                                                {
                                                  (DQ <'Cannot move HEAD to '> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <first_parent>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          spids: [2247 2265]
                        )
                      ]
                      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 new_parents))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_SingleQuote '\''>
                          pattern: 
                            (pat.Words
                              words: [{(SQ <' '>) <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_Star '*'>}]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ <a> ($ Id.VSub_Number 1))}
                                    {<Id.Lit_Equals '='>}
                                    {<a-n>}
                                  ]
                                  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 <'Refusing to squash a merge: '> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <sha1>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'author_script_content='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'author_script_content='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'author_script_content='>
                                      name: author_script_content
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (CommandSub
                                        left_token: <Id.Left_DollarParen '$('>
                                        child: 
                                          (command.Simple
                                            blame_tok: <get_author_ident_from_commit>
                                            more_env: []
                                            words: [
                                              {<get_author_ident_from_commit>}
                                              {($ Id.VSub_DollarName sha1)}
                                            ]
                                            redirects: []
                                            do_fork: T
                                          )
                                        right: <Id.Eof_RParen _>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <eval>
                              more_env: []
                              words: [{<eval>} {(DQ ($ Id.VSub_DollarName author_script_content))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'msg_content='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'msg_content='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'msg_content='>
                                      name: msg_content
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <commit_message>
                                              more_env: []
                                              words: [{<commit_message>} {($ Id.VSub_DollarName sha1)}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'new_parents='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'new_parents='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'new_parents='>
                                      name: new_parents
                                    )
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name new_parents>
                                        var_name: new_parents
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VOp1_Pound '#'>
                                            arg_word: {<' '> ($ Id.VSub_DollarName first_parent)}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'merge_args='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'merge_args='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'merge_args='>
                                      name: merge_args
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <'--no-log --no-ff'>)}
                                )
                              ]
                              redirects: []
                            )
                            (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.Simple
                                              blame_tok: <do_with_author>
                                              more_env: []
                                              words: [
                                                {<do_with_author>}
                                                {<output>}
                                                {<eval>}
                                                {
                                                  (SQ 
                                                    <
'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \\\n'
                                                    > <'\t\t\t\t$merge_args $strategy_args -m "$msg_content" $new_parents'>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <printf>
                                      more_env: []
                                      words: [
                                        {<printf>}
                                        {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                        {(DQ ($ Id.VSub_DollarName msg_content))}
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_Great '>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <die_with_patch>
                                      more_env: []
                                      words: [
                                        {<die_with_patch>}
                                        {($ Id.VSub_DollarName sha1)}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <eval_gettext>
                                                  more_env: []
                                                  words: [
                                                    {<eval_gettext>}
                                                    {
                                                      (DQ <'Error redoing merge '> 
                                                        (word_part.EscapedLiteral
                                                          token: <Id.Lit_EscapedChar '\\$'>
                                                          ch: '$'
                                                        ) <sha1>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  spids: [2403 2421]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {
                                  (DQ ($ Id.VSub_DollarName sha1) <' '> 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <git>
                                          more_env: []
                                          words: [{<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_DGreat '>>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName rewritten_list))}
                                )
                              ]
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <output>
                                  more_env: []
                                  words: [
                                    {<output>}
                                    {<eval>}
                                    {<git>}
                                    {<cherry-pick>}
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name gpg_sign_opt>
                                        var_name: gpg_sign_opt
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VTest_ColonPlus _>
                                            arg_word: 
                                              {
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <git>
                                                      more_env: []
                                                      words: [
                                                        {<git>}
                                                        {<rev-parse>}
                                                        {<--sq-quote>}
                                                        {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  right: <Id.Eof_RParen _>
                                                )
                                              }
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                    {(DQ ($ Id.VSub_DollarName strategy_args))}
                                    {(DQ ($ Id.VSub_At '@'))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <die_with_patch>
                                  more_env: []
                                  words: [
                                    {<die_with_patch>}
                                    {($ Id.VSub_DollarName sha1)}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <eval_gettext>
                                              more_env: []
                                              words: [
                                                {<eval_gettext>}
                                                {
                                                  (DQ <'Could not pick '> 
                                                    (word_part.EscapedLiteral
                                                      token: <Id.Lit_EscapedChar '\\$'>
                                                      ch: '$'
                                                    ) <sha1>
                                                  )
                                                }
                                              ]
                                              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: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <this_nth_commit_message>
      name: this_nth_commit_message
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'n='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'n='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval_gettext>
              more_env: []
              words: [
                {<eval_gettext>}
                {
                  (DQ <'This is the commit message #'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'{n}:'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <skip_nth_commit_message>
      name: skip_nth_commit_message
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'n='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'n='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval_gettext>
              more_env: []
              words: [
                {<eval_gettext>}
                {
                  (DQ <'The commit message #'> 
                    (word_part.EscapedLiteral
                      token: <Id.Lit_EscapedChar '\\$'>
                      ch: '$'
                    ) <'{n} will be skipped:'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <update_squash_messages>
      name: update_squash_messages
      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: <test>
                              more_env: []
                              words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName squash_msg))}]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <mv>
                          more_env: []
                          words: [
                            {<mv>}
                            {(DQ ($ Id.VSub_DollarName squash_msg))}
                            {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Exit exit>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'count='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'count='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: 
                                      {
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <sed>
                                              more_env: []
                                              words: [
                                                {<sed>}
                                                {<-n>}
                                                {<-e>}
                                                {
                                                  (DQ <'1s/^'> ($ Id.VSub_DollarName comment_char) 
                                                    <'.*'> <Id.Lit_BadBackslash '\\'> <'([0-9][0-9]*'> <Id.Lit_BadBackslash '\\'> <').*/'> 
                                                    <Id.Lit_BadBackslash '\\'> <'1/p'>
                                                  )
                                                }
                                                {<-e>}
                                                {(DQ <q>)}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Less '<'>
                                                  loc: (redir_loc.Fd fd:0)
                                                  arg: {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      }
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (BraceGroup
                      left: <Id.Lit_LBrace '{'>
                      children: [
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {(SQ <'%s\\n'>)}
                            {
                              (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <eval_ngettext>
                                      more_env: []
                                      words: [
                                        {<eval_ngettext>}
                                        {
                                          (DQ <'This is a combination of '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'count commit.'>
                                          )
                                        }
                                        {
                                          (DQ <'This is a combination of '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'count commits.'>
                                          )
                                        }
                                        {($ Id.VSub_DollarName count)}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sed>
                          more_env: []
                          words: [
                            {<sed>}
                            {<-e>}
                            {<1d>}
                            {<-e>}
                            {(SQ <'2,/^./{\n'> <'\t\t\t\t/^$/d\n'> <'\t\t\t}'>)}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_DollarName squash_msg)) <.bak>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName squash_msg))}
                        )
                      ]
                      right: <Id.Lit_RBrace '}'>
                    )
                  ]
                  spids: [2618 2629]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <commit_message>
                      more_env: []
                      words: [{<commit_message>} {<HEAD>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName fixup_msg))}
                        )
                      ]
                      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 write '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <fixup_msg>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'count='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'count='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'count='> name:count)
                      op: assign_op.Equal
                      rhs: {<2>}
                    )
                  ]
                  redirects: []
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'This is a combination of 2 commits.'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [{<gettext>} {(DQ <'This is the 1st commit message:'>)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <cat>
                      more_env: []
                      words: [{<cat>} {(DQ ($ Id.VSub_DollarName fixup_msg))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName squash_msg))}
                    )
                  ]
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_Number 1)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <squash>
                  pattern: (pat.Words words:[{<squash>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName fixup_msg))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <this_nth_commit_message>
                                  more_env: []
                                  words: [{<this_nth_commit_message>} {($ Id.VSub_DollarName count)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <commit_message>
                      more_env: []
                      words: [{<commit_message>} {($ Id.VSub_Number 2)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <fixup>
                  pattern: (pat.Words words:[{<fixup>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <skip_nth_commit_message>
                                  more_env: []
                                  words: [{<skip_nth_commit_message>} {($ Id.VSub_DollarName count)}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <commit_message>
                          more_env: []
                          words: [{<commit_message>} {($ Id.VSub_Number 2)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<stripspace>} {<--comment-lines>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sed>
                          more_env: []
                          words: [{<sed>} {<-e>} {(SQ <'s/ /\t/'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName squash_msg))}
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <peek_next_command>
      name: peek_next_command
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<stripspace>} {<--strip-comments>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-n>} {<-e>} {(SQ <'s/ .*//p'>)} {<-e>} {<q>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <die_failed_squash>
      name: die_failed_squash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sha1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sha1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'rest='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'rest='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [
                    {<mv>}
                    {(DQ ($ Id.VSub_DollarName squash_msg))}
                    {(DQ ($ Id.VSub_DollarName msg))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName fixup_msg))}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <cp>
                  more_env: []
                  words: [
                    {<cp>}
                    {(DQ ($ Id.VSub_DollarName msg))}
                    {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [{<warn>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <warn>
              more_env: []
              words: [
                {<warn>}
                {
                  (DQ 
                    (CommandSub
                      left_token: <Id.Left_DollarParen '$('>
                      child: 
                        (command.Simple
                          blame_tok: <eval_gettext>
                          more_env: []
                          words: [
                            {<eval_gettext>}
                            {
                              (DQ <'Could not apply '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      right: <Id.Eof_RParen _>
                    )
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <die_with_patch>
              more_env: []
              words: [{<die_with_patch>} {($ Id.VSub_DollarName sha1)} {(DQ )}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <flush_rewritten_pending>
      name: flush_rewritten_pending
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName rewritten_pending))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'newsha1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'newsha1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newsha1='> name:newsha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <sed>
              more_env: []
              words: [
                {<sed>}
                {(DQ <'s/'> <Id.Lit_Dollar '$'> <'/ '> ($ Id.VSub_DollarName newsha1) <'/'>)}
              ]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName rewritten_pending))}
                )
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName rewritten_list))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName rewritten_pending))}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <record_in_rewritten>
      name: record_in_rewritten
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'oldsha1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'oldsha1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'oldsha1='> name:oldsha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<rev-parse>} {($ Id.VSub_Number 1)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName oldsha1))}]
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName rewritten_pending))}
                )
              ]
              do_fork: T
            )
            (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: <peek_next_command>
                              more_env: []
                              words: [{<peek_next_command>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <squash>
                  pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <flush_rewritten_pending>
                      more_env: []
                      words: [{<flush_rewritten_pending>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_pick>
      name: do_pick
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'sha1='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'sha1='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 1)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'rest='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'rest='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number 2)}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [{<git>} {<rev-parse>} {<HEAD>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                            {<Id.Lit_Equals '='>}
                            {(DQ ($ Id.VSub_DollarName squash_onto))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<commit>}
                            {<--allow-empty>}
                            {<--allow-empty-message>}
                            {<--amend>}
                            {<--no-post-rewrite>}
                            {<-n>}
                            {<-q>}
                            {<-C>}
                            {($ Id.VSub_DollarName sha1)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <pick_one>
                          more_env: []
                          words: [{<pick_one>} {<-n>} {($ Id.VSub_DollarName sha1)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<commit>}
                            {<--allow-empty>}
                            {<--allow-empty-message>}
                            {<--amend>}
                            {<--no-post-rewrite>}
                            {<-n>}
                            {<-q>}
                            {<-C>}
                            {($ Id.VSub_DollarName sha1)}
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name gpg_sign_opt>
                                var_name: gpg_sign_opt
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die_with_patch>
                          more_env: []
                          words: [
                            {<die_with_patch>}
                            {($ Id.VSub_DollarName sha1)}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <eval_gettext>
                                      more_env: []
                                      words: [
                                        {<eval_gettext>}
                                        {
                                          (DQ <'Could not apply '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                  ]
                  spids: [3270 3291]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.AndOr
                  children: [
                    (command.Simple
                      blame_tok: <pick_one>
                      more_env: []
                      words: [{<pick_one>} {($ Id.VSub_DollarName sha1)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die_with_patch>
                      more_env: []
                      words: [
                        {<die_with_patch>}
                        {($ Id.VSub_DollarName sha1)}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Could not apply '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'sha1... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: [<Id.Op_DPipe _>]
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_next>
      name: do_next
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [
                    {<rm>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName msg))}
                    {(DQ ($ Id.VSub_DollarName author_script))}
                    {(DQ ($ Id.VSub_DollarName amend))}
                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <read>
              more_env: []
              words: [{<read>} {<-r>} {<command>} {<sha1>} {<rest>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_DollarName todo))}
                )
              ]
              do_fork: T
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName command))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: 
                    (pat.Words
                      words: [
                        {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>}
                        {(SQ )}
                        {<noop>}
                        {<drop>}
                        {<d>}
                      ]
                    )
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Left_DoubleQuote '"'>
                  pattern: (pat.Words words:[{(DQ ($ Id.VSub_DollarName cr))}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <pick>
                  pattern: (pat.Words words:[{<pick>} {<p>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <comment_for_reflog>
                      more_env: []
                      words: [{<comment_for_reflog>} {<pick>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <do_pick>
                      more_env: []
                      words: [
                        {<do_pick>}
                        {($ Id.VSub_DollarName sha1)}
                        {(DQ ($ Id.VSub_DollarName rest))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <record_in_rewritten>
                      more_env: []
                      words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <reword>
                  pattern: (pat.Words words:[{<reword>} {<r>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <comment_for_reflog>
                      more_env: []
                      words: [{<comment_for_reflog>} {<reword>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <do_pick>
                      more_env: []
                      words: [
                        {<do_pick>}
                        {($ Id.VSub_DollarName sha1)}
                        {(DQ ($ Id.VSub_DollarName rest))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<commit>}
                            {<--amend>}
                            {<--no-post-rewrite>}
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name gpg_sign_opt>
                                var_name: gpg_sign_opt
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (BraceGroup
                          left: <Id.Lit_LBrace '{'>
                          children: [
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <eval_gettext>
                                          more_env: []
                                          words: [
                                            {<eval_gettext>}
                                            {
                                              (DQ 
                                                <
'Could not amend commit after successfully picking '
                                                > (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sha1... '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <'rest\n'> <'This is most likely due to an empty commit message, or the pre-commit hook\n'> 
                                                <
'failed. If the pre-commit hook failed, you may need to resolve the issue before\n'
                                                > <'you are able to reword the commit.'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <exit_with_patch>
                              more_env: []
                              words: [{<exit_with_patch>} {($ Id.VSub_DollarName sha1)} {<1>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          redirects: []
                          right: <Id.Lit_RBrace '}'>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <record_in_rewritten>
                      more_env: []
                      words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <edit>
                  pattern: (pat.Words words:[{<edit>} {<e>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <comment_for_reflog>
                      more_env: []
                      words: [{<comment_for_reflog>} {<edit>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <do_pick>
                      more_env: []
                      words: [
                        {<do_pick>}
                        {($ Id.VSub_DollarName sha1)}
                        {(DQ ($ Id.VSub_DollarName rest))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'sha1_abbrev='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'sha1_abbrev='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'sha1_abbrev='>
                              name: sha1_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 sha1)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Stopped at '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'sha1_abbrev... '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <rest>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <exit_with_patch>
                      more_env: []
                      words: [{<exit_with_patch>} {($ Id.VSub_DollarName sha1)} {<0>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <squash>
                  pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName command))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <squash>
                          pattern: (pat.Words words:[{<squash>} {<s>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'squash_style='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'squash_style='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'squash_style='>
                                      name: squash_style
                                    )
                                  op: assign_op.Equal
                                  rhs: {<squash>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <fixup>
                          pattern: (pat.Words words:[{<fixup>} {<f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'squash_style='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'squash_style='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'squash_style='>
                                      name: squash_style
                                    )
                                  op: assign_op.Equal
                                  rhs: {<fixup>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <comment_for_reflog>
                      more_env: []
                      words: [{<comment_for_reflog>} {($ Id.VSub_DollarName squash_style)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName done))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <has_action>
                          more_env: []
                          words: [{<has_action>} {(DQ ($ Id.VSub_DollarName done))}]
                          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 \''> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <'squash_style\' without a previous commit'>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <update_squash_messages>
                      more_env: []
                      words: [
                        {<update_squash_messages>}
                        {($ Id.VSub_DollarName squash_style)}
                        {($ Id.VSub_DollarName sha1)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'author_script_content='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'author_script_content='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'author_script_content='>
                              name: author_script_content
                            )
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    blame_tok: <get_author_ident_from_commit>
                                    more_env: []
                                    words: [{<get_author_ident_from_commit>} {<HEAD>}]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName author_script_content))}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName author_script))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval>
                      more_env: []
                      words: [{<eval>} {(DQ ($ Id.VSub_DollarName author_script_content))}]
                      redirects: []
                      do_fork: T
                    )
                    (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.Simple
                                      blame_tok: <pick_one>
                                      more_env: []
                                      words: [{<pick_one>} {<-n>} {($ Id.VSub_DollarName sha1)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (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: {(DQ ($ Id.VSub_DollarName amend))}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <die_failed_squash>
                              more_env: []
                              words: [
                                {<die_failed_squash>}
                                {($ Id.VSub_DollarName sha1)}
                                {(DQ ($ Id.VSub_DollarName rest))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [3852 3863]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (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: <peek_next_command>
                                      more_env: []
                                      words: [{<peek_next_command>}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <squash>
                          pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}])
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <do_with_author>
                                  more_env: []
                                  words: [
                                    {<do_with_author>}
                                    {<output>}
                                    {<git>}
                                    {<commit>}
                                    {<--amend>}
                                    {<--no-verify>}
                                    {<-F>}
                                    {(DQ ($ Id.VSub_DollarName squash_msg))}
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name gpg_sign_opt>
                                        var_name: gpg_sign_opt
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VTest_ColonPlus _>
                                            arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                          )
                                        right: <Id.Right_DollarBrace '}'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <die_failed_squash>
                                  more_env: []
                                  words: [
                                    {<die_failed_squash>}
                                    {($ Id.VSub_DollarName sha1)}
                                    {(DQ ($ Id.VSub_DollarName rest))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              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.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 fixup_msg))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <do_with_author>
                                          more_env: []
                                          words: [
                                            {<do_with_author>}
                                            {<git>}
                                            {<commit>}
                                            {<--amend>}
                                            {<--no-verify>}
                                            {<-F>}
                                            {(DQ ($ Id.VSub_DollarName fixup_msg))}
                                            {
                                              (BracedVarSub
                                                left: <Id.Left_DollarBrace '${'>
                                                token: <Id.VSub_Name gpg_sign_opt>
                                                var_name: gpg_sign_opt
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op: <Id.VTest_ColonPlus _>
                                                    arg_word: 
                                                      {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                                  )
                                                right: <Id.Right_DollarBrace '}'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <die_failed_squash>
                                          more_env: []
                                          words: [
                                            {<die_failed_squash>}
                                            {($ Id.VSub_DollarName sha1)}
                                            {(DQ ($ Id.VSub_DollarName rest))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  spids: [3972 3983]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <cp>
                                      more_env: []
                                      words: [
                                        {<cp>}
                                        {(DQ ($ Id.VSub_DollarName squash_msg))}
                                        {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/SQUASH_MSG'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Exit exit>
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [
                                    {<rm>}
                                    {<-f>}
                                    {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/MERGE_MSG'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <do_with_author>
                                      more_env: []
                                      words: [
                                        {<do_with_author>}
                                        {<git>}
                                        {<commit>}
                                        {<--amend>}
                                        {<--no-verify>}
                                        {<-F>}
                                        {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/SQUASH_MSG'>}
                                        {<-e>}
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name gpg_sign_opt>
                                            var_name: gpg_sign_opt
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_ColonPlus _>
                                                arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <die_failed_squash>
                                      more_env: []
                                      words: [
                                        {<die_failed_squash>}
                                        {($ Id.VSub_DollarName sha1)}
                                        {(DQ ($ Id.VSub_DollarName rest))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <rm>
                              more_env: []
                              words: [
                                {<rm>}
                                {<-f>}
                                {(DQ ($ Id.VSub_DollarName squash_msg))}
                                {(DQ ($ Id.VSub_DollarName fixup_msg))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <record_in_rewritten>
                      more_env: []
                      words: [{<record_in_rewritten>} {($ Id.VSub_DollarName sha1)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <x>
                  pattern: (pat.Words words:[{<x>} {(DQ <exec>)}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<-r>} {<command>} {<rest>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mark_action_done>
                      more_env: []
                      words: [{<mark_action_done>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <eval_gettextln>
                      more_env: []
                      words: [
                        {<eval_gettextln>}
                        {
                          (DQ <'Executing: '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\$'>
                              ch: '$'
                            ) <rest>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <Id.Left_DoubleQuote '"'>
                      more_env: []
                      words: [
                        {
                          (DQ 
                            (BracedVarSub
                              left: <Id.Left_DollarBrace '${'>
                              token: <Id.VSub_Name SHELL>
                              var_name: SHELL
                              suffix_op: 
                                (suffix_op.Unary
                                  op: <Id.VTest_ColonHyphen _>
                                  arg_word: {<'@SHELL_PATH@'>}
                                )
                              right: <Id.Right_DollarBrace '}'>
                            )
                          )
                        }
                        {<-c>}
                        {(DQ ($ Id.VSub_DollarName rest))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (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.ShAssignment
                      left: <Id.Lit_VarLike 'dirty='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'dirty='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirty='> name:dirty)
                          op: assign_op.Equal
                          rhs: {<f>}
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Subshell
                          left: <Id.Op_LParen _>
                          child: 
                            (command.Simple
                              blame_tok: <require_clean_work_tree>
                              more_env: []
                              words: [{<require_clean_work_tree>} {(DQ <rebase>)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '2>'>
                                  loc: (redir_loc.Fd fd:2)
                                  arg: {<'/dev/null'>}
                                )
                              ]
                              do_fork: T
                            )
                          right: <Id.Right_Subshell _>
                          redirects: []
                        )
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'dirty='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'dirty='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dirty='> name:dirty)
                              op: assign_op.Equal
                              rhs: {<t>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {(DQ ($ Id.VSub_DollarName status))} {<-ne>} {<0>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <eval_gettext>
                                          more_env: []
                                          words: [
                                            {<eval_gettext>}
                                            {
                                              (DQ <'Execution failed: '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <rest>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_DollarName dirty))}
                                    {<Id.Lit_Equals '='>}
                                    {<f>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <warn>
                                  more_env: []
                                  words: [
                                    {<warn>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <gettext>
                                              more_env: []
                                              words: [
                                                {<gettext>}
                                                {
                                                  (DQ 
                                                    <
'and made changes to the index and/or the working tree'
                                                    >
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [
                                            {<gettext>}
                                            {
                                              (DQ <'You can fix the problem, and then run\n'> <'\n'> 
                                                <'\tgit rebase --continue'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [{<warn>}]
                              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>}
                                            {($ Id.VSub_DollarName status)}
                                            {<-eq>}
                                            {<127>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'status='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'status='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'status='>
                                              name: status
                                            )
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [4283 4297]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {(DQ ($ Id.VSub_DollarName status))}
                            )
                          ]
                          spids: [4206 4219]
                        )
                        (IfArm
                          keyword: <Id.KW_Elif elif>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_DollarName dirty))}
                                    {<Id.Lit_Equals '='>}
                                    {<t>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <eval_gettext>
                                          more_env: []
                                          words: [
                                            {<eval_gettext>}
                                            {
                                              (DQ <'Execution succeeded: '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\$'>
                                                  ch: '$'
                                                ) <'rest\n'> <'but left changes to the index and/or the working tree\n'> 
                                                <'Commit or stash your changes, and then run\n'> <'\n'> <'\tgit rebase --continue'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [{<warn>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Exit exit>
                              arg_word: {<1>}
                            )
                          ]
                          spids: [4314 4327]
                        )
                      ]
                      else_action: []
                      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.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Unknown command: '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'command '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'sha1 '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <rest>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'fixtodo='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'fixtodo='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixtodo='> name:fixtodo)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [
                                        {<gettext>}
                                        {(DQ <'Please fix this using \'git rebase --edit-todo\'.'>)}
                                      ]
                                      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>}
                                    {<rev-parse>}
                                    {<--verify>}
                                    {<-q>}
                                    {(DQ ($ Id.VSub_DollarName sha1))}
                                  ]
                                  redirects: [
                                    (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: <die_with_patch>
                              more_env: []
                              words: [
                                {<die_with_patch>}
                                {($ Id.VSub_DollarName sha1)}
                                {(DQ ($ Id.VSub_DollarName fixtodo))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [4403 4421]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [{<die>} {(DQ ($ Id.VSub_DollarName fixtodo))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <comment_for_reflog>
                  more_env: []
                  words: [{<comment_for_reflog>} {<finish>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'newhead='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'newhead='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'newhead='> name:newhead)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (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 _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.Case
                  case_kw: <Id.KW_Case case>
                  to_match: (case_arg.Word w:{($ 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.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 ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': '> 
                                        ($ Id.VSub_DollarName head_name) <' onto '> ($ Id.VSub_DollarName onto)
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<update-ref>}
                                {<-m>}
                                {(DQ ($ Id.VSub_DollarName message))}
                                {($ Id.VSub_DollarName head_name)}
                                {($ Id.VSub_DollarName newhead)}
                                {($ Id.VSub_DollarName orig_head)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<symbolic-ref>}
                                {<-m>}
                                {
                                  (DQ ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': returning to '> 
                                    ($ Id.VSub_DollarName head_name)
                                  )
                                }
                                {<HEAD>}
                                {($ Id.VSub_DollarName head_name)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [
                            {<test>}
                            {<Id.KW_Bang '!'>}
                            {<-f>}
                            {(DQ ($ Id.VSub_DollarName state_dir)) <'/verbose'>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<diff-tree>}
                            {<--stat>}
                            {($ Id.VSub_DollarName orig_head) <..HEAD>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName rewritten_list))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<notes>}
                            {<copy>}
                            {<--for-rewrite> <Id.Lit_Equals '='> <rebase>}
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_DollarName rewritten_list))}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'hook='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'hook='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hook='> name:hook)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [{<git>} {<rev-parse>} {<--git-path>} {<'hooks/post-rewrite'>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName hook))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<-s>}
                                        {(DQ ($ Id.VSub_DollarName rewritten_list))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                              terminator: <Id.Op_Semi _>
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [{(DQ ($ Id.VSub_DollarName hook))} {<rebase>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_DollarName rewritten_list))}
                            )
                          ]
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <true>
                          more_env: []
                          words: [{<true>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [4646 4667]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <warn>
                  more_env: []
                  words: [
                    {<warn>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_gettext>
                              more_env: []
                              words: [
                                {<eval_gettext>}
                                {
                                  (DQ <'Successfully rebased and updated '> 
                                    (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 _>]
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Return return> arg_word:{<1>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <do_rest>
      name: do_rest
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <Id.Lit_Colon ':'>
                      more_env: []
                      words: [{<Id.Lit_Colon ':'>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <do_next>
                          more_env: []
                          words: [{<do_next>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Break break>
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <skip_unnecessary_picks>
      name: skip_unnecessary_picks
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'fd='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'fd='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fd='> name:fd)
                  op: assign_op.Equal
                  rhs: {<3>}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<-r>} {<command>} {<rest>}]
                          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_DollarName fd) <','> ($ Id.VSub_DollarName command))}
                            )
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <3>
                              pattern: 
                                (pat.Words
                                  words: [{<3> <Id.Lit_Comma ','> <pick>} {<3> <Id.Lit_Comma ','> <p>}]
                                )
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'sha1='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'sha1='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1='> name:sha1)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name rest>
                                            var_name: rest
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VOp1_DPercent '%%'>
                                                arg_word: {<' '> <Id.Lit_Other '*'>}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (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>}
                                                    {<rev-parse>}
                                                    {<--verify>}
                                                    {<--quiet>}
                                                    {(DQ ($ Id.VSub_DollarName sha1)) 
                                                      <Id.Lit_Other '^'>
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                    )
                                  arms_start: <Id.KW_In in>
                                  arms: [
                                    (CaseArm
                                      left: <Id.Left_DoubleQuote '"'>
                                      pattern: 
                                        (pat.Words
                                          words: [{(DQ ($ Id.VSub_DollarName onto)) <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: {($ Id.VSub_DollarName sha1)}
                                            )
                                          ]
                                          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 'fd='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'fd='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'fd='>
                                                  name: fd
                                                )
                                              op: assign_op.Equal
                                              rhs: {<1>}
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      right: <Id.Op_DSemi _>
                                    )
                                  ]
                                  arms_end: <Id.KW_Esac esac>
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <3>
                              pattern: 
                                (pat.Words
                                  words: [
                                    {<3> <Id.Lit_Comma ','> (DQ ($ Id.VSub_DollarName comment_char)) 
                                      <Id.Lit_Star '*'>
                                    }
                                    {<3> <Id.Lit_Comma ','>}
                                  ]
                                )
                              middle: <Id.Right_CasePat _>
                              action: []
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'fd='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'fd='>
                                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fd='> name:fd)
                                      op: assign_op.Equal
                                      rhs: {<1>}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {(SQ <'%s\\n'>)}
                            {
                              (DQ ($ Id.VSub_DollarName command) 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name rest>
                                  var_name: rest
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonPlus _>
                                      arg_word: {<' '>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                ) ($ Id.VSub_DollarName rest)
                              )
                            }
                          ]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {($ Id.VSub_DollarName fd)}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo) <.new>)}
                    )
                    (Redir
                      op: <Id.Redir_DGreat '3>>'>
                      loc: (redir_loc.Fd fd:3)
                      arg: {(DQ ($ Id.VSub_DollarName done))}
                    )
                  ]
                )
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [
                    {<mv>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                    {(DQ ($ Id.VSub_DollarName todo))}
                  ]
                  redirects: []
                  do_fork: T
                )
                (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: <peek_next_command>
                                  more_env: []
                                  words: [{<peek_next_command>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                    )
                  arms_start: <Id.KW_In in>
                  arms: [
                    (CaseArm
                      left: <squash>
                      pattern: (pat.Words words:[{<squash>} {<s>} {<fixup>} {<f>}])
                      middle: <Id.Right_CasePat _>
                      action: [
                        (command.Simple
                          blame_tok: <record_in_rewritten>
                          more_env: []
                          words: [{<record_in_rewritten>} {(DQ ($ Id.VSub_DollarName onto))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.Op_DSemi _>
                    )
                  ]
                  arms_end: <Id.KW_Esac esac>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Could not skip unnecessary pick commands'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <transform_todo_ids>
      name: transform_todo_ids
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<-r>} {<command>} {<rest>}]
                          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_DollarName command))})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <Id.Left_DoubleQuote '"'>
                              pattern: 
                                (pat.Words
                                  words: [
                                    {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>}
                                    {<exec>}
                                  ]
                                )
                              middle: <Id.Right_CasePat _>
                              action: []
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.AndOr
                                  children: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'sha1='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'sha1='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'sha1='>
                                              name: sha1
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <git>
                                                    more_env: []
                                                    words: [
                                                      {<git>}
                                                      {<rev-parse>}
                                                      {<--verify>}
                                                      {<--quiet>}
                                                      {(DQ ($ Id.VSub_At '@'))}
                                                      {
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name rest>
                                                          var_name: rest
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_DPercent '%%'>
                                                              arg_word: {<'[\t ]'> <Id.Lit_Other '*'>}
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      }
                                                    ]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'rest='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'rest='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'rest='>
                                              name: rest
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName sha1) <' '> 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name rest>
                                                  var_name: rest
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VOp1_Pound '#'>
                                                      arg_word: {<Id.Lit_Other '*'> <'[\t ]'>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  ops: [<Id.Op_DAmp _>]
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {(SQ <'%s\\n'>)}
                            {
                              (DQ ($ Id.VSub_DollarName command) 
                                (BracedVarSub
                                  left: <Id.Left_DollarBrace '${'>
                                  token: <Id.VSub_Name rest>
                                  var_name: rest
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op: <Id.VTest_ColonPlus _>
                                      arg_word: {<' '>}
                                    )
                                  right: <Id.Right_DollarBrace '}'>
                                ) ($ Id.VSub_DollarName rest)
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo) <.new>)}
                    )
                  ]
                )
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [
                    {<mv>}
                    {<-f>}
                    {(DQ ($ Id.VSub_DollarName todo) <.new>)}
                    {(DQ ($ Id.VSub_DollarName todo))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <expand_todo_ids>
      name: expand_todo_ids
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <transform_todo_ids>
              more_env: []
              words: [{<transform_todo_ids>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <collapse_todo_ids>
      name: collapse_todo_ids
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <transform_todo_ids>
              more_env: []
              words: [{<transform_todo_ids>} {<--short>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rearrange_squash>
      name: rearrange_squash
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<-r>} {<pick>} {<sha1>} {<message>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}]
                          redirects: []
                          do_fork: T
                        )
                        (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: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<log>}
                                          {<-n>}
                                          {<1>}
                                          {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)}
                                          {(${ Id.VSub_Name sha1)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName message))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: 
                            (pat.Words
                              words: [
                                {(DQ <'squash! '>) <Id.Lit_Star '*'>}
                                {(DQ <'fixup! '>) <Id.Lit_Star '*'>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (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: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name message>
                                          var_name: message
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VOp1_DPercent '%%'>
                                              arg_word: {<Id.Lit_Other '!'> <Id.Lit_Other '*'>}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'rest='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'rest='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rest='> name:rest)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName message)}
                                )
                              ]
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'prefix='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'prefix='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prefix='> name:prefix)
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                            (command.WhileUntil
                              keyword: <Id.KW_While while>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <Id.Lit_Colon ':'>
                                      more_env: []
                                      words: [{<Id.Lit_Colon ':'>}]
                                      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_DollarName rest))})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <Id.Left_DoubleQuote '"'>
                                          pattern: 
                                            (pat.Words
                                              words: [
                                                {(DQ <'squash! '>) <Id.Lit_Star '*'>}
                                                {(DQ <'fixup! '>) <Id.Lit_Star '*'>}
                                              ]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'prefix='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'prefix='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'prefix='>
                                                      name: prefix
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName prefix) 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name rest>
                                                          var_name: rest
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_DPercent '%%'>
                                                              arg_word: 
                                                                {<Id.Lit_Other '!'> 
                                                                  <Id.Lit_Other '*'>
                                                                }
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        ) <','>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'rest='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'rest='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'rest='>
                                                      name: rest
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (BracedVarSub
                                                          left: <Id.Left_DollarBrace '${'>
                                                          token: <Id.VSub_Name rest>
                                                          var_name: rest
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op: <Id.VOp1_Pound '#'>
                                                              arg_word: 
                                                                {<Id.Lit_Other '*'> 
                                                                  <Id.Lit_Other '!'> <' '>
                                                                }
                                                            )
                                                          right: <Id.Right_DollarBrace '}'>
                                                        )
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                        (CaseArm
                                          left: <Id.Lit_Star '*'>
                                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ControlFlow
                                              keyword: <Id.ControlFlow_Break break>
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.KW_Done done>
                                )
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <printf>
                              more_env: []
                              words: [
                                {<printf>}
                                {(SQ <'%s %s %s %s\\n'>)}
                                {(DQ ($ Id.VSub_DollarName sha1))}
                                {(DQ ($ Id.VSub_DollarName action))}
                                {(DQ ($ Id.VSub_DollarName prefix))}
                                {(DQ ($ Id.VSub_DollarName rest))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (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: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name rest>
                                                      var_name: rest
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_Pound '#'>
                                                          arg_word: {<Id.Lit_Other '*'> <' '>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                                {<Id.Lit_Equals '='>}
                                                {(DQ ($ Id.VSub_DollarName rest))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'fullsha='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'fullsha='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'fullsha='>
                                              name: fullsha
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (CommandSub
                                                  left_token: <Id.Left_DollarParen '$('>
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <git>
                                                      more_env: []
                                                      words: [
                                                        {<git>}
                                                        {<rev-parse>}
                                                        {<-q>}
                                                        {<--verify>}
                                                        {(DQ ($ Id.VSub_DollarName rest))}
                                                      ]
                                                      redirects: [
                                                        (Redir
                                                          op: <Id.Redir_Great '2>'>
                                                          loc: (redir_loc.Fd fd:2)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                      ]
                                                      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.Sentence
                                                  child: 
                                                    (command.Simple
                                                      blame_tok: <test>
                                                      more_env: []
                                                      words: [
                                                        {<test>}
                                                        {<-n>}
                                                        {(DQ ($ Id.VSub_DollarName fullsha))}
                                                      ]
                                                      redirects: []
                                                      do_fork: T
                                                    )
                                                  terminator: <Id.Op_Semi _>
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [
                                                {<echo>}
                                                {
                                                  (DQ ($ Id.VSub_DollarName sha1) <' +'> 
                                                    ($ Id.VSub_DollarName action) <' '> ($ Id.VSub_DollarName prefix) <' '> ($ Id.VSub_DollarName fullsha)
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          spids: [5469 5480]
                                        )
                                      ]
                                      else_action: []
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                  ]
                                  spids: [5425 5445]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_Number 1) <.sq>)}
                )
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-s>} {(DQ ($ Id.VSub_Number 1) <.sq>)}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'used='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'used='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'used='> name:used)
                  op: assign_op.Equal
                  rhs: (rhs_word__Empty)
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<-r>} {<pick>} {<sha1>} {<message>}]
                      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_DollarName used))})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_Star '*'> (DQ <' '> ($ Id.VSub_DollarName sha1) <' '>) 
                                  <Id.Lit_Star '*'>
                                }
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName pick) <' '> ($ Id.VSub_DollarName sha1) <' '> 
                            ($ Id.VSub_DollarName message)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ (${ Id.VSub_Name format))}]
                          redirects: []
                          do_fork: T
                        )
                        (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: 
                                {
                                  (CommandSub
                                    left_token: <Id.Left_DollarParen '$('>
                                    child: 
                                      (command.Simple
                                        blame_tok: <git>
                                        more_env: []
                                        words: [
                                          {<git>}
                                          {<log>}
                                          {<-n>}
                                          {<1>}
                                          {<--format> <Id.Lit_Equals '='> (DQ <'%s'>)}
                                          {(${ Id.VSub_Name sha1)}
                                        ]
                                        redirects: []
                                        do_fork: T
                                      )
                                    right: <Id.Eof_RParen _>
                                  )
                                }
                            )
                          ]
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'used='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'used='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'used='> name:used)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName used) ($ Id.VSub_DollarName sha1) <' '>)}
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<-r>} {<squash>} {<action>} {<msg_prefix>} {<msg_content>}]
                              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_DollarName used))})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: 
                                    (pat.Words
                                      words: [
                                        {<Id.Lit_Star '*'> 
                                          (DQ <' '> ($ Id.VSub_DollarName squash) <' '>) <Id.Lit_Star '*'>
                                        }
                                      ]
                                    )
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.ControlFlow
                                      keyword: <Id.ControlFlow_Continue continue>
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'emit='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'emit='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'emit='> name:emit)
                                  op: assign_op.Equal
                                  rhs: {<0>}
                                )
                              ]
                              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.Lit_Other '+'>
                                  pattern: (pat.Words words:[{<Id.Lit_Other '+'> <Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (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: 
                                            {
                                              (DQ 
                                                (BracedVarSub
                                                  left: <Id.Left_DollarBrace '${'>
                                                  token: <Id.VSub_Name action>
                                                  var_name: action
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op: <Id.VOp1_Pound '#'>
                                                      arg_word: {<Id.Lit_Other '+'>}
                                                    )
                                                  right: <Id.Right_DollarBrace '}'>
                                                )
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: 
                                        (case_arg.Word
                                          w: {(DQ ($ Id.VSub_DollarName msg_content))}
                                        )
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <Id.Left_DoubleQuote '"'>
                                          pattern: 
                                            (pat.Words
                                              words: [
                                                {(DQ ($ Id.VSub_DollarName sha1)) <Id.Lit_Star '*'>}
                                              ]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'emit='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'emit='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'emit='>
                                                      name: emit
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<1>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                                (CaseArm
                                  left: <Id.Lit_Star '*'>
                                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.Case
                                      case_kw: <Id.KW_Case case>
                                      to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName message))})
                                      arms_start: <Id.KW_In in>
                                      arms: [
                                        (CaseArm
                                          left: <Id.Left_DoubleQuote '"'>
                                          pattern: 
                                            (pat.Words
                                              words: [
                                                {(DQ ($ Id.VSub_DollarName msg_content)) 
                                                  <Id.Lit_Star '*'>
                                                }
                                              ]
                                            )
                                          middle: <Id.Right_CasePat _>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'emit='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'emit='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'emit='>
                                                      name: emit
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: {<1>}
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.Op_DSemi _>
                                        )
                                      ]
                                      arms_end: <Id.KW_Esac esac>
                                      redirects: []
                                    )
                                  ]
                                  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.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <test>
                                              more_env: []
                                              words: [
                                                {<test>}
                                                {($ Id.VSub_DollarName emit)}
                                                {<Id.Lit_Equals '='>}
                                                {<1>}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                      ]
                                    )
                                  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_Name format))}]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              ]
                                            )
                                          then_kw: <Id.KW_Then then>
                                          action: [
                                            (command.ShAssignment
                                              left: <Id.Lit_VarLike 'msg_content='>
                                              pairs: [
                                                (AssignPair
                                                  left: <Id.Lit_VarLike 'msg_content='>
                                                  lhs: 
                                                    (sh_lhs_expr.Name
                                                      left: <Id.Lit_VarLike 'msg_content='>
                                                      name: msg_content
                                                    )
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (CommandSub
                                                        left_token: <Id.Left_DollarParen '$('>
                                                        child: 
                                                          (command.Simple
                                                            blame_tok: <git>
                                                            more_env: []
                                                            words: [
                                                              {<git>}
                                                              {<log>}
                                                              {<-n>}
                                                              {<1>}
                                                              {<--format> <Id.Lit_Equals '='> 
                                                                (DQ (${ Id.VSub_Name format))
                                                              }
                                                              {(${ Id.VSub_Name squash)}
                                                            ]
                                                            redirects: []
                                                            do_fork: T
                                                          )
                                                        right: <Id.Eof_RParen _>
                                                      )
                                                    }
                                                )
                                              ]
                                              redirects: []
                                            )
                                          ]
                                          spids: [5793 5806]
                                        )
                                      ]
                                      else_kw: <Id.KW_Else else>
                                      else_action: [
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'msg_content='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'msg_content='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'msg_content='>
                                                  name: msg_content
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (CommandSub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: 
                                                        (command.Pipeline
                                                          children: [
                                                            (command.Simple
                                                              blame_tok: <echo>
                                                              more_env: []
                                                              words: [
                                                                {<echo>}
                                                                {
                                                                  (DQ 
                                                                    ($ Id.VSub_DollarName msg_prefix)
                                                                  )
                                                                }
                                                              ]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                            (command.Simple
                                                              blame_tok: <sed>
                                                              more_env: []
                                                              words: [{<sed>} {(DQ <'s/,/! /g'>)}]
                                                              redirects: []
                                                              do_fork: T
                                                            )
                                                          ]
                                                          ops: [<Id.Op_Pipe _>]
                                                        )
                                                      right: <Id.Eof_RParen _>
                                                    ) ($ Id.VSub_DollarName msg_content)
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                      ]
                                      fi_kw: <Id.KW_Fi fi>
                                      redirects: []
                                    )
                                    (command.Simple
                                      blame_tok: <printf>
                                      more_env: []
                                      words: [
                                        {<printf>}
                                        {(SQ <'%s\\n'>)}
                                        {
                                          (DQ ($ Id.VSub_DollarName action) <' '> 
                                            ($ Id.VSub_DollarName squash) <' '> ($ Id.VSub_DollarName msg_content)
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'used='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'used='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'used='>
                                              name: used
                                            )
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName used) 
                                                ($ Id.VSub_DollarName squash) <' '>
                                              )
                                            }
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [5779 5790]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_Number 1) <.sq>)}
                        )
                      ]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_Number 1) <.rearranged>)}
                )
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>} {(DQ ($ Id.VSub_Number 1) <.rearranged>)}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm>
              more_env: []
              words: [
                {<rm>}
                {<-f>}
                {(DQ ($ Id.VSub_Number 1) <.sq>)}
                {(DQ ($ Id.VSub_Number 1) <.rearranged>)}
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <add_exec_commands>
      name: add_exec_commands
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'first='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'first='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first)
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <read>
                              more_env: []
                              words: [{<read>} {<-r>} {<insn>} {<rest>}]
                              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:{($ Id.VSub_DollarName insn)})
                              arms_start: <Id.KW_In in>
                              arms: [
                                (CaseArm
                                  left: <pick>
                                  pattern: (pat.Words words:[{<pick>}])
                                  middle: <Id.Right_CasePat _>
                                  action: [
                                    (command.AndOr
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName first))}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <printf>
                                          more_env: []
                                          words: [
                                            {<printf>}
                                            {(DQ <'%s'>)}
                                            {(DQ ($ Id.VSub_DollarName cmd))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: [<Id.Op_DPipe _>]
                                    )
                                  ]
                                  right: <Id.Op_DSemi _>
                                )
                              ]
                              arms_end: <Id.KW_Esac esac>
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <printf>
                              more_env: []
                              words: [
                                {<printf>}
                                {(DQ <'%s %s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                {(DQ ($ Id.VSub_DollarName insn))}
                                {(DQ ($ Id.VSub_DollarName rest))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'first='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'first='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'first='> name:first)
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [{<printf>} {(DQ <'%s'>)} {(DQ ($ Id.VSub_DollarName cmd))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_Number 1))}
                    )
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 1) <.new>)}
                    )
                  ]
                  right: <Id.Lit_RBrace '}'>
                )
                (command.Simple
                  blame_tok: <mv>
                  more_env: []
                  words: [{<mv>} {(DQ ($ Id.VSub_Number 1) <.new>)} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <check_commit_sha>
      name: check_commit_sha
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'badsha='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'badsha='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              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_Number 1))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'badsha='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'badsha='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [6104 6115]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'sha1_verif='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'sha1_verif='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sha1_verif='> name:sha1_verif)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<rev-parse>}
                                    {<--verify>}
                                    {<--quiet>}
                                    {($ Id.VSub_Number 1) <Id.Lit_Other '^'> <Id.Lit_LBrace '{'> 
                                      <commit> <Id.Lit_RBrace '}'>
                                    }
                                  ]
                                  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>} {<-z>} {(DQ ($ Id.VSub_DollarName sha1_verif))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'badsha='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'badsha='>
                              lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'badsha='> name:badsha)
                              op: assign_op.Equal
                              rhs: {<1>}
                            )
                          ]
                          redirects: []
                        )
                      ]
                      spids: [6145 6156]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  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>} {($ Id.VSub_DollarName badsha)} {<-ne>} {<0>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'line='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'line='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <sed>
                                      more_env: []
                                      words: [
                                        {<sed>}
                                        {<-n>}
                                        {<-e>}
                                        {(DQ (${ Id.VSub_Number 2) <p>)}
                                        {(DQ ($ Id.VSub_Number 3))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ 
                                        <
'Warning: the SHA-1 is missing or isn\'t a commit in the following line:\n'
                                        > <' - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <line>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [{<warn>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [6170 6181]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName badsha)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <check_bad_cmd_and_sha>
      name: check_bad_cmd_and_sha
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'retval='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'retval='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'lineno='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'lineno='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<-r>} {<command>} {<rest>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'lineno='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'lineno='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'lineno='> name:lineno)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName lineno)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName command)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: 
                            (pat.Words
                              words: [
                                {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>}
                                {(SQ )}
                                {<noop>}
                                {<x>}
                                {<exec>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Left_DoubleQuote '"'>
                          pattern: (pat.Words words:[{(DQ ($ Id.VSub_DollarName cr))}])
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <pick>
                          pattern: 
                            (pat.Words
                              words: [
                                {<pick>}
                                {<p>}
                                {<drop>}
                                {<d>}
                                {<reword>}
                                {<r>}
                                {<edit>}
                                {<e>}
                                {<squash>}
                                {<s>}
                                {<fixup>}
                                {<f>}
                              ]
                            )
                          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.Simple
                                              blame_tok: <check_commit_sha>
                                              more_env: []
                                              words: [
                                                {<check_commit_sha>}
                                                {
                                                  (DQ 
                                                    (BracedVarSub
                                                      left: <Id.Left_DollarBrace '${'>
                                                      token: <Id.VSub_Name rest>
                                                      var_name: rest
                                                      suffix_op: 
                                                        (suffix_op.Unary
                                                          op: <Id.VOp1_DPercent '%%'>
                                                          arg_word: {<'[ \t]'> <Id.Lit_Other '*'>}
                                                        )
                                                      right: <Id.Right_DollarBrace '}'>
                                                    )
                                                  )
                                                }
                                                {(DQ ($ Id.VSub_DollarName lineno))}
                                                {(DQ ($ Id.VSub_Number 1))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'retval='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'retval='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'retval='>
                                              name: retval
                                            )
                                          op: assign_op.Equal
                                          rhs: {<1>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                  ]
                                  spids: [6360 6384]
                                )
                              ]
                              else_action: []
                              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.ShAssignment
                              left: <Id.Lit_VarLike 'line='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'line='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'line='> name:line)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <sed>
                                              more_env: []
                                              words: [
                                                {<sed>}
                                                {<-n>}
                                                {<-e>}
                                                {(DQ (${ Id.VSub_Name lineno) <p>)}
                                                {(DQ ($ Id.VSub_Number 1))}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <eval_gettext>
                                          more_env: []
                                          words: [
                                            {<eval_gettext>}
                                            {
                                              (DQ 
                                                <
'Warning: the command isn\'t recognized in the following line:\n'
                                                > <' - '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <line>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [{<warn>}]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'retval='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'retval='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'retval='> name:retval)
                                  op: assign_op.Equal
                                  rhs: {<1>}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: [
                (Redir
                  op: <Id.Redir_Less '<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
            )
            (command.ControlFlow
              keyword: <Id.ControlFlow_Return return>
              arg_word: {($ Id.VSub_DollarName retval)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <todo_list_to_sha_list>
      name: todo_list_to_sha_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<stripspace>} {<--strip-comments>}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<-r>} {<command>} {<sha1>} {<rest>}]
                          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:{($ Id.VSub_DollarName command)})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <Id.Left_DoubleQuote '"'>
                              pattern: 
                                (pat.Words
                                  words: [
                                    {(DQ ($ Id.VSub_DollarName comment_char)) <Id.Lit_Star '*'>}
                                    {(SQ )}
                                    {<noop>}
                                    {<x>}
                                    {(DQ <exec>)}
                                  ]
                                )
                              middle: <Id.Right_CasePat _>
                              action: []
                              right: <Id.Op_DSemi _>
                            )
                            (CaseArm
                              left: <Id.Lit_Star '*'>
                              pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'long_sha='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'long_sha='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'long_sha='>
                                          name: long_sha
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<rev-list>}
                                                  {<--no-walk>}
                                                  {(DQ ($ Id.VSub_DollarName sha1))}
                                                ]
                                                redirects: [
                                                  (Redir
                                                    op: <Id.Redir_Great '2>'>
                                                    loc: (redir_loc.Fd fd:2)
                                                    arg: {<'/dev/null'>}
                                                  )
                                                ]
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                    )
                                  ]
                                  redirects: []
                                )
                                (command.Simple
                                  blame_tok: <printf>
                                  more_env: []
                                  words: [
                                    {<printf>}
                                    {(DQ <'%s'> <Id.Lit_BadBackslash '\\'> <n>)}
                                    {(DQ ($ Id.VSub_DollarName long_sha))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <warn_lines>
      name: warn_lines
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<-r>} {<line>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [{<warn>} {(DQ <' - '> ($ Id.VSub_DollarName line))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <checkout_onto>
      name: checkout_onto
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (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 ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> 
                        ($ Id.VSub_DollarName onto_name)
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <output>
                  more_env: []
                  words: [{<output>} {<git>} {<checkout>} {($ Id.VSub_DollarName onto)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die_abort>
                  more_env: []
                  words: [
                    {<die_abort>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'could not detach HEAD'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <git>
              more_env: []
              words: [{<git>} {<update-ref>} {<ORIG_HEAD>} {($ Id.VSub_DollarName orig_head)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <get_missing_commit_check_level>
      name: get_missing_commit_check_level
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'check_level='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'check_level='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<config>} {<--get>} {<rebase.missingCommitsCheck>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'check_level='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'check_level='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name check_level>
                        var_name: check_level
                        suffix_op: (suffix_op.Unary op:<Id.VTest_ColonHyphen _> arg_word:{<ignore>})
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <printf>
                  more_env: []
                  words: [{<printf>} {(SQ <'%s'>)} {(DQ ($ Id.VSub_DollarName check_level))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <tr>
                  more_env: []
                  words: [{<tr>} {(SQ <A-Z>)} {(SQ <a-z>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <check_todo_list>
      name: check_todo_list
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'raise_error='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'raise_error='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'raise_error='> name:raise_error)
                  op: assign_op.Equal
                  rhs: {<f>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'check_level='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'check_level='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'check_level='> name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <get_missing_commit_check_level>
                            more_env: []
                            words: [{<get_missing_commit_check_level>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName check_level))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <warn>
                  pattern: (pat.Words words:[{<warn>} {<error>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <todo_list_to_sha_list>
                      more_env: []
                      words: [{<todo_list_to_sha_list>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.backup>}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <todo_list_to_sha_list>
                      more_env: []
                      words: [{<todo_list_to_sha_list>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sort>
                      more_env: []
                      words: [{<sort>} {<-u>} {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1> <Id.Lit_Other '+'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [
                        {<mv>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1> <Id.Lit_Other '+'>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <sort>
                      more_env: []
                      words: [{<sort>} {<-u>} {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.newsha1> <Id.Lit_Other '+'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [
                        {<mv>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.newsha1> <Id.Lit_Other '+'>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <comm>
                      more_env: []
                      words: [
                        {<comm>}
                        {<-2>}
                        {<-3>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.oldsha1>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.newsha1>}
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.miss>}
                        )
                      ]
                      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>} {<-s>} {(DQ ($ Id.VSub_DollarName todo)) <.miss>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {(DQ ($ Id.VSub_DollarName check_level))}
                                    {<Id.Lit_Equals '='>}
                                    {<error>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'raise_error='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'raise_error='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'raise_error='>
                                          name: raise_error
                                        )
                                      op: assign_op.Equal
                                      rhs: {<t>}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [
                                            {<gettext>}
                                            {
                                              (DQ 
                                                <
'Warning: some commits may have been dropped accidentally.\n'
                                                > <'Dropped commits (newer to older):'>
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'opt='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'opt='>
                                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'opt='> name:opt)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        <
'--no-walk=sorted --format=oneline --abbrev-commit --stdin'
                                        >
                                      )
                                    }
                                )
                              ]
                              redirects: []
                            )
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [{<git>} {<rev-list>} {($ Id.VSub_DollarName opt)}]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_Less '<'>
                                      loc: (redir_loc.Fd fd:0)
                                      arg: {(DQ ($ Id.VSub_DollarName todo)) <.miss>}
                                    )
                                  ]
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <warn_lines>
                                  more_env: []
                                  words: [{<warn_lines>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_Pipe _>]
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [
                                {<warn>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [
                                            {<gettext>}
                                            {
                                              (DQ <'To avoid this message, use '> 
                                                (word_part.EscapedLiteral
                                                  token: <Id.Lit_EscapedChar '\\"'>
                                                  ch: '"'
                                                ) <drop> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"') 
                                                <' to explicitly remove a commit.\n'> <'\n'> <'Use \'git config rebase.missingCommitsCheck\' to change the level of warnings.\n'> 
                                                <
'The possible behaviours are: ignore, warn, error.'
                                                >
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <warn>
                              more_env: []
                              words: [{<warn>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [6902 6914]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <ignore>
                  pattern: (pat.Words words:[{<ignore>}])
                  middle: <Id.Right_CasePat _>
                  action: []
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <eval_gettext>
                                  more_env: []
                                  words: [
                                    {<eval_gettext>}
                                    {
                                      (DQ <'Unrecognized setting '> 
                                        (word_part.EscapedLiteral
                                          token: <Id.Lit_EscapedChar '\\$'>
                                          ch: '$'
                                        ) <'check_level for option rebase.missingCommitsCheck. Ignoring.'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      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.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <check_bad_cmd_and_sha>
                              more_env: []
                              words: [{<check_bad_cmd_and_sha>} {(DQ ($ Id.VSub_DollarName todo))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'raise_error='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'raise_error='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'raise_error='>
                              name: raise_error
                            )
                          op: assign_op.Equal
                          rhs: {<t>}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7041 7052]
                )
              ]
              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>}
                            {($ Id.VSub_DollarName raise_error)}
                            {<Id.Lit_Equals '='>}
                            {<t>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <checkout_onto>
                      more_env: []
                      words: [{<checkout_onto>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <warn>
                      more_env: []
                      words: [
                        {<warn>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {
                                      (DQ 
                                        <
'You can fix this with \'git rebase --edit-todo\' and then run \'git rebase --continue\'.'
                                        >
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {
                          (DQ 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {
                                      (DQ 
                                        <'Or you can abort the rebase with \'git rebase --abort\'.'>
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [7063 7074]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git_rebase__interactive>
      name: git_rebase__interactive
      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 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.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>} {<diff-index>} {<--cached>} {<--quiet>} {<HEAD>} {<-->}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [
                                    {<test>}
                                    {<Id.KW_Bang '!'>}
                                    {<-f>}
                                    {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/CHERRY_PICK_HEAD'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <rm>
                                  more_env: []
                                  words: [
                                    {<rm>}
                                    {(DQ ($ Id.VSub_DollarName GIT_DIR)) <'/CHERRY_PICK_HEAD'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.Simple
                                  blame_tok: <die>
                                  more_env: []
                                  words: [
                                    {<die>}
                                    {
                                      (DQ 
                                        (CommandSub
                                          left_token: <Id.Left_DollarParen '$('>
                                          child: 
                                            (command.Simple
                                              blame_tok: <gettext>
                                              more_env: []
                                              words: [
                                                {<gettext>}
                                                {(DQ <'Could not remove CHERRY_PICK_HEAD'>)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
                            )
                          ]
                          spids: [7179 7194]
                        )
                      ]
                      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.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <test>
                                          more_env: []
                                          words: [
                                            {<test>}
                                            {<-f>}
                                            {(DQ ($ Id.VSub_DollarName author_script))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'gpg_sign_opt_quoted='>
                                          name: gpg_sign_opt_quoted
                                        )
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name gpg_sign_opt>
                                            var_name: gpg_sign_opt
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_ColonPlus _>
                                                arg_word: 
                                                  {
                                                    (CommandSub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: 
                                                        (command.Simple
                                                          blame_tok: <git>
                                                          more_env: []
                                                          words: [
                                                            {<git>}
                                                            {<rev-parse>}
                                                            {<--sq-quote>}
                                                            {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      right: <Id.Eof_RParen _>
                                                    )
                                                  }
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                    )
                                  ]
                                  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 
                                                    <
'You have staged changes in your working tree.\n'
                                                    > <'If these changes are meant to be\n'> <'squashed into the previous commit, run:\n'> <'\n'> 
                                                    <'  git commit --amend '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'gpg_sign_opt_quoted\n'> <'\n'> 
                                                    <
'If they are meant to go into a new commit, run:\n'
                                                    > <'\n'> <'  git commit '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                                    <'gpg_sign_opt_quoted\n'> <'\n'> <'In both cases, once you\'re done, continue with:\n'> <'\n'> <'  git rebase --continue\n'>
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              spids: [7242 7255]
                            )
                          ]
                          else_action: []
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <.>
                              more_env: []
                              words: [{<.>} {(DQ ($ Id.VSub_DollarName author_script))}]
                              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 
                                                <
'Error trying to find the author identity to amend commit'
                                                >
                                              )
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DPipe _>]
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [{<test>} {<-f>} {(DQ ($ Id.VSub_DollarName amend))}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'current_head='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'current_head='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'current_head='>
                                          name: current_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.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {(DQ ($ Id.VSub_DollarName current_head))}
                                        {<Id.Lit_Equals '='>}
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <cat>
                                                more_env: []
                                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName amend))}]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <die>
                                      more_env: []
                                      words: [
                                        {<die>}
                                        {
                                          (DQ 
                                            (CommandSub
                                              left_token: <Id.Left_DollarParen '$('>
                                              child: 
                                                (command.Simple
                                                  blame_tok: <gettext>
                                                  more_env: []
                                                  words: [
                                                    {<gettext>}
                                                    {
                                                      (DQ 
                                                        <
'You have uncommitted changes in your working tree. Please commit them\n'
                                                        > <'first and then run \'git rebase --continue\' again.'>
                                                      )
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                                (command.AndOr
                                  children: [
                                    (command.Simple
                                      blame_tok: <do_with_author>
                                      more_env: []
                                      words: [
                                        {<do_with_author>}
                                        {<git>}
                                        {<commit>}
                                        {<--amend>}
                                        {<--no-verify>}
                                        {<-F>}
                                        {(DQ ($ Id.VSub_DollarName msg))}
                                        {<-e>}
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name gpg_sign_opt>
                                            var_name: gpg_sign_opt
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_ColonPlus _>
                                                arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                              )
                                            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 <'Could not commit staged changes.'>)}
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                              right: <Id.Eof_RParen _>
                                            )
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: [<Id.Op_DPipe _>]
                                )
                              ]
                              spids: [7331 7342]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <do_with_author>
                                  more_env: []
                                  words: [
                                    {<do_with_author>}
                                    {<git>}
                                    {<commit>}
                                    {<--no-verify>}
                                    {<-F>}
                                    {(DQ ($ Id.VSub_DollarName msg))}
                                    {<-e>}
                                    {
                                      (BracedVarSub
                                        left: <Id.Left_DollarBrace '${'>
                                        token: <Id.VSub_Name gpg_sign_opt>
                                        var_name: gpg_sign_opt
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op: <Id.VTest_ColonPlus _>
                                            arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                          )
                                        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 <'Could not commit staged changes.'>)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          right: <Id.Eof_RParen _>
                                        )
                                      )
                                    }
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              ops: [<Id.Op_DPipe _>]
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          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>}
                                    {<-r>}
                                    {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <record_in_rewritten>
                              more_env: []
                              words: [
                                {<record_in_rewritten>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <cat>
                                          more_env: []
                                          words: [
                                            {<cat>}
                                            {(DQ ($ Id.VSub_DollarName state_dir)) <'/stopped-sha'>}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [7487 7499]
                        )
                      ]
                      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>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <do_rest>
                      more_env: []
                      words: [{<do_rest>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <skip>
                  pattern: (pat.Words words:[{<skip>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<rerere>} {<clear>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <do_rest>
                      more_env: []
                      words: [{<do_rest>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {<0>}
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <edit-todo>
                  pattern: (pat.Words words:[{<edit-todo>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<stripspace>} {<--strip-comments>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                        )
                        (Redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <mv>
                      more_env: []
                      words: [
                        {<mv>}
                        {<-f>}
                        {(DQ ($ Id.VSub_DollarName todo)) <.new>}
                        {(DQ ($ Id.VSub_DollarName todo))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <collapse_todo_ids>
                      more_env: []
                      words: [{<collapse_todo_ids>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <append_todo_help>
                      more_env: []
                      words: [{<append_todo_help>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <gettext>
                          more_env: []
                          words: [
                            {<gettext>}
                            {
                              (DQ <'\n'> 
                                <
'You are editing the todo file of an ongoing interactive rebase.\n'
                                > <'To continue rebase after editing, run:\n'> <'    git rebase --continue\n'> <'\n'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<stripspace>} {<--comment-lines>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_DGreat '>>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(DQ ($ Id.VSub_DollarName todo))}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git_sequence_editor>
                          more_env: []
                          words: [{<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName todo))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <die>
                          more_env: []
                          words: [
                            {<die>}
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <gettext>
                                      more_env: []
                                      words: [{<gettext>} {(DQ <'Could not execute editor'>)}]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <expand_todo_ids>
                      more_env: []
                      words: [{<expand_todo_ids>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Exit exit>)
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <comment_for_reflog>
              more_env: []
              words: [{<comment_for_reflog>} {<start>}]
              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>}
                            {<Id.KW_Bang '!'>}
                            {<-z>}
                            {(DQ ($ Id.VSub_DollarName switch_to))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  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 ($ Id.VSub_DollarName GIT_REFLOG_ACTION) <': checkout '> 
                                ($ Id.VSub_DollarName switch_to)
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <output>
                          more_env: []
                          words: [
                            {<output>}
                            {<git>}
                            {<checkout>}
                            {(DQ ($ Id.VSub_DollarName switch_to))}
                            {<-->}
                          ]
                          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 checkout '> 
                                            (word_part.EscapedLiteral
                                              token: <Id.Lit_EscapedChar '\\$'>
                                              ch: '$'
                                            ) <switch_to>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <comment_for_reflog>
                      more_env: []
                      words: [{<comment_for_reflog>} {<start>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [7665 7677]
                )
              ]
              else_action: []
              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.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 HEAD?'>)}]
                              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: <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 create temporary '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <state_dir>
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (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)) <'/interactive'>}
                    )
                  ]
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [
                    {<die>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Could not mark as interactive'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <write_basic_state>
              more_env: []
              words: [{<write_basic_state>}]
              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>}
                            {<t>}
                            {<Id.Lit_Equals '='>}
                            {(DQ ($ Id.VSub_DollarName preserve_merges))}
                          ]
                          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>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.AndOr
                              children: [
                                (command.Simple
                                  blame_tok: <mkdir>
                                  more_env: []
                                  words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName rewritten))}]
                                  redirects: []
                                  do_fork: T
                                )
                                (command.ForEach
                                  keyword: <Id.KW_For for>
                                  iter_names: [c]
                                  iterable: 
                                    (for_iter.Words
                                      words: [
                                        {
                                          (CommandSub
                                            left_token: <Id.Left_DollarParen '$('>
                                            child: 
                                              (command.Simple
                                                blame_tok: <git>
                                                more_env: []
                                                words: [
                                                  {<git>}
                                                  {<merge-base>}
                                                  {<--all>}
                                                  {($ Id.VSub_DollarName orig_head)}
                                                  {($ Id.VSub_DollarName upstream)}
                                                ]
                                                redirects: []
                                                do_fork: T
                                              )
                                            right: <Id.Eof_RParen _>
                                          )
                                        }
                                      ]
                                    )
                                  body: 
                                    (command.DoGroup
                                      left: <Id.KW_Do do>
                                      children: [
                                        (command.AndOr
                                          children: [
                                            (command.Simple
                                              blame_tok: <echo>
                                              more_env: []
                                              words: [{<echo>} {($ Id.VSub_DollarName onto)}]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> 
                                                      ($ Id.VSub_DollarName c)
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <die>
                                              more_env: []
                                              words: [
                                                {<die>}
                                                {
                                                  (DQ 
                                                    (CommandSub
                                                      left_token: <Id.Left_DollarParen '$('>
                                                      child: 
                                                        (command.Simple
                                                          blame_tok: <gettext>
                                                          more_env: []
                                                          words: [
                                                            {<gettext>}
                                                            {
                                                              (DQ 
                                                                <'Could not init rewritten commits'>
                                                              )
                                                            }
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      right: <Id.Eof_RParen _>
                                                    )
                                                  )
                                                }
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_DPipe _>]
                                        )
                                      ]
                                      right: <Id.KW_Done done>
                                    )
                                  redirects: []
                                )
                              ]
                              ops: [<Id.Op_DAmp _>]
                            )
                          ]
                          spids: [7816 7827]
                        )
                      ]
                      else_kw: <Id.KW_Else else>
                      else_action: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <mkdir>
                              more_env: []
                              words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName rewritten))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [{<echo>} {($ Id.VSub_DollarName onto)}]
                              redirects: [
                                (Redir
                                  op: <Id.Redir_Great '>'>
                                  loc: (redir_loc.Fd fd:1)
                                  arg: {(DQ ($ Id.VSub_DollarName rewritten)) <'/root'>}
                                )
                              ]
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <die>
                              more_env: []
                              words: [
                                {<die>}
                                {
                                  (DQ 
                                    (CommandSub
                                      left_token: <Id.Left_DollarParen '$('>
                                      child: 
                                        (command.Simple
                                          blame_tok: <gettext>
                                          more_env: []
                                          words: [
                                            {<gettext>}
                                            {(DQ <'Could not init rewritten commits'>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      right: <Id.Eof_RParen _>
                                    )
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                        )
                      ]
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'merges_option='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'merges_option='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'merges_option='>
                              name: merges_option
                            )
                          op: assign_op.Equal
                          rhs: (rhs_word__Empty)
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7801 7813]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'merges_option='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'merges_option='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'merges_option='>
                          name: merges_option
                        )
                      op: assign_op.Equal
                      rhs: {(DQ <'--no-merges --cherry-pick'>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'shorthead='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'shorthead='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shorthead='> name:shorthead)
                  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 orig_head)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'shortonto='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'shortonto='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'shortonto='> name:shortonto)
                  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 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>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'shortupstream='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'shortupstream='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'shortupstream='>
                              name: shortupstream
                            )
                          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 upstream)}
                                    ]
                                    redirects: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (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: 
                            {($ Id.VSub_DollarName upstream) <Id.Lit_TDot ...> 
                              ($ Id.VSub_DollarName orig_head)
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'shortrevisions='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'shortrevisions='>
                          lhs: 
                            (sh_lhs_expr.Name
                              left: <Id.Lit_VarLike 'shortrevisions='>
                              name: shortrevisions
                            )
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName shortupstream) <..> 
                              ($ Id.VSub_DollarName shorthead)
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [7981 7995]
                )
              ]
              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: 
                        {($ Id.VSub_DollarName onto) <Id.Lit_TDot ...> 
                          ($ Id.VSub_DollarName orig_head)
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'shortrevisions='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'shortrevisions='>
                      lhs: 
                        (sh_lhs_expr.Name
                          left: <Id.Lit_VarLike 'shortrevisions='>
                          name: shortrevisions
                        )
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName shorthead)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'format='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'format='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'format='> name:format)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<config>} {<--get>} {<rebase.instructionFormat>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<rev-list>}
                    {($ Id.VSub_DollarName merges_option)}
                    {<--format> <Id.Lit_Equals '='> 
                      (DQ <'%m%H '> 
                        (BracedVarSub
                          left: <Id.Left_DollarBrace '${'>
                          token: <Id.VSub_Name format>
                          var_name: format
                          suffix_op: 
                            (suffix_op.Unary
                              op: <Id.VTest_ColonHyphen _>
                              arg_word: {<Id.Lit_Percent '%'> <s>}
                            )
                          right: <Id.Right_DollarBrace '}'>
                        )
                      )
                    }
                    {<--reverse>}
                    {<--left-right>}
                    {<--topo-order>}
                    {($ Id.VSub_DollarName revisions)}
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name restrict_revision>
                        var_name: restrict_revision
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_Plus _>
                            arg_word: {<'^'> ($ Id.VSub_DollarName restrict_revision)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <sed>
                  more_env: []
                  words: [{<sed>} {<-n>} {(DQ <'s/^>//p'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.WhileUntil
                  keyword: <Id.KW_While while>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <read>
                          more_env: []
                          words: [{<read>} {<-r>} {<sha1>} {<rest>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      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 keep_empty))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <is_empty_commit>
                                          more_env: []
                                          words: [{<is_empty_commit>} {($ Id.VSub_DollarName sha1)}]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Pipeline
                                          negated: <Id.KW_Bang '!'>
                                          children: [
                                            (command.Simple
                                              blame_tok: <is_merge_commit>
                                              more_env: []
                                              words: [{<is_merge_commit>} {($ Id.VSub_DollarName sha1)}]
                                              redirects: []
                                              do_fork: T
                                            )
                                          ]
                                          ops: []
                                        )
                                      ]
                                      ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'comment_out='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'comment_out='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'comment_out='>
                                          name: comment_out
                                        )
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName comment_char) <' '>)}
                                    )
                                  ]
                                  redirects: []
                                )
                              ]
                              spids: [8114 8139]
                            )
                          ]
                          else_kw: <Id.KW_Else else>
                          else_action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'comment_out='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'comment_out='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'comment_out='>
                                      name: comment_out
                                    )
                                  op: assign_op.Equal
                                  rhs: (rhs_word__Empty)
                                )
                              ]
                              redirects: []
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                        (command.If
                          if_kw: <Id.KW_If if>
                          arms: [
                            (IfArm
                              keyword: <Id.KW_If if>
                              cond: 
                                (condition.Shell
                                  commands: [
                                    (command.Simple
                                      blame_tok: <test>
                                      more_env: []
                                      words: [
                                        {<test>}
                                        {<t>}
                                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                        {(DQ ($ Id.VSub_DollarName preserve_merges))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                )
                              then_kw: <Id.KW_Then then>
                              action: [
                                (command.Simple
                                  blame_tok: <printf>
                                  more_env: []
                                  words: [
                                    {<printf>}
                                    {(SQ <'%s\\n'>)}
                                    {
                                      (DQ (${ Id.VSub_Name comment_out) <'pick '> 
                                        ($ Id.VSub_DollarName sha1) <' '> ($ Id.VSub_DollarName rest)
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (Redir
                                      op: <Id.Redir_DGreat '>>'>
                                      loc: (redir_loc.Fd fd:1)
                                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                                    )
                                  ]
                                  do_fork: T
                                )
                              ]
                              spids: [8159 8173]
                            )
                          ]
                          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 rebase_root))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.ShAssignment
                                      left: <Id.Lit_VarLike 'preserve='>
                                      pairs: [
                                        (AssignPair
                                          left: <Id.Lit_VarLike 'preserve='>
                                          lhs: 
                                            (sh_lhs_expr.Name
                                              left: <Id.Lit_VarLike 'preserve='>
                                              name: preserve
                                            )
                                          op: assign_op.Equal
                                          rhs: {<t>}
                                        )
                                      ]
                                      redirects: []
                                    )
                                    (command.ForEach
                                      keyword: <Id.KW_For for>
                                      iter_names: [p]
                                      iterable: 
                                        (for_iter.Words
                                          words: [
                                            {
                                              (CommandSub
                                                left_token: <Id.Left_DollarParen '$('>
                                                child: 
                                                  (command.Pipeline
                                                    children: [
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: []
                                                        words: [
                                                          {<git>}
                                                          {<rev-list>}
                                                          {<--parents>}
                                                          {<-1>}
                                                          {($ Id.VSub_DollarName sha1)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                      (command.Simple
                                                        blame_tok: <cut>
                                                        more_env: []
                                                        words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2->}]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    ops: [<Id.Op_Pipe _>]
                                                  )
                                                right: <Id.Eof_RParen _>
                                              )
                                            }
                                          ]
                                        )
                                      body: 
                                        (command.DoGroup
                                          left: <Id.KW_Do do>
                                          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 rewritten)) 
                                                              <'/'> ($ Id.VSub_DollarName p)
                                                            }
                                                          ]
                                                          redirects: []
                                                          do_fork: T
                                                        )
                                                      ]
                                                    )
                                                  then_kw: <Id.KW_Then then>
                                                  action: [
                                                    (command.ShAssignment
                                                      left: <Id.Lit_VarLike 'preserve='>
                                                      pairs: [
                                                        (AssignPair
                                                          left: <Id.Lit_VarLike 'preserve='>
                                                          lhs: 
                                                            (sh_lhs_expr.Name
                                                              left: <Id.Lit_VarLike 'preserve='>
                                                              name: preserve
                                                            )
                                                          op: assign_op.Equal
                                                          rhs: {<f>}
                                                        )
                                                      ]
                                                      redirects: []
                                                    )
                                                  ]
                                                  spids: [8254 8267]
                                                )
                                              ]
                                              else_action: []
                                              fi_kw: <Id.KW_Fi fi>
                                              redirects: []
                                            )
                                          ]
                                          right: <Id.KW_Done done>
                                        )
                                      redirects: []
                                    )
                                  ]
                                  spids: [8201 8212]
                                )
                              ]
                              else_kw: <Id.KW_Else else>
                              else_action: [
                                (command.ShAssignment
                                  left: <Id.Lit_VarLike 'preserve='>
                                  pairs: [
                                    (AssignPair
                                      left: <Id.Lit_VarLike 'preserve='>
                                      lhs: 
                                        (sh_lhs_expr.Name
                                          left: <Id.Lit_VarLike 'preserve='>
                                          name: preserve
                                        )
                                      op: assign_op.Equal
                                      rhs: {<f>}
                                    )
                                  ]
                                  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>}
                                            {<f>}
                                            {<Id.Lit_Equals '='>}
                                            {(DQ ($ Id.VSub_DollarName preserve))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                    )
                                  then_kw: <Id.KW_Then then>
                                  action: [
                                    (command.Simple
                                      blame_tok: <touch>
                                      more_env: []
                                      words: [
                                        {<touch>}
                                        {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> 
                                          ($ Id.VSub_DollarName sha1)
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                    (command.Simple
                                      blame_tok: <printf>
                                      more_env: []
                                      words: [
                                        {<printf>}
                                        {(SQ <'%s\\n'>)}
                                        {
                                          (DQ (${ Id.VSub_Name comment_out) <'pick '> 
                                            ($ Id.VSub_DollarName sha1) <' '> ($ Id.VSub_DollarName rest)
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (Redir
                                          op: <Id.Redir_DGreat '>>'>
                                          loc: (redir_loc.Fd fd:1)
                                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                                        )
                                      ]
                                      do_fork: T
                                    )
                                  ]
                                  spids: [8290 8303]
                                )
                              ]
                              else_action: []
                              fi_kw: <Id.KW_Fi fi>
                              redirects: []
                            )
                          ]
                          fi_kw: <Id.KW_Fi fi>
                          redirects: []
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: []
                )
              ]
              ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
            )
            (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>}
                            {<t>}
                            {<Id.Lit_Equals '='>}
                            {(DQ ($ Id.VSub_DollarName preserve_merges))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <mkdir>
                      more_env: []
                      words: [{<mkdir>} {(DQ ($ Id.VSub_DollarName dropped))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<rev-list>}
                            {($ Id.VSub_DollarName revisions)}
                            {<--left-right>}
                            {<--cherry-pick>}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <sed>
                          more_env: []
                          words: [{<sed>} {<-n>} {(DQ <'s/^>//p'>)}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Great '>'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/not-cherry-picks'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [{<git>} {<rev-list>} {($ Id.VSub_DollarName revisions)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.WhileUntil
                          keyword: <Id.KW_While while>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <read>
                                  more_env: []
                                  words: [{<read>} {<rev>}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          body: 
                            (command.DoGroup
                              left: <Id.KW_Do do>
                              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>}
                                                    {<-f>}
                                                    {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> 
                                                      ($ Id.VSub_DollarName rev)
                                                    }
                                                  ]
                                                  redirects: []
                                                  do_fork: T
                                                )
                                                (command.Pipeline
                                                  negated: <Id.KW_Bang '!'>
                                                  children: [
                                                    (command.Simple
                                                      blame_tok: <sane_grep>
                                                      more_env: []
                                                      words: [
                                                        {<sane_grep>}
                                                        {(DQ ($ Id.VSub_DollarName rev))}
                                                        {(DQ ($ Id.VSub_DollarName state_dir)) 
                                                          <'/not-cherry-picks'>
                                                        }
                                                      ]
                                                      redirects: [
                                                        (Redir
                                                          op: <Id.Redir_Great '>'>
                                                          loc: (redir_loc.Fd fd:1)
                                                          arg: {<'/dev/null'>}
                                                        )
                                                      ]
                                                      do_fork: T
                                                    )
                                                  ]
                                                  ops: []
                                                )
                                              ]
                                              ops: [<Id.Op_DAmp _>]
                                            )
                                          ]
                                        )
                                      then_kw: <Id.KW_Then then>
                                      action: [
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              blame_tok: <git>
                                              more_env: []
                                              words: [
                                                {<git>}
                                                {<rev-list>}
                                                {<--parents>}
                                                {<-1>}
                                                {($ Id.VSub_DollarName rev)}
                                              ]
                                              redirects: []
                                              do_fork: T
                                            )
                                            (command.Simple
                                              blame_tok: <cut>
                                              more_env: []
                                              words: [{<cut>} {<-d> (SQ <' '>)} {<-s>} {<-f2>}]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: 
                                                    {(DQ ($ Id.VSub_DollarName dropped)) <'/'> 
                                                      ($ Id.VSub_DollarName rev)
                                                    }
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          ]
                                          ops: [<Id.Op_Pipe _>]
                                        )
                                        (command.ShAssignment
                                          left: <Id.Lit_VarLike 'sha1='>
                                          pairs: [
                                            (AssignPair
                                              left: <Id.Lit_VarLike 'sha1='>
                                              lhs: 
                                                (sh_lhs_expr.Name
                                                  left: <Id.Lit_VarLike 'sha1='>
                                                  name: sha1
                                                )
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (CommandSub
                                                    left_token: <Id.Left_DollarParen '$('>
                                                    child: 
                                                      (command.Simple
                                                        blame_tok: <git>
                                                        more_env: []
                                                        words: [
                                                          {<git>}
                                                          {<rev-list>}
                                                          {<-1>}
                                                          {($ Id.VSub_DollarName rev)}
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    right: <Id.Eof_RParen _>
                                                  )
                                                }
                                            )
                                          ]
                                          redirects: []
                                        )
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              blame_tok: <sane_grep>
                                              more_env: []
                                              words: [
                                                {<sane_grep>}
                                                {<-v>}
                                                {(DQ <'^[a-z][a-z]* '> ($ Id.VSub_DollarName sha1))}
                                              ]
                                              redirects: [
                                                (Redir
                                                  op: <Id.Redir_Less '<'>
                                                  loc: (redir_loc.Fd fd:0)
                                                  arg: {(DQ ($ Id.VSub_DollarName todo))}
                                                )
                                                (Redir
                                                  op: <Id.Redir_Great '>'>
                                                  loc: (redir_loc.Fd fd:1)
                                                  arg: {(DQ (${ Id.VSub_Name todo) <2>)}
                                                )
                                              ]
                                              do_fork: T
                                            )
                                          terminator: <Id.Op_Semi _>
                                        )
                                        (command.Simple
                                          blame_tok: <mv>
                                          more_env: []
                                          words: [
                                            {<mv>}
                                            {(DQ (${ Id.VSub_Name todo) <2>)}
                                            {(DQ ($ Id.VSub_DollarName todo))}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                        (command.Simple
                                          blame_tok: <rm>
                                          more_env: []
                                          words: [
                                            {<rm>}
                                            {(DQ ($ Id.VSub_DollarName rewritten)) <'/'> 
                                              ($ Id.VSub_DollarName rev)
                                            }
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      spids: [8431 8463]
                                    )
                                  ]
                                  else_action: []
                                  fi_kw: <Id.KW_Fi fi>
                                  redirects: []
                                )
                              ]
                              right: <Id.KW_Done done>
                            )
                          redirects: []
                        )
                      ]
                      ops: [<Id.Op_Pipe _>]
                    )
                  ]
                  spids: [8348 8360]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<noop>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName autosquash))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <rearrange_squash>
                  more_env: []
                  words: [{<rearrange_squash>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName cmd))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <add_exec_commands>
                  more_env: []
                  words: [{<add_exec_commands>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'todocount='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'todocount='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todocount='> name:todocount)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<stripspace>} {<--strip-comments>}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Less '<'>
                                    loc: (redir_loc.Fd fd:0)
                                    arg: {(DQ ($ Id.VSub_DollarName todo))}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <wc>
                                more_env: []
                                words: [{<wc>} {<-l>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'todocount='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'todocount='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'todocount='> name:todocount)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name todocount>
                        var_name: todocount
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VOp1_DPound '##'>
                            arg_word: {<Id.Lit_Other '*'> <' '>}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <cat>
              more_env: []
              words: [{<cat>}]
              redirects: [
                (Redir
                  op: <Id.Redir_DGreat '>>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName todo))}
                )
                (Redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_tok: <Id.Undefined_Tok ''>
                      stdin_parts: [
                        <'\n'>
                        ($ Id.VSub_DollarName comment_char)
                        <' '>
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <eval_ngettext>
                              more_env: []
                              words: [
                                {<eval_ngettext>}
                                {
                                  (DQ <'Rebase '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                    <'shortonto ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'todocount command)'>
                                  )
                                }
                                {
                                  (DQ <'Rebase '> 
                                    (word_part.EscapedLiteral
                                      token: <Id.Lit_EscapedChar '\\$'>
                                      ch: '$'
                                    ) <'shortrevisions onto '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') 
                                    <'shortonto ('> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <'todocount commands)'>
                                  )
                                }
                                {(DQ ($ Id.VSub_DollarName todocount))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                        <'\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <append_todo_help>
              more_env: []
              words: [{<append_todo_help>}]
              redirects: []
              do_fork: T
            )
            (command.Pipeline
              children: [
                (command.Simple
                  blame_tok: <gettext>
                  more_env: []
                  words: [
                    {<gettext>}
                    {
                      (DQ <'\n'> <'However, if you remove everything, the rebase will be aborted.\n'> 
                        <'\n'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [{<git>} {<stripspace>} {<--comment-lines>}]
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName todo))}
                    )
                  ]
                  do_fork: T
                )
              ]
              ops: [<Id.Op_Pipe _>]
            )
            (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 keep_empty))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <printf>
                      more_env: []
                      words: [
                        {<printf>}
                        {(SQ <'%s\\n'>)}
                        {
                          (DQ ($ Id.VSub_DollarName comment_char) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <gettext>
                                  more_env: []
                                  words: [
                                    {<gettext>}
                                    {(DQ <'Note that empty commits are commented out'>)}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName todo))}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [8737 8747]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <has_action>
                  more_env: []
                  words: [{<has_action>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<2>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <cp>
              more_env: []
              words: [
                {<cp>}
                {(DQ ($ Id.VSub_DollarName todo))}
                {(DQ ($ Id.VSub_DollarName todo)) <.backup>}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <collapse_todo_ids>
              more_env: []
              words: [{<collapse_todo_ids>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <git_sequence_editor>
                  more_env: []
                  words: [{<git_sequence_editor>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die_abort>
                  more_env: []
                  words: [
                    {<die_abort>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <gettext>
                              more_env: []
                              words: [{<gettext>} {(DQ <'Could not execute editor'>)}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <has_action>
                  more_env: []
                  words: [{<has_action>} {(DQ ($ Id.VSub_DollarName todo))}]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<2>}
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <check_todo_list>
              more_env: []
              words: [{<check_todo_list>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <expand_todo_ids>
              more_env: []
              words: [{<expand_todo_ids>}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName rewritten))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName force_rebase))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <skip_unnecessary_picks>
                  more_env: []
                  words: [{<skip_unnecessary_picks>}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>]
            )
            (command.Simple
              blame_tok: <checkout_onto>
              more_env: []
              words: [{<checkout_onto>}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <do_rest>
              more_env: []
              words: [{<do_rest>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <git_rebase__interactive>
      more_env: []
      words: [{<git_rebase__interactive>}]
      redirects: []
      do_fork: T
    )
  ]
)