(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:todo)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/git-rebase-todo)}
          spids: [39]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:done)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/done)}
          spids: [55]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/message)}
          spids: [68]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:squash_msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/message-squash)}
          spids: [114]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fixup_msg)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/message-fixup)}
          spids: [136]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rewritten)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/rewritten)}
          spids: [161]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:dropped)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/dropped)}
          spids: [168]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:end)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/end)}
          spids: [175]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:msgnum)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/msgnum)}
          spids: [181]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:author_script)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/author-script)}
          spids: [197]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:amend)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/amend)}
          spids: [222]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rewritten_list)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/rewritten-list)}
          spids: [241]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rewritten_pending)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/rewritten-pending)}
          spids: [247]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:cr)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:261)
                command_list: 
                  (command.CommandList
                    children: [(C {(printf)} {(DQ (Id.Lit_Other '\\') (015))})]
                  )
              )
            }
          spids: [260]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:strategy_args)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: (Token id:Id.VSub_Name val:strategy span_id:273)
                suffix_op: 
                  (suffix_op.Unary
                    op_id: Id.VTest_ColonPlus
                    arg_word: {('--strategy=') ($ Id.VSub_DollarName '$strategy')}
                  )
              )
            }
          spids: [271]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$strategy_opts'))})
        (C {(eval)} 
          {
            (SQ (Token id:Id.Lit_Chars val:'\n' span_id:292) 
              (Token id:Id.Lit_Chars val:'\tfor strategy_opt in ' span_id:293)
            ) (DQ ($ Id.VSub_DollarName '$strategy_opts')) 
            (SQ (Token id:Id.Lit_Chars val:'\n' span_id:299) 
              (Token id:Id.Lit_Chars val:'\tdo\n' span_id:300) 
              (Token
                id: Id.Lit_Chars
                val: 
'\t\tstrategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"\n'
                span_id: 301
              ) (Token id:Id.Lit_Chars val:'\tdone\n' span_id:302)
            )
          }
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:GIT_CHERRY_PICK_HELP)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$resolvemsg'))}
          spids: [306]
        )
      ]
    )
    (C {(export)} {(GIT_CHERRY_PICK_HELP)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:comment_char)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:317)
                command_list: 
                  (command.CommandList
                    children: [
                      (command.Pipeline
                        children: [
                          (command.Simple
                            words: [{(git)} {(config)} {(--get)} {(core.commentchar)}]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Great val:'2>' span_id:326)
                                fd: 2
                                arg_word: {(/dev/null)}
                              )
                            ]
                          )
                          (C {(cut)} {(-c1)})
                        ]
                        negated: F
                      )
                    ]
                  )
              )
            }
          spids: [316]
        )
      ]
    )
    (C {(Id.Lit_Other ':')} 
      {
        (braced_var_sub
          token: (Token id:Id.VSub_Name val:comment_char span_id:339)
          suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonEquals arg_word:{(Id.Lit_Pound '#')})
        )
      }
    )
    (command.ShFunction
      name: warn
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(printf)}
                {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:356))}
                {(DQ ($ Id.VSub_Star '$*'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:363)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: commit_message
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(git)} {(cat-file)} {(commit)} {(DQ ($ Id.VSub_Number '$1'))})
                (C {(sed)} {(DQ ('1,/^') (Id.Lit_Other '$') (/d))})
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:orig_reflog_action)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION'))}
          spids: [403]
        )
      ]
    )
    (command.ShFunction
      name: comment_for_reflog
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$orig_reflog_action'))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )} {(rebase) (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION)
                          op: assign_op.Equal
                          rhs: {(DQ ('rebase -i (') ($ Id.VSub_Number '$1') (')'))}
                          spids: [434]
                        )
                      ]
                    )
                    (C {(export)} {(GIT_REFLOG_ACTION)})
                  ]
                  spids: [426 431 447 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:last_count)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [455]
        )
      ]
    )
    (command.ShFunction
      name: mark_action_done
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(sed)} {(-e)} {(1q)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:471)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:477)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$done'))}
                )
              ]
            )
            (command.Simple
              words: [{(sed)} {(-e)} {(1d)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:490)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:496)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)}
                )
              ]
            )
            (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} 
              {(DQ ($ Id.VSub_DollarName '$todo'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:new_count)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.ArithWord
                            w: 
                              {
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:521)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (command.Simple
                                              words: [{(git)} {(stripspace)} {(--strip-comments)}]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Less val:'<' span_id:528)
                                                  fd: -1
                                                  arg_word: {(DQ ($ Id.VSub_DollarName '$done'))}
                                                )
                                              ]
                                            )
                                            (C {(wc)} {(-l)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              }
                          )
                      )
                    }
                  spids: [518]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {($ Id.VSub_DollarName '$new_count')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:548)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$msgnum'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:total)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$new_count')})
                            right: 
                              (arith_expr.ArithWord
                                w: 
                                  {
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:560)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  words: [{(git)} {(stripspace)} {(--strip-comments)}]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Less
                                                          val: '<'
                                                          span_id: 567
                                                        )
                                                      fd: -1
                                                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                                                    )
                                                  ]
                                                )
                                                (C {(wc)} {(-l)})
                                              ]
                                              negated: F
                                            )
                                          ]
                                        )
                                    )
                                  }
                              )
                          )
                      )
                    }
                  spids: [554]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {($ Id.VSub_DollarName '$total')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:586)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$end'))}
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ Id.VSub_DollarName '$last_count'))} 
                      {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$new_count'))}
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:last_count)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$new_count')}
                          spids: [611]
                        )
                      ]
                    )
                    (command.Sentence
                      child: 
                        (C {(eval_gettext)} 
                          {
                            (DQ ('Rebasing (') 
                              (word_part.EscapedLiteral
                                token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:619)
                              ) (new_count/) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:621)) 
                              ('total)')
                            )
                          }
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:624)
                    )
                    (C {(printf)} {(DQ (Id.Lit_Other '\\') (r))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$verbose'))})
                        (C {(echo)})
                      ]
                    )
                  ]
                  spids: [592 608]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: reschedule_last_action
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(tail)} {(-n)} {(1)} {(DQ ($ Id.VSub_DollarName '$done'))})
                (command.Simple
                  words: [{(cat)} {(-)} {(DQ ($ Id.VSub_DollarName '$todo'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:689)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.Simple
              words: [
                {(sed)}
                {(-e)}
                {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:700)) 
                  (d)
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:703)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$done'))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:708)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$done')) (.new)}
                )
              ]
            )
            (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} 
              {(DQ ($ Id.VSub_DollarName '$todo'))}
            )
            (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$done')) (.new)} 
              {(DQ ($ Id.VSub_DollarName '$done'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: append_todo_help
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(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: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:763)
                      ) (squash) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:765)) 
                      (", 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')
                    )
                  }
                )
                (command.Simple
                  words: [{(git)} {(stripspace)} {(--comment-lines)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:781)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} 
                      {
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:792)
                          command_list: 
                            (command.CommandList
                              children: [(C {(get_missing_commit_check_level)})]
                            )
                        )
                      } {(Id.Lit_Equals '=')} {(error)}
                    )
                  ]
                  action: [
                    (command.Pipeline
                      children: [
                        (C {(gettext)} 
                          {
                            (DQ ('\n') 
                              (
"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
                              )
                            )
                          }
                        )
                        (command.Simple
                          words: [{(git)} {(stripspace)} {(--comment-lines)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_DGreat val:'>>' span_id:819)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [788 801]
                )
              ]
              else_action: [
                (command.Pipeline
                  children: [
                    (C {(gettext)} 
                      {(DQ ('\n') ('If you remove a line here THAT COMMIT WILL BE LOST.\n'))}
                    )
                    (command.Simple
                      words: [{(git)} {(stripspace)} {(--comment-lines)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:843)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: make_patch
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha1_and_parents)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:864)
                          command_list: 
                            (command.CommandList
                              children: [
                                (C {(git)} {(rev-list)} {(--parents)} {(-1)} {(DQ ($ Id.VSub_Number '$1'))})
                              ]
                            )
                        )
                      )
                    }
                  spids: [862]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$sha1_and_parents'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_QMark '?') (Id.Lit_Star '*') 
                      (SQ (Token id:Id.Lit_Chars val:' ' span_id:892)) (Id.Lit_QMark '?') (Id.Lit_Star '*') (SQ (Token id:Id.Lit_Chars val:' ' span_id:897)) (Id.Lit_QMark '?') 
                      (Id.Lit_Star '*')
                    }
                  ]
                  action: [(C {(git)} {(diff)} {(--cc)} {($ Id.VSub_DollarName '$sha1_and_parents')})]
                  spids: [889 901 913 -1]
                )
                (case_arm
                  pat_list: [
                    {(Id.Lit_QMark '?') (Id.Lit_Star '*') 
                      (SQ (Token id:Id.Lit_Chars val:' ' span_id:919)) (Id.Lit_QMark '?') (Id.Lit_Star '*')
                    }
                  ]
                  action: [(C {(git)} {(diff-tree)} {(-p)} {(DQ ($ Id.VSub_Number '$1') ('^!'))})]
                  spids: [916 923 938 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(echo)} {(DQ ('Root commit'))})]
                  spids: [941 942 952 -1]
                )
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:957)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/patch)}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$msg'))})
                (command.Simple
                  words: [{(commit_message)} {(DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:982)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$msg'))}
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$author_script'))})
                (command.Simple
                  words: [{(get_author_ident_from_commit)} {(DQ ($ Id.VSub_Number '$1'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:1006)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$author_script'))}
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: die_with_patch
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1029)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)}
                )
              ]
            )
            (C {(make_patch)} {(DQ ($ Id.VSub_Number '$1'))})
            (C {(die)} {(DQ ($ Id.VSub_Number '$2'))})
          ]
        )
    )
    (command.ShFunction
      name: exit_with_patch
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(echo)} {(DQ ($ Id.VSub_Number '$1'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1067)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)}
                )
              ]
            )
            (C {(make_patch)} {($ Id.VSub_Number '$1')})
            (command.Simple
              words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1088)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$amend'))}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:gpg_sign_opt_quoted)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:1097)
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VTest_ColonPlus
                            arg_word: 
                              {
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1099)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(git)} {(rev-parse)} {(--sq-quote)} 
                                          {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                        )
                                      ]
                                    )
                                )
                              }
                          )
                      )
                    }
                  spids: [1095]
                )
              ]
            )
            (C {(warn)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1116)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(eval_gettext)} 
                            {
                              (DQ ('You can amend the commit now, with\n') ('\n') 
                                ('\tgit commit --amend ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1124)) 
                                ('gpg_sign_opt_quoted\n') ('\n') ('Once you are satisfied with your changes, run\n') ('\n') ('\tgit rebase --continue')
                              )
                            }
                          )
                        ]
                      )
                  )
                )
              }
            )
            (C {(warn)})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:1138)
              arg_word: {($ Id.VSub_Number '$2')}
            )
          ]
        )
    )
    (command.ShFunction
      name: die_abort
      body: 
        (command.BraceGroup
          children: [
            (C {(apply_autostash)})
            (C {(rm)} {(-rf)} {(DQ ($ Id.VSub_DollarName '$state_dir'))})
            (C {(die)} {(DQ ($ Id.VSub_Number '$1'))})
          ]
        )
    )
    (command.ShFunction
      name: has_action
      body: 
        (command.BraceGroup
          children: [
            (C {(test)} {(-n)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1187)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Simple
                            words: [{(git)} {(stripspace)} {(--strip-comments)}]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Less val:'<' span_id:1194)
                                fd: -1
                                arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                              )
                            ]
                          )
                        ]
                      )
                  )
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: is_empty_commit
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:tree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1212)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Simple
                                    words: [
                                      {(git)}
                                      {(rev-parse)}
                                      {(-q)}
                                      {(--verify)}
                                      {(DQ ($ Id.VSub_Number '$1')) (Id.Lit_Other '^') 
                                        (Id.Lit_LBrace '{') (tree) (Id.Lit_RBrace '}')
                                      }
                                    ]
                                    redirects: [
                                      (redir.Redir
                                        op: (Token id:Id.Redir_Great val:'2>' span_id:1229)
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1211]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1238]
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1245)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1249)
                                        ) ('sha1: not a commit that can be picked')
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ptree)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1260)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.Simple
                                    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.Redir
                                        op: (Token id:Id.Redir_Great val:'2>' span_id:1278)
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                      )
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                      spids: [1259]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:ptree)
                      op: assign_op.Equal
                      rhs: {(4b825dc642cb6eb9a060e54bf8d69288fbee4904)}
                      spids: [1285]
                    )
                  ]
                )
              ]
            )
            (C {(test)} {(DQ ($ Id.VSub_DollarName '$tree'))} {(Id.Lit_Equals '=')} 
              {(DQ ($ Id.VSub_DollarName '$ptree'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: is_merge_commit
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(git)}
                {(rev-parse)}
                {(--verify)}
                {(--quiet)}
                {(DQ ($ Id.VSub_Number '$1')) (Id.Lit_Other '^') (2)}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:1325)
                  fd: -1
                  arg_word: {(/dev/null)}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:1328)
                  fd: 2
                  arg_word: {(1)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_with_author
      body: 
        (command.BraceGroup
          children: [
            (command.Subshell
              command_list: 
                (command.CommandList
                  children: [
                    (C {(export)} {(GIT_AUTHOR_NAME)} {(GIT_AUTHOR_EMAIL)} {(GIT_AUTHOR_DATE)})
                    (C {(DQ ($ Id.VSub_At '$@'))})
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: git_sequence_editor
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GIT_SEQUENCE_EDITOR)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1394)
                                  command_list: 
                                    (command.CommandList
                                      children: [(C {(git)} {(config)} {(sequence.editor)})]
                                    )
                                )
                              )
                            }
                          spids: [1392]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Id.Lit_LBracket '[')} {(-z)} 
                              {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))} {(Id.Lit_RBracket ']')}
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:GIT_SEQUENCE_EDITOR)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 1422
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(git)} {(Id.KW_Var var)} {(GIT_EDITOR)})
                                                  ]
                                                )
                                            )
                                          )
                                        }
                                      spids: [1420]
                                    )
                                  ]
                                )
                                (command.ControlFlow
                                  token: (Token id:Id.ControlFlow_Return val:return span_id:1433)
                                  arg_word: {($ Id.VSub_QMark '$?')}
                                )
                              ]
                            )
                          ]
                          spids: [1404 1417]
                        )
                      ]
                    )
                  ]
                  spids: [1378 1389]
                )
              ]
            )
            (C {(eval)} {(DQ ($ Id.VSub_DollarName '$GIT_SEQUENCE_EDITOR'))} 
              {(SQ (Token id:Id.Lit_Chars val:'"$@"' span_id:1452))}
            )
          ]
        )
    )
    (command.ShFunction
      name: pick_one
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ff)
                  op: assign_op.Equal
                  rhs: {(--ff)}
                  spids: [1466]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:sha1)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_Number '$2')}
                              spids: [1482]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:1484)
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ff)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1486]
                        )
                      ]
                    )
                  ]
                  spids: [1479 1480 1488 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1493]
                        )
                      ]
                    )
                  ]
                  spids: [1490 1491 1496 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$force_rebase'))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[1509 1511 1513 -1])
                (case_arm
                  pat_list: [{(Id.Lit_QMark '?') (Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ff)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [1519]
                        )
                      ]
                    )
                  ]
                  spids: [1515 1517 1521 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(output)} {(git)} {(rev-parse)} {(--verify)} {($ Id.VSub_DollarName '$sha1')})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1541)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Invalid commit name: ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:1546)
                                    ) (sha1)
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(is_empty_commit)} {(DQ ($ Id.VSub_DollarName '$sha1'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:empty_args)
                          op: assign_op.Equal
                          rhs: {(DQ (--allow-empty))}
                          spids: [1566]
                        )
                      ]
                    )
                  ]
                  spids: [1554 1563]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$rewritten'))})
                (C {(pick_one_preserving_merges)} {(DQ ($ Id.VSub_At '$@'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:1595)
                )
              ]
            )
            (C {(output)} {(eval)} {(git)} {(cherry-pick)} 
              {
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:1609)
                  suffix_op: 
                    (suffix_op.Unary
                      op_id: Id.VTest_ColonPlus
                      arg_word: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1611)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--sq-quote)} 
                                    {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                  )
                                ]
                              )
                          )
                        }
                    )
                )
              } {(DQ ($ Id.VSub_DollarName '$strategy_args'))} {($ Id.VSub_DollarName '$empty_args')} 
              {($ Id.VSub_DollarName '$ff')} {(DQ ($ Id.VSub_At '$@'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [1648]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$ret'))}
              arms: [
                (case_arm
                  pat_list: [{(Id.Lit_LBracket '[') (01) (Id.Lit_RBracket ']')}]
                  spids: [1660 1663 1665 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(reschedule_last_action)})]
                  spids: [1667 1668 1672 -1]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:1677)
              arg_word: {($ Id.VSub_DollarName '$ret')}
            )
          ]
        )
    )
    (command.ShFunction
      name: pick_one_preserving_merges
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fast_forward)
                  op: assign_op.Equal
                  rhs: {(t)}
                  spids: [1692]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fast_forward)
                          op: assign_op.Equal
                          rhs: {(f)}
                          spids: [1709]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$2')}
                          spids: [1713]
                        )
                      ]
                    )
                  ]
                  spids: [1705 1706 1717 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sha1)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_Number '$1')}
                          spids: [1724]
                        )
                      ]
                    )
                  ]
                  spids: [1720 1721 1728 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1735)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git)} {(rev-parse)} {($ Id.VSub_DollarName '$sha1')})]
                          )
                      )
                    }
                  spids: [1734]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)})
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ Id.VSub_DollarName '$fast_forward'))} 
                              {(Id.Lit_Equals '=')} {(t)}
                            )
                          ]
                          action: [
                            (command.WhileUntil
                              keyword: (Token id:Id.KW_While val:while span_id:1776)
                              cond: [(C {(read)} {(current_commit)})]
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Simple
                                      words: [{(git)} {(rev-parse)} {(HEAD)}]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:1792)
                                          fd: -1
                                          arg_word: 
                                            {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                              ($ Id.VSub_DollarName '$current_commit')
                                            }
                                        )
                                      ]
                                    )
                                  ]
                                )
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Less val:'<' span_id:1803)
                                  fd: -1
                                  arg_word: 
                                    {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)}
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(rm)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)})
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 1823
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(gettext)} 
                                                {
                                                  (DQ 
                                                    (
"Cannot write current commit's replacement sha1"
                                                    )
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [1760 1773]
                        )
                      ]
                    )
                  ]
                  spids: [1745 1757]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {($ Id.VSub_DollarName '$sha1')}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:1844)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/current-commit)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:new_parents)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [1857]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pend)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ (' ') 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1863)
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Pipeline
                                  children: [
                                    (C {(git)} {(rev-list)} {(--parents)} {(-1)} 
                                      {($ Id.VSub_DollarName '$sha1')}
                                    )
                                    (C {(cut)} {(-d) (SQ (Token id:Id.Lit_Chars val:' ' span_id:1880))} 
                                      {(-s)} {(-f2-)}
                                    )
                                  ]
                                  negated: F
                                )
                              ]
                            )
                        )
                      )
                    }
                  spids: [1860]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ Id.VSub_DollarName '$pend'))} {(Id.Lit_Equals '=')} {(DQ (' '))})
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pend)
                          op: assign_op.Equal
                          rhs: {(DQ (' root'))}
                          spids: [1908]
                        )
                      ]
                    )
                  ]
                  spids: [1890 1905]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:1917)
              cond: [
                (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$pend'))} 
                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ )} {(Id.Lit_RBracket ']')}
                )
              ]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:p)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1938)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {(DQ ($ Id.VSub_DollarName '$pend'))} 
                                        {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:' \\([^ ]*\\)' span_id:1948))}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [1937]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:pend)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:pend span_id:1956)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VOp1_Pound
                                      arg_word: {(' ') ($ Id.VSub_DollarName '$p')}
                                    )
                                )
                              )
                            }
                          spids: [1953]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-f)} 
                              {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                ($ Id.VSub_DollarName '$p')
                              }
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:new_p)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 1982
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(cat)} 
                                                {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                                  ($ Id.VSub_DollarName '$p')
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [1981]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$new_p'))})]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:new_p)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_DollarParen
                                                    val: '$('
                                                    span_id: 2021
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [(C {(git)} {(rev-parse)} {(HEAD)})]
                                                  )
                                              )
                                            }
                                          spids: [2020]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2006 2017]
                                )
                              ]
                            )
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {($ Id.VSub_DollarName '$p')} 
                                  {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {($ Id.VSub_DollarName '$new_p')}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:fast_forward)
                                      op: assign_op.Equal
                                      rhs: {(f)}
                                      spids: [2045]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$new_parents'))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Id.Lit_Star '*') ($ Id.VSub_DollarName '$new_p') 
                                      (Id.Lit_Star '*')
                                    }
                                  ]
                                  spids: [2058 2061 2064 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:new_parents)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$new_parents') (' ') 
                                                ($ Id.VSub_DollarName '$new_p')
                                              )
                                            }
                                          spids: [2074]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [2070 2071 2082 -1]
                                )
                              ]
                            )
                          ]
                          spids: [1965 1978]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(test)} {(-f)} 
                                  {(DQ ($ Id.VSub_DollarName '$dropped')) (/) 
                                    ($ Id.VSub_DollarName '$p')
                                  }
                                )
                              ]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:fast_forward)
                                      op: assign_op.Equal
                                      rhs: {(f)}
                                      spids: [2107]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:replacement)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ 
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 2113
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (C {(cat)} 
                                                      {(DQ ($ Id.VSub_DollarName '$dropped')) (/) 
                                                        ($ Id.VSub_DollarName '$p')
                                                      }
                                                    )
                                                  ]
                                                )
                                            )
                                          )
                                        }
                                      spids: [2111]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$replacement'))})
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:replacement)
                                          op: assign_op.Equal
                                          rhs: {(root)}
                                          spids: [2135]
                                        )
                                      ]
                                    )
                                  ]
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:pend)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ (' ') ($ Id.VSub_DollarName '$replacement') 
                                            ($ Id.VSub_DollarName '$pend')
                                          )
                                        }
                                      spids: [2139]
                                    )
                                  ]
                                )
                              ]
                              spids: [2091 2104]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:new_parents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$new_parents') (' ') 
                                        ($ Id.VSub_DollarName '$p')
                                      )
                                    }
                                  spids: [2150]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.Case
              to_match: {($ Id.VSub_DollarName '$fast_forward')}
              arms: [
                (case_arm
                  pat_list: [{(t)}]
                  action: [
                    (C {(output)} {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2183)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Fast-forward to ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2188)
                                        ) (sha1)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(output)} {(git)} {(reset)} {(--hard)} {($ Id.VSub_DollarName '$sha1')})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2211)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(eval_gettext)} 
                                        {
                                          (DQ ('Cannot fast-forward to ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 2216
                                                )
                                            ) (sha1)
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [2174 2175 2223 -1]
                )
                (case_arm
                  pat_list: [{(f)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:first_parent)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2231)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {(DQ ($ Id.VSub_DollarName '$new_parents'))} 
                                        {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:' \\([^ ]*\\)' span_id:2241))}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [2230]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_Number '$1'))} 
                              {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ (-n))} {(Id.Lit_RBracket ']')}
                            )
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (command.Simple
                                  words: [
                                    {(output)}
                                    {(git)}
                                    {(checkout)}
                                    {($ Id.VSub_DollarName '$first_parent')}
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'2>' span_id:2280)
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 2290
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(eval_gettext)} 
                                                {
                                                  (DQ ('Cannot move HEAD to ') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\$'
                                                          span_id: 2295
                                                        )
                                                    ) (first_parent)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [2247 2265]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$new_parents'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(SQ (Token id:Id.Lit_Chars val:' ' span_id:2316)) (Id.Lit_Star '*') 
                              (SQ (Token id:Id.Lit_Chars val:' ' span_id:2320)) (Id.Lit_Star '*')
                            }
                          ]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {(DQ (a) ($ Id.VSub_Number '$1'))} {(Id.Lit_Equals '=')} 
                                  {(a-n)}
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 2342
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(eval_gettext)} 
                                                {
                                                  (DQ ('Refusing to squash a merge: ') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\$'
                                                          span_id: 2347
                                                        )
                                                    ) (sha1)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:author_script_content)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 2360
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(get_author_ident_from_commit)} 
                                                {($ Id.VSub_DollarName '$sha1')}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  spids: [2359]
                                )
                              ]
                            )
                            (C {(eval)} {(DQ ($ Id.VSub_DollarName '$author_script_content'))})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:msg_content)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 2376
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(commit_message)} {($ Id.VSub_DollarName '$sha1')})
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  spids: [2374]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:new_parents)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (braced_var_sub
                                        token: (Token id:Id.VSub_Name val:new_parents span_id:2390)
                                        suffix_op: 
                                          (suffix_op.Unary
                                            op_id: Id.VOp1_Pound
                                            arg_word: {(' ') ($ Id.VSub_DollarName '$first_parent')}
                                          )
                                      )
                                    }
                                  spids: [2388]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:merge_args)
                                  op: assign_op.Equal
                                  rhs: {(DQ ('--no-log --no-ff'))}
                                  spids: [2397]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Pipeline
                                      children: [
                                        (C {(do_with_author)} {(output)} {(eval)} 
                                          {
                                            (SQ 
                                              (Token
                                                id: Id.Lit_Chars
                                                val: 
'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \\\n'
                                                span_id: 2416
                                              ) 
                                              (Token
                                                id: Id.Lit_Chars
                                                val: 
'\t\t\t\t$merge_args $strategy_args -m "$msg_content" $new_parents'
                                                span_id: 2417
                                              )
                                            )
                                          }
                                        )
                                      ]
                                      negated: T
                                    )
                                  ]
                                  action: [
                                    (command.Simple
                                      words: [
                                        {(printf)}
                                        {(DQ ('%s') (Id.Lit_Other '\\') (n))}
                                        {(DQ ($ Id.VSub_DollarName '$msg_content'))}
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_Great val:'>' span_id:2436)
                                          fd: -1
                                          arg_word: 
                                            {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/MERGE_MSG)}
                                        )
                                      ]
                                    )
                                    (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 2449
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(eval_gettext)} 
                                                    {
                                                      (DQ ('Error redoing merge ') 
                                                        (word_part.EscapedLiteral
                                                          token: 
                                                            (Token
                                                              id: Id.Lit_EscapedChar
                                                              val: '\\$'
                                                              span_id: 2454
                                                            )
                                                        ) (sha1)
                                                      )
                                                    }
                                                  )
                                                ]
                                              )
                                          )
                                        )
                                      }
                                    )
                                  ]
                                  spids: [2403 2421]
                                )
                              ]
                            )
                            (command.Simple
                              words: [
                                {(echo)}
                                {
                                  (DQ ($ Id.VSub_DollarName '$sha1') (' ') 
                                    (command_sub
                                      left_token: 
                                        (Token
                                          id: Id.Left_DollarParen
                                          val: '$('
                                          span_id: 2469
                                        )
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(git)} {(rev-parse)} {(HEAD) (Id.Lit_Other '^') (0)})
                                          ]
                                        )
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:2480)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}
                                )
                              ]
                            )
                          ]
                          spids: [2315 2323 2487 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(output)} {(eval)} {(git)} {(cherry-pick)} 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:2505)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonPlus
                                          arg_word: 
                                            {
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_DollarParen
                                                    val: '$('
                                                    span_id: 2507
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (C {(git)} {(rev-parse)} {(--sq-quote)} 
                                                        {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                                      )
                                                    ]
                                                  )
                                              )
                                            }
                                        )
                                    )
                                  } {(DQ ($ Id.VSub_DollarName '$strategy_args'))} {(DQ ($ Id.VSub_At '$@'))}
                                )
                                (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 2538
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(eval_gettext)} 
                                                {
                                                  (DQ ('Could not pick ') 
                                                    (word_part.EscapedLiteral
                                                      token: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\$'
                                                          span_id: 2543
                                                        )
                                                    ) (sha1)
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [2490 2491 2550 -1]
                        )
                      ]
                    )
                  ]
                  spids: [2226 2227 2556 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: this_nth_commit_message
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:n)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2572]
                )
              ]
            )
            (C {(eval_gettext)} 
              {
                (DQ ('This is the commit message #') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2580)
                  ) ('{n}:')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: skip_nth_commit_message
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:n)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [2595]
                )
              ]
            )
            (C {(eval_gettext)} 
              {
                (DQ ('The commit message #') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2603)
                  ) ('{n} will be skipped:')
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: update_squash_messages
      body: 
        (command.BraceGroup
          children: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:2627)
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(mv)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} 
                          {(DQ ($ Id.VSub_DollarName '$squash_msg')) (.bak)}
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Exit val:exit span_id:2645)
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:count)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: 
                                      (arith_expr.ArithWord
                                        w: 
                                          {
                                            (command_sub
                                              left_token: 
                                                (Token
                                                  id: Id.Left_DollarParen
                                                  val: '$('
                                                  span_id: 2650
                                                )
                                              command_list: 
                                                (command.CommandList
                                                  children: [
                                                    (command.Simple
                                                      words: [
                                                        {(sed)}
                                                        {(-n)}
                                                        {(-e)}
                                                        {
                                                          (DQ ('1s/^') 
                                                            ($ Id.VSub_DollarName '$comment_char') ('.*') (Id.Lit_Other '\\') ('([0-9][0-9]*') (Id.Lit_Other '\\') (').*/') (Id.Lit_Other '\\') (1/p)
                                                          )
                                                        }
                                                        {(-e)}
                                                        {(DQ (q))}
                                                      ]
                                                      redirects: [
                                                        (redir.Redir
                                                          op: 
                                                            (Token
                                                              id: Id.Redir_Less
                                                              val: '<'
                                                              span_id: 2679
                                                            )
                                                          fd: -1
                                                          arg_word: 
                                                            {
                                                              (DQ 
                                                                ($ Id.VSub_DollarName '$squash_msg')
                                                              ) (.bak)
                                                            }
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                )
                                            )
                                          }
                                      )
                                    right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                                  )
                              )
                            }
                          spids: [2648]
                        )
                      ]
                    )
                    (command.BraceGroup
                      children: [
                        (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2698))} 
                          {
                            (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2704)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(eval_ngettext)} 
                                        {
                                          (DQ ('This is a combination of ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 2711
                                                )
                                            ) ('count commit.')
                                          )
                                        } 
                                        {
                                          (DQ ('This is a combination of ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 2719
                                                )
                                            ) ('count commits.')
                                          )
                                        } {($ Id.VSub_DollarName '$count')}
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                        (command.Simple
                          words: [
                            {(sed)}
                            {(-e)}
                            {(1d)}
                            {(-e)}
                            {
                              (SQ (Token id:Id.Lit_Chars val:'2,/^./{\n' span_id:2739) 
                                (Token
                                  id: Id.Lit_Chars
                                  val: '\t\t\t\t/^$/d\n'
                                  span_id: 2740
                                ) (Token id:Id.Lit_Chars val:'\t\t\t}' span_id:2741)
                              )
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:2744)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg')) (.bak)}
                            )
                          ]
                        )
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2753)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg'))}
                        )
                      ]
                    )
                  ]
                  spids: [2618 2629]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [{(commit_message)} {(HEAD)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:2766)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}
                        )
                      ]
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2777)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} 
                                    {
                                      (DQ ('Cannot write ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2782)
                                        ) (fixup_msg)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:count)
                      op: assign_op.Equal
                      rhs: {(2)}
                      spids: [2789]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2799))} 
                      {
                        (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2805)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} {(DQ ('This is a combination of 2 commits.'))})
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2818))} 
                      {
                        (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2824)
                            command_list: 
                              (command.CommandList
                                children: [(C {(gettext)} {(DQ ('This is the 1st commit message:'))})]
                              )
                          )
                        )
                      }
                    )
                    (C {(echo)})
                    (C {(cat)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))})
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:2846)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg'))}
                    )
                  ]
                )
              ]
            )
            (command.Case
              to_match: {($ Id.VSub_Number '$1')}
              arms: [
                (case_arm
                  pat_list: [{(squash)}]
                  action: [
                    (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))})
                    (C {(echo)})
                    (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2881))} 
                      {
                        (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2887)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(this_nth_commit_message)} {($ Id.VSub_DollarName '$count')})
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(echo)})
                    (C {(commit_message)} {($ Id.VSub_Number '$2')})
                  ]
                  spids: [2862 2863 2903 -1]
                )
                (case_arm
                  pat_list: [{(fixup)}]
                  action: [
                    (C {(echo)})
                    (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:2916))} 
                      {
                        (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:2922)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(skip_nth_commit_message)} {($ Id.VSub_DollarName '$count')})
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(echo)})
                    (command.Pipeline
                      children: [
                        (C {(commit_message)} {($ Id.VSub_Number '$2')})
                        (C {(git)} {(stripspace)} {(--comment-lines)})
                        (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/ /\t/' span_id:2956))})
                      ]
                      negated: F
                    )
                  ]
                  spids: [2906 2907 2960 -1]
                )
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:2965)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$squash_msg'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: peek_next_command
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (command.Simple
                  words: [{(git)} {(stripspace)} {(--strip-comments)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:2987)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                  ]
                )
                (C {(sed)} {(-n)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/ .*//p' span_id:3001))} {(-e)} 
                  {(q)}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: die_failed_squash
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha1)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3036]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rest)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [3040]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(mv)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} 
                  {(DQ ($ Id.VSub_DollarName '$msg'))}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:3056)
                )
              ]
            )
            (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(cp)} {(DQ ($ Id.VSub_DollarName '$msg'))} 
                  {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/MERGE_MSG)}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:3081)
                )
              ]
            )
            (C {(warn)})
            (C {(warn)} 
              {
                (DQ 
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3090)
                    command_list: 
                      (command.CommandList
                        children: [
                          (C {(eval_gettext)} 
                            {
                              (DQ ('Could not apply ') 
                                (word_part.EscapedLiteral
                                  token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3095)
                                ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3097)) 
                                (rest)
                              )
                            }
                          )
                        ]
                      )
                  )
                )
              }
            )
            (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} {(DQ )})
          ]
        )
    )
    (command.ShFunction
      name: flush_rewritten_pending
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:3131)
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:newsha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3136)
                          command_list: 
                            (command.CommandList
                              children: [(C {(git)} {(rev-parse)} {(HEAD) (Id.Lit_Other '^') (0)})]
                            )
                        )
                      )
                    }
                  spids: [3134]
                )
              ]
            )
            (command.Simple
              words: [
                {(sed)}
                {(DQ (s/) (Id.Lit_Other '$') ('/ ') ($ Id.VSub_DollarName '$newsha1') (/))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:3158)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:3164)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}
                )
              ]
            )
            (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))})
          ]
        )
    )
    (command.ShFunction
      name: record_in_rewritten
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:oldsha1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3191)
                          command_list: 
                            (command.CommandList
                              children: [(C {(git)} {(rev-parse)} {($ Id.VSub_Number '$1')})]
                            )
                        )
                      )
                    }
                  spids: [3189]
                )
              ]
            )
            (command.Simple
              words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$oldsha1'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:3207)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_pending'))}
                )
              ]
            )
            (command.Case
              to_match: 
                {
                  (DQ 
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3218)
                      command_list: (command.CommandList children:[(C {(peek_next_command)})])
                    )
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{(squash)} {(s)} {(fixup)} {(f)}]
                  spids: [3226 3233 3236 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(flush_rewritten_pending)})]
                  spids: [3239 3240 3246 -1]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_pick
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:sha1)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [3262]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rest)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$2')}
                  spids: [3266]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3275)
                            command_list: 
                              (command.CommandList
                                children: [(C {(git)} {(rev-parse)} {(HEAD)})]
                              )
                          )
                        )
                      } {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$squash_onto'))}
                    )
                  ]
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(git)} {(commit)} {(--allow-empty)} {(--allow-empty-message)} {(--amend)} 
                          {(--no-post-rewrite)} {(-n)} {(-q)} {(-C)} {($ Id.VSub_DollarName '$sha1')}
                        )
                        (C {(pick_one)} {(-n)} {($ Id.VSub_DollarName '$sha1')})
                        (C {(git)} {(commit)} {(--allow-empty)} {(--allow-empty-message)} {(--amend)} 
                          {(--no-post-rewrite)} {(-n)} {(-q)} {(-C)} {($ Id.VSub_DollarName '$sha1')} 
                          {
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3385)
                              suffix_op: 
                                (suffix_op.Unary
                                  op_id: Id.VTest_ColonPlus
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                )
                            )
                          }
                        )
                        (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3400)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(eval_gettext)} 
                                        {
                                          (DQ ('Could not apply ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 3405
                                                )
                                            ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3407)) 
                                            (rest)
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                  ]
                  spids: [3270 3291]
                )
              ]
              else_action: [
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {(pick_one)} {($ Id.VSub_DollarName '$sha1')})
                    (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3429)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Could not apply ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3434)
                                        ) ('sha1... ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3436)) 
                                        (rest)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: do_next
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(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)}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:3479)
                )
              ]
            )
            (command.Simple
              words: [{(read)} {(-r)} {(command)} {(sha1)} {(rest)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:3492)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$command'))}
              arms: [
                (case_arm
                  pat_list: [
                    {(DQ ($ Id.VSub_DollarName '$comment_char')) (Id.Lit_Star '*')}
                    {(SQ )}
                    {(noop)}
                    {(drop)}
                    {(d)}
                  ]
                  action: [(C {(mark_action_done)})]
                  spids: [3508 3521 3527 -1]
                )
                (case_arm
                  pat_list: [{(DQ ($ Id.VSub_DollarName '$cr'))}]
                  action: [(C {(mark_action_done)})]
                  spids: [3530 3533 3543 -1]
                )
                (case_arm
                  pat_list: [{(pick)} {(p)}]
                  action: [
                    (C {(comment_for_reflog)} {(pick)})
                    (C {(mark_action_done)})
                    (C {(do_pick)} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))})
                    (C {(record_in_rewritten)} {($ Id.VSub_DollarName '$sha1')})
                  ]
                  spids: [3546 3549 3575 -1]
                )
                (case_arm
                  pat_list: [{(reword)} {(r)}]
                  action: [
                    (C {(comment_for_reflog)} {(reword)})
                    (C {(mark_action_done)})
                    (C {(do_pick)} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(git)} {(commit)} {(--amend)} {(--no-post-rewrite)} 
                          {
                            (braced_var_sub
                              token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3611)
                              suffix_op: 
                                (suffix_op.Unary
                                  op_id: Id.VTest_ColonPlus
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                )
                            )
                          }
                        )
                        (command.BraceGroup
                          children: [
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3626)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval_gettext)} 
                                            {
                                              (DQ 
                                                (
'Could not amend commit after successfully picking '
                                                ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:3632)) ('sha1... ') 
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\$'
                                                      span_id: 3634
                                                    )
                                                ) ('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.')
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(exit_with_patch)} {($ Id.VSub_DollarName '$sha1')} {(1)})
                          ]
                        )
                      ]
                    )
                    (C {(record_in_rewritten)} {($ Id.VSub_DollarName '$sha1')})
                  ]
                  spids: [3578 3581 3659 -1]
                )
                (case_arm
                  pat_list: [{(edit)} {(e)}]
                  action: [
                    (C {(comment_for_reflog)} {(edit)})
                    (C {(mark_action_done)})
                    (C {(do_pick)} {($ Id.VSub_DollarName '$sha1')} {(DQ ($ Id.VSub_DollarName '$rest'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:sha1_abbrev)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3687)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(git)} {(rev-parse)} {(--short)} 
                                        {($ Id.VSub_DollarName '$sha1')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [3686]
                        )
                      ]
                    )
                    (C {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3701)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Stopped at ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3706)
                                        ) ('sha1_abbrev... ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:3708)
                                        ) (rest)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(exit_with_patch)} {($ Id.VSub_DollarName '$sha1')} {(0)})
                  ]
                  spids: [3662 3665 3722 -1]
                )
                (case_arm
                  pat_list: [{(squash)} {(s)} {(fixup)} {(f)}]
                  action: [
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$command'))}
                      arms: [
                        (case_arm
                          pat_list: [{(squash)} {(s)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:squash_style)
                                  op: assign_op.Equal
                                  rhs: {(squash)}
                                  spids: [3750]
                                )
                              ]
                            )
                          ]
                          spids: [3744 3747 3754 -1]
                        )
                        (case_arm
                          pat_list: [{(fixup)} {(f)}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:squash_style)
                                  op: assign_op.Equal
                                  rhs: {(fixup)}
                                  spids: [3763]
                                )
                              ]
                            )
                          ]
                          spids: [3757 3760 3767 -1]
                        )
                      ]
                    )
                    (C {(comment_for_reflog)} {($ Id.VSub_DollarName '$squash_style')})
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$done'))})
                        (C {(has_action)} {(DQ ($ Id.VSub_DollarName '$done'))})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3801)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(eval_gettext)} 
                                        {
                                          (DQ ("Cannot '") 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 3806
                                                )
                                            ) ("squash_style' without a previous commit")
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (C {(mark_action_done)})
                    (C {(update_squash_messages)} {($ Id.VSub_DollarName '$squash_style')} 
                      {($ Id.VSub_DollarName '$sha1')}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:author_script_content)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3825)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(get_author_ident_from_commit)} {(HEAD)})]
                                  )
                              )
                            }
                          spids: [3824]
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$author_script_content'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:3838)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$author_script'))}
                        )
                      ]
                    )
                    (C {(eval)} {(DQ ($ Id.VSub_DollarName '$author_script_content'))})
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Pipeline
                              children: [(C {(pick_one)} {(-n)} {($ Id.VSub_DollarName '$sha1')})]
                              negated: T
                            )
                          ]
                          action: [
                            (command.Simple
                              words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:3874)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$amend'))}
                                )
                              ]
                            )
                            (C {(die_failed_squash)} {($ Id.VSub_DollarName '$sha1')} 
                              {(DQ ($ Id.VSub_DollarName '$rest'))}
                            )
                          ]
                          spids: [3852 3863]
                        )
                      ]
                    )
                    (command.Case
                      to_match: 
                        {
                          (DQ 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:3895)
                              command_list: 
                                (command.CommandList
                                  children: [(C {(peek_next_command)})]
                                )
                            )
                          )
                        }
                      arms: [
                        (case_arm
                          pat_list: [{(squash)} {(s)} {(fixup)} {(f)}]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(do_with_author)} {(output)} {(git)} {(commit)} {(--amend)} 
                                  {(--no-verify)} {(-F)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:3942)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonPlus
                                          arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                        )
                                    )
                                  }
                                )
                                (C {(die_failed_squash)} {($ Id.VSub_DollarName '$sha1')} 
                                  {(DQ ($ Id.VSub_DollarName '$rest'))}
                                )
                              ]
                            )
                          ]
                          spids: [3903 3910 3961 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [(C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))})]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {(do_with_author)} {(git)} {(commit)} {(--amend)} 
                                          {(--no-verify)} {(-F)} {(DQ ($ Id.VSub_DollarName '$fixup_msg'))} 
                                          {
                                            (braced_var_sub
                                              token: 
                                                (Token
                                                  id: Id.VSub_Name
                                                  val: gpg_sign_opt
                                                  span_id: 4005
                                                )
                                              suffix_op: 
                                                (suffix_op.Unary
                                                  op_id: Id.VTest_ColonPlus
                                                  arg_word: 
                                                    {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                                )
                                            )
                                          }
                                        )
                                        (C {(die_failed_squash)} {($ Id.VSub_DollarName '$sha1')} 
                                          {(DQ ($ Id.VSub_DollarName '$rest'))}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [3972 3983]
                                )
                              ]
                              else_action: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {(cp)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} 
                                      {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/SQUASH_MSG)}
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:4040)
                                    )
                                  ]
                                )
                                (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/MERGE_MSG)})
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {(do_with_author)} {(git)} {(commit)} {(--amend)} {(--no-verify)} 
                                      {(-F)} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/SQUASH_MSG)} {(-e)} 
                                      {
                                        (braced_var_sub
                                          token: 
                                            (Token
                                              id: Id.VSub_Name
                                              val: gpg_sign_opt
                                              span_id: 4075
                                            )
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VTest_ColonPlus
                                              arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                            )
                                        )
                                      }
                                    )
                                    (C {(die_failed_squash)} {($ Id.VSub_DollarName '$sha1')} 
                                      {(DQ ($ Id.VSub_DollarName '$rest'))}
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$squash_msg'))} 
                              {(DQ ($ Id.VSub_DollarName '$fixup_msg'))}
                            )
                          ]
                          spids: [3964 3965 4110 -1]
                        )
                      ]
                    )
                    (C {(record_in_rewritten)} {($ Id.VSub_DollarName '$sha1')})
                  ]
                  spids: [3725 3732 4121 -1]
                )
                (case_arm
                  pat_list: [{(x)} {(DQ (exec))}]
                  action: [
                    (command.Simple
                      words: [{(read)} {(-r)} {(command)} {(rest)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:4140)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                        )
                      ]
                    )
                    (C {(mark_action_done)})
                    (C {(eval_gettextln)} 
                      {
                        (DQ ('Executing: ') 
                          (word_part.EscapedLiteral
                            token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4154)
                          ) (rest)
                        )
                      }
                    )
                    (C 
                      {
                        (DQ 
                          (braced_var_sub
                            token: (Token id:Id.VSub_Name val:SHELL span_id:4161)
                            suffix_op: 
                              (suffix_op.Unary
                                op_id: Id.VTest_ColonHyphen
                                arg_word: {('@SHELL_PATH@')}
                              )
                          )
                        )
                      } {(-c)} {(DQ ($ Id.VSub_DollarName '$rest'))}
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:status)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '$?')}
                          spids: [4177]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:dirty)
                          op: assign_op.Equal
                          rhs: {(f)}
                          spids: [4185]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.Subshell
                          command_list: 
                            (command.CommandList
                              children: [
                                (command.Simple
                                  words: [{(require_clean_work_tree)} {(DQ (rebase))}]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Great val:'2>' span_id:4196)
                                      fd: 2
                                      arg_word: {(/dev/null)}
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:dirty)
                              op: assign_op.Equal
                              rhs: {(t)}
                              spids: [4202]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(DQ ($ Id.VSub_DollarName '$status'))} {(-ne)} {(0)})]
                          action: [
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4225)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval_gettext)} 
                                            {
                                              (DQ ('Execution failed: ') 
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\$'
                                                      span_id: 4230
                                                    )
                                                ) (rest)
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(test)} {(DQ ($ Id.VSub_DollarName '$dirty'))} {(Id.Lit_Equals '=')} 
                                  {(f)}
                                )
                                (C {(warn)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 4253
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(gettext)} 
                                                {
                                                  (DQ 
                                                    (
'and made changes to the index and/or the working tree'
                                                    )
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4267)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} 
                                            {
                                              (DQ ('You can fix the problem, and then run\n') ('\n') 
                                                ('\tgit rebase --continue')
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(warn)})
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {($ Id.VSub_DollarName '$status')} {(-eq)} {(127)})
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:status)
                                          op: assign_op.Equal
                                          rhs: {(1)}
                                          spids: [4300]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [4283 4297]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:4307)
                              arg_word: {(DQ ($ Id.VSub_DollarName '$status'))}
                            )
                          ]
                          spids: [4206 4219]
                        )
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ Id.VSub_DollarName '$dirty'))} {(Id.Lit_Equals '=')} 
                              {(t)}
                            )
                          ]
                          action: [
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4337)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval_gettext)} 
                                            {
                                              (DQ ('Execution succeeded: ') 
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\$'
                                                      span_id: 4343
                                                    )
                                                ) ('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')
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(warn)})
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Exit val:exit span_id:4357)
                              arg_word: {(1)}
                            )
                          ]
                          spids: [4314 4327]
                        )
                      ]
                    )
                  ]
                  spids: [4124 4129 4365 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4375)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Unknown command: ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4380)
                                        ) ('command ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4382)) 
                                        ('sha1 ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:4384)) (rest)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:fixtodo)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4393)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(gettext)} 
                                          {(DQ ("Please fix this using 'git rebase --edit-todo'."))}
                                        )
                                      ]
                                    )
                                )
                              )
                            }
                          spids: [4391]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.Simple
                              words: [
                                {(git)}
                                {(rev-parse)}
                                {(--verify)}
                                {(-q)}
                                {(DQ ($ Id.VSub_DollarName '$sha1'))}
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:4417)
                                  fd: -1
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                          ]
                          action: [
                            (C {(die_with_patch)} {($ Id.VSub_DollarName '$sha1')} 
                              {(DQ ($ Id.VSub_DollarName '$fixtodo'))}
                            )
                          ]
                          spids: [4403 4421]
                        )
                      ]
                      else_action: [(C {(die)} {(DQ ($ Id.VSub_DollarName '$fixtodo'))})]
                    )
                  ]
                  spids: [4368 4369 4446 -1]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:4462)
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(comment_for_reflog)} {(finish)})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:newhead)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4474)
                            command_list: 
                              (command.CommandList
                                children: [(C {(git)} {(rev-parse)} {(HEAD)})]
                              )
                          )
                        }
                      spids: [4473]
                    )
                  ]
                )
                (command.Case
                  to_match: {($ Id.VSub_DollarName '$head_name')}
                  arms: [
                    (case_arm
                      pat_list: [{(refs/) (Id.Lit_Star '*')}]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DAmp]
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:message)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') (': ') 
                                        ($ Id.VSub_DollarName '$head_name') (' onto ') ($ Id.VSub_DollarName '$onto')
                                      )
                                    }
                                  spids: [4497]
                                )
                              ]
                            )
                            (C {(git)} {(update-ref)} {(-m)} {(DQ ($ Id.VSub_DollarName '$message'))} 
                              {($ Id.VSub_DollarName '$head_name')} {($ Id.VSub_DollarName '$newhead')} {($ Id.VSub_DollarName '$orig_head')}
                            )
                            (C {(git)} {(symbolic-ref)} {(-m)} 
                              {
                                (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') (': returning to ') 
                                  ($ Id.VSub_DollarName '$head_name')
                                )
                              } {(HEAD)} {($ Id.VSub_DollarName '$head_name')}
                            )
                          ]
                        )
                      ]
                      spids: [4492 4494 4549 -1]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(Id.KW_Bang '!')} {(-f)} 
                          {(DQ ($ Id.VSub_DollarName '$state_dir')) (/verbose)}
                        )
                        (C {(git)} {(diff-tree)} {(--stat)} 
                          {($ Id.VSub_DollarName '$orig_head') (..HEAD)}
                        )
                      ]
                    )
                  ]
                )
                (command.BraceGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$rewritten_list'))})
                        (command.Simple
                          words: [
                            {(git)}
                            {(notes)}
                            {(copy)}
                            {(--for-rewrite) (Id.Lit_Equals '=') (rebase)}
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:4612)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}
                            )
                          ]
                        )
                        (C {(true)})
                      ]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:hook)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4634)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(git)} {(rev-parse)} {(--git-path)} {(hooks/post-rewrite)})
                                  ]
                                )
                            )
                          )
                        }
                      spids: [4632]
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [
                        (command.Sentence
                          child: 
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {(-x)} {(DQ ($ Id.VSub_DollarName '$hook'))})
                                (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$rewritten_list'))})
                              ]
                            )
                          terminator: (Token id:Id.Op_Semi val:';' span_id:4665)
                        )
                      ]
                      action: [
                        (command.Simple
                          words: [{(DQ ($ Id.VSub_DollarName '$hook'))} {(rebase)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Less val:'<' span_id:4676)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten_list'))}
                            )
                          ]
                        )
                        (C {(true)})
                      ]
                      spids: [4646 4667]
                    )
                  ]
                )
                (C {(warn)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4697)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Successfully rebased and updated ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:4702)
                                    ) (head_name.)
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:4710)
              arg_word: {(1)}
            )
          ]
        )
    )
    (command.ShFunction
      name: do_rest
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:4731)
              cond: [(C {(Id.Lit_Other ':')})]
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(do_next)})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Break val:break span_id:4743)
                        )
                      ]
                    )
                  ]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: skip_unnecessary_picks
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fd)
                  op: assign_op.Equal
                  rhs: {(3)}
                  spids: [4762]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DPipe]
              children: [
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:4766)
                  cond: [(C {(read)} {(-r)} {(command)} {(rest)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: 
                            {
                              (DQ ($ Id.VSub_DollarName '$fd') (',') ($ Id.VSub_DollarName '$command'))
                            }
                          arms: [
                            (case_arm
                              pat_list: [{(3) (Id.Lit_Comma ',') (pick)} {(3) (Id.Lit_Comma ',') (p)}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:sha1)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (braced_var_sub
                                            token: (Token id:Id.VSub_Name val:rest span_id:4811)
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op_id: Id.VOp1_DPercent
                                                arg_word: {(' *')}
                                              )
                                          )
                                        }
                                      spids: [4809]
                                    )
                                  ]
                                )
                                (command.Case
                                  to_match: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 4820
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                                  {(DQ ($ Id.VSub_DollarName '$sha1')) 
                                                    (Id.Lit_Other '^')
                                                  }
                                                )
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  arms: [
                                    (case_arm
                                      pat_list: [
                                        {(DQ ($ Id.VSub_DollarName '$onto')) (Id.Lit_Star '*')}
                                      ]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:onto)
                                              op: assign_op.Equal
                                              rhs: {($ Id.VSub_DollarName '$sha1')}
                                              spids: [4846]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4839 4843 4850 -1]
                                    )
                                    (case_arm
                                      pat_list: [{(Id.Lit_Star '*')}]
                                      action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:fd)
                                              op: assign_op.Equal
                                              rhs: {(1)}
                                              spids: [4857]
                                            )
                                          ]
                                        )
                                      ]
                                      spids: [4853 4854 4861 -1]
                                    )
                                  ]
                                )
                              ]
                              spids: [4795 4802 4867 -1]
                            )
                            (case_arm
                              pat_list: [
                                {(3) (Id.Lit_Comma ',') (DQ ($ Id.VSub_DollarName '$comment_char')) 
                                  (Id.Lit_Star '*')
                                }
                                {(3) (Id.Lit_Comma ',')}
                              ]
                              spids: [4870 4879 4886 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:fd)
                                      op: assign_op.Equal
                                      rhs: {(1)}
                                      spids: [4893]
                                    )
                                  ]
                                )
                              ]
                              spids: [4889 4890 4897 -1]
                            )
                          ]
                        )
                        (command.Simple
                          words: [
                            {(printf)}
                            {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:4906))}
                            {
                              (DQ ($ Id.VSub_DollarName '$command') 
                                (braced_var_sub
                                  token: (Token id:Id.VSub_Name val:rest span_id:4912)
                                  suffix_op: 
                                    (suffix_op.Unary
                                      op_id: Id.VTest_ColonPlus
                                      arg_word: {(' ')}
                                    )
                                ) ($ Id.VSub_DollarName '$rest')
                              )
                            }
                          ]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:4919)
                              fd: -1
                              arg_word: {($ Id.VSub_DollarName '$fd')}
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:4925)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:4930)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo') (.new))}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'3>>' span_id:4936)
                      fd: 3
                      arg_word: {(DQ ($ Id.VSub_DollarName '$done'))}
                    )
                  ]
                )
                (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} 
                  {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
                (command.Case
                  to_match: 
                    {
                      (DQ 
                        (command_sub
                          left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4963)
                          command_list: (command.CommandList children:[(C {(peek_next_command)})])
                        )
                      )
                    }
                  arms: [
                    (case_arm
                      pat_list: [{(squash)} {(s)} {(fixup)} {(f)}]
                      action: [(C {(record_in_rewritten)} {(DQ ($ Id.VSub_DollarName '$onto'))})]
                      spids: [4971 4978 4988 -1]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:4999)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(gettext)} {(DQ ('Could not skip unnecessary pick commands'))})
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: transform_todo_ids
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:5019)
                  cond: [(C {(read)} {(-r)} {(command)} {(rest)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {(DQ ($ Id.VSub_DollarName '$command'))}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(DQ ($ Id.VSub_DollarName '$comment_char')) (Id.Lit_Star '*')}
                                {(exec)}
                              ]
                              spids: [5042 5050 5061 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:sha1)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (command_sub
                                                left_token: 
                                                  (Token
                                                    id: Id.Left_DollarParen
                                                    val: '$('
                                                    span_id: 5069
                                                  )
                                                command_list: 
                                                  (command.CommandList
                                                    children: [
                                                      (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                                        {(DQ ($ Id.VSub_At '$@'))} 
                                                        {
                                                          (braced_var_sub
                                                            token: 
                                                              (Token
                                                                id: Id.VSub_Name
                                                                val: rest
                                                                span_id: 5083
                                                              )
                                                            suffix_op: 
                                                              (suffix_op.Unary
                                                                op_id: Id.VOp1_DPercent
                                                                arg_word: {('[\t ]*')}
                                                              )
                                                          )
                                                        }
                                                      )
                                                    ]
                                                  )
                                              )
                                            }
                                          spids: [5068]
                                        )
                                      ]
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:rest)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$sha1') (' ') 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: rest
                                                      span_id: 5097
                                                    )
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VOp1_Pound
                                                      arg_word: {('*[\t ]')}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [5092]
                                        )
                                      ]
                                    )
                                  ]
                                )
                              ]
                              spids: [5064 5065 5104 -1]
                            )
                          ]
                        )
                        (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5113))} 
                          {
                            (DQ ($ Id.VSub_DollarName '$command') 
                              (braced_var_sub
                                token: (Token id:Id.VSub_Name val:rest span_id:5119)
                                suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{(' ')})
                              ) ($ Id.VSub_DollarName '$rest')
                            )
                          }
                        )
                      ]
                    )
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:5129)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:5134)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo') (.new))}
                    )
                  ]
                )
                (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$todo') (.new))} 
                  {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: expand_todo_ids
      body: (command.BraceGroup children:[(C {(transform_todo_ids)})])
    )
    (command.ShFunction
      name: collapse_todo_ids
      body: (command.BraceGroup children:[(C {(transform_todo_ids)} {(--short)})])
    )
    (command.ShFunction
      name: rearrange_squash
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:5221)
              cond: [(C {(read)} {(-r)} {(pick)} {(sha1)} {(message)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-z)} {(DQ (${ Id.VSub_Name format))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:message)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5250)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(git)} {(log)} {(-n)} {(1)} 
                                            {(--format) (Id.Lit_Equals '=') (DQ ('%s'))} {(${ Id.VSub_Name sha1)}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [5249]
                            )
                          ]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$message'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(DQ ('squash! ')) (Id.Lit_Star '*')}
                            {(DQ ('fixup! ')) (Id.Lit_Star '*')}
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:action)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (braced_var_sub
                                          token: (Token id:Id.VSub_Name val:message span_id:5295)
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VOp1_DPercent
                                              arg_word: {('!*')}
                                            )
                                        )
                                      )
                                    }
                                  spids: [5292]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:rest)
                                  op: assign_op.Equal
                                  rhs: {($ Id.VSub_DollarName '$message')}
                                  spids: [5302]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:prefix)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [5306]
                                )
                              ]
                            )
                            (command.WhileUntil
                              keyword: (Token id:Id.KW_While val:while span_id:5313)
                              cond: [(C {(Id.Lit_Other ':')})]
                              body: 
                                (command.DoGroup
                                  children: [
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName '$rest'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(DQ ('squash! ')) (Id.Lit_Star '*')}
                                            {(DQ ('fixup! ')) (Id.Lit_Star '*')}
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:prefix)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ ($ Id.VSub_DollarName '$prefix') 
                                                        (braced_var_sub
                                                          token: 
                                                            (Token
                                                              id: Id.VSub_Name
                                                              val: rest
                                                              span_id: 5346
                                                            )
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op_id: Id.VOp1_DPercent
                                                              arg_word: {('!*')}
                                                            )
                                                        ) (',')
                                                      )
                                                    }
                                                  spids: [5342]
                                                )
                                              ]
                                            )
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:rest)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (DQ 
                                                        (braced_var_sub
                                                          token: 
                                                            (Token
                                                              id: Id.VSub_Name
                                                              val: rest
                                                              span_id: 5357
                                                            )
                                                          suffix_op: 
                                                            (suffix_op.Unary
                                                              op_id: Id.VOp1_Pound
                                                              arg_word: {('*! ')}
                                                            )
                                                        )
                                                      )
                                                    }
                                                  spids: [5354]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [5330 5339 5364 -1]
                                        )
                                        (case_arm
                                          pat_list: [{(Id.Lit_Star '*')}]
                                          action: [
                                            (command.ControlFlow
                                              token: 
                                                (Token
                                                  id: Id.ControlFlow_Break
                                                  val: break
                                                  span_id: 5371
                                                )
                                            )
                                          ]
                                          spids: [5367 5368 5374 -1]
                                        )
                                      ]
                                    )
                                  ]
                                )
                            )
                            (C {(printf)} 
                              {(SQ (Token id:Id.Lit_Chars val:'%s %s %s %s\\n' span_id:5386))} {(DQ ($ Id.VSub_DollarName '$sha1'))} {(DQ ($ Id.VSub_DollarName '$action'))} 
                              {(DQ ($ Id.VSub_DollarName '$prefix'))} {(DQ ($ Id.VSub_DollarName '$rest'))}
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} 
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: (Token id:Id.VSub_Name val:rest span_id:5424)
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_Pound
                                                    arg_word: {('* ')}
                                                  )
                                              )
                                            )
                                          } {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$rest'))}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:5435)
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:fullsha)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (command_sub
                                                  left_token: 
                                                    (Token
                                                      id: Id.Left_DollarParen
                                                      val: '$('
                                                      span_id: 5442
                                                    )
                                                  command_list: 
                                                    (command.CommandList
                                                      children: [
                                                        (command.Simple
                                                          words: [
                                                            {(git)}
                                                            {(rev-parse)}
                                                            {(-q)}
                                                            {(--verify)}
                                                            {(DQ ($ Id.VSub_DollarName '$rest'))}
                                                          ]
                                                          redirects: [
                                                            (redir.Redir
                                                              op: 
                                                                (Token
                                                                  id: Id.Redir_Great
                                                                  val: '2>'
                                                                  span_id: 5455
                                                                )
                                                              fd: 2
                                                              arg_word: {(/dev/null)}
                                                            )
                                                          ]
                                                        )
                                                      ]
                                                    )
                                                )
                                              )
                                            }
                                          spids: [5440]
                                        )
                                      ]
                                    )
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [
                                            (command.Sentence
                                              child: 
                                                (C {(test)} {(-n)} 
                                                  {(DQ ($ Id.VSub_DollarName '$fullsha'))}
                                                )
                                              terminator: (Token id:Id.Op_Semi val:';' span_id:5470)
                                            )
                                          ]
                                          action: [
                                            (C {(echo)} 
                                              {
                                                (DQ ($ Id.VSub_DollarName '$sha1') (' +') 
                                                  ($ Id.VSub_DollarName '$action') (' ') ($ Id.VSub_DollarName '$prefix') (' ') ($ Id.VSub_DollarName '$fullsha')
                                                )
                                              }
                                            )
                                          ]
                                          spids: [5461 5472]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5418 5437]
                                )
                              ]
                            )
                          ]
                          spids: [5280 5289 -1 5502]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:5507)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1') (.sq))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:5513)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-s)} {(DQ ($ Id.VSub_Number '$1') (.sq))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:5530)
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:used)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [5534]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:5537)
              cond: [(C {(read)} {(-r)} {(pick)} {(sha1)} {(message)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.Case
                      to_match: {(DQ (' ') ($ Id.VSub_DollarName '$used'))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Id.Lit_Star '*') (DQ (' ') ($ Id.VSub_DollarName '$sha1') (' ')) 
                              (Id.Lit_Star '*')
                            }
                          ]
                          action: [
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Continue val:continue span_id:5572)
                            )
                          ]
                          spids: [5563 5570 5574 -1]
                        )
                      ]
                    )
                    (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5583))} 
                      {
                        (DQ ($ Id.VSub_DollarName '$pick') (' ') ($ Id.VSub_DollarName '$sha1') (' ') 
                          ($ Id.VSub_DollarName '$message')
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-z)} {(DQ (${ Id.VSub_Name format))})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:message)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:5608)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(git)} {(log)} {(-n)} {(1)} 
                                            {(--format) (Id.Lit_Equals '=') (DQ ('%s'))} {(${ Id.VSub_Name sha1)}
                                          )
                                        ]
                                      )
                                  )
                                }
                              spids: [5607]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:used)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName '$used') ($ Id.VSub_DollarName '$sha1') (' '))}
                          spids: [5629]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:5637)
                      cond: [(C {(read)} {(-r)} {(squash)} {(action)} {(msg_prefix)} {(msg_content)})]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {(DQ (' ') ($ Id.VSub_DollarName '$used'))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Id.Lit_Star '*') 
                                      (DQ (' ') ($ Id.VSub_DollarName '$squash') (' ')) (Id.Lit_Star '*')
                                    }
                                  ]
                                  action: [
                                    (command.ControlFlow
                                      token: 
                                        (Token
                                          id: Id.ControlFlow_Continue
                                          val: continue
                                          span_id: 5674
                                        )
                                    )
                                  ]
                                  spids: [5665 5672 5676 -1]
                                )
                              ]
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:emit)
                                  op: assign_op.Equal
                                  rhs: {(0)}
                                  spids: [5682]
                                )
                              ]
                            )
                            (command.Case
                              to_match: {(DQ ($ Id.VSub_DollarName '$action'))}
                              arms: [
                                (case_arm
                                  pat_list: [{(Id.Lit_Other '+') (Id.Lit_Star '*')}]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:action)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ 
                                                (braced_var_sub
                                                  token: 
                                                    (Token
                                                      id: Id.VSub_Name
                                                      val: action
                                                      span_id: 5703
                                                    )
                                                  suffix_op: 
                                                    (suffix_op.Unary
                                                      op_id: Id.VOp1_Pound
                                                      arg_word: {('+')}
                                                    )
                                                )
                                              )
                                            }
                                          spids: [5700]
                                        )
                                      ]
                                    )
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName '$msg_content'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(DQ ($ Id.VSub_DollarName '$sha1')) (Id.Lit_Star '*')}
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:emit)
                                                  op: assign_op.Equal
                                                  rhs: {(1)}
                                                  spids: [5728]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [5722 5726 5730 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5695 5697 5734 -1]
                                )
                                (case_arm
                                  pat_list: [{(Id.Lit_Star '*')}]
                                  action: [
                                    (command.Case
                                      to_match: {(DQ ($ Id.VSub_DollarName '$message'))}
                                      arms: [
                                        (case_arm
                                          pat_list: [
                                            {(DQ ($ Id.VSub_DollarName '$msg_content')) 
                                              (Id.Lit_Star '*')
                                            }
                                          ]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:emit)
                                                  op: assign_op.Equal
                                                  rhs: {(1)}
                                                  spids: [5759]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [5753 5757 5761 -1]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5737 5738 5765 -1]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(test)} {($ Id.VSub_DollarName '$emit')} 
                                          {(Id.Lit_Equals '=')} {(1)}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:5780)
                                    )
                                  ]
                                  action: [
                                    (command.If
                                      arms: [
                                        (if_arm
                                          cond: [(C {(test)} {(-n)} {(DQ (${ Id.VSub_Name format))})]
                                          action: [
                                            (command.ShAssignment
                                              pairs: [
                                                (assign_pair
                                                  lhs: (sh_lhs_expr.Name name:msg_content)
                                                  op: assign_op.Equal
                                                  rhs: 
                                                    {
                                                      (command_sub
                                                        left_token: 
                                                          (Token
                                                            id: Id.Left_DollarParen
                                                            val: '$('
                                                            span_id: 5802
                                                          )
                                                        command_list: 
                                                          (command.CommandList
                                                            children: [
                                                              (C {(git)} {(log)} {(-n)} {(1)} 
                                                                {(--format) (Id.Lit_Equals '=') 
                                                                  (DQ (${ Id.VSub_Name format))
                                                                } {(${ Id.VSub_Name squash)}
                                                              )
                                                            ]
                                                          )
                                                      )
                                                    }
                                                  spids: [5801]
                                                )
                                              ]
                                            )
                                          ]
                                          spids: [5785 5798]
                                        )
                                      ]
                                      else_action: [
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:msg_content)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (DQ 
                                                    (command_sub
                                                      left_token: 
                                                        (Token
                                                          id: Id.Left_DollarParen
                                                          val: '$('
                                                          span_id: 5830
                                                        )
                                                      command_list: 
                                                        (command.CommandList
                                                          children: [
                                                            (command.Pipeline
                                                              children: [
                                                                (C {(echo)} 
                                                                  {
                                                                    (DQ 
                                                                      ($ Id.VSub_DollarName 
'$msg_prefix'
                                                                      )
                                                                    )
                                                                  }
                                                                )
                                                                (C {(sed)} {(DQ ('s/,/! /g'))})
                                                              ]
                                                              negated: F
                                                            )
                                                          ]
                                                        )
                                                    ) ($ Id.VSub_DollarName '$msg_content')
                                                  )
                                                }
                                              spids: [5828]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                    (C {(printf)} 
                                      {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:5855))} 
                                      {
                                        (DQ ($ Id.VSub_DollarName '$action') (' ') 
                                          ($ Id.VSub_DollarName '$squash') (' ') ($ Id.VSub_DollarName '$msg_content')
                                        )
                                      }
                                    )
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:used)
                                          op: assign_op.Equal
                                          rhs: 
                                            {
                                              (DQ ($ Id.VSub_DollarName '$used') 
                                                ($ Id.VSub_DollarName '$squash') (' ')
                                              )
                                            }
                                          spids: [5867]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [5771 5782]
                                )
                              ]
                            )
                          ]
                        )
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:5880)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_Number '$1') (.sq))}
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:5889)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1') (.rearranged))}
                )
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:5895)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
            (command.Simple
              words: [{(cat)} {(DQ ($ Id.VSub_Number '$1') (.rearranged))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:5908)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
            (C {(rm)} {(-f)} {(DQ ($ Id.VSub_Number '$1') (.sq))} 
              {(DQ ($ Id.VSub_Number '$1') (.rearranged))}
            )
          ]
        )
    )
    (command.ShFunction
      name: add_exec_commands
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.BraceGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:first)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [5948]
                        )
                      ]
                    )
                    (command.WhileUntil
                      keyword: (Token id:Id.KW_While val:while span_id:5952)
                      cond: [(C {(read)} {(-r)} {(insn)} {(rest)})]
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Case
                              to_match: {($ Id.VSub_DollarName '$insn')}
                              arms: [
                                (case_arm
                                  pat_list: [{(pick)}]
                                  action: [
                                    (command.AndOr
                                      ops: [Id.Op_DPipe]
                                      children: [
                                        (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$first'))})
                                        (C {(printf)} {(DQ ('%s'))} {(DQ ($ Id.VSub_DollarName '$cmd'))})
                                      ]
                                    )
                                  ]
                                  spids: [5973 5974 5999 -1]
                                )
                              ]
                            )
                            (C {(printf)} {(DQ ('%s %s') (Id.Lit_Other '\\') (n))} 
                              {(DQ ($ Id.VSub_DollarName '$insn'))} {(DQ ($ Id.VSub_DollarName '$rest'))}
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:first)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [6022]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (C {(printf)} {(DQ ('%s'))} {(DQ ($ Id.VSub_DollarName '$cmd'))})
                  ]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:6041)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                    )
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:6046)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$1') (.new))}
                    )
                  ]
                )
                (C {(mv)} {(DQ ($ Id.VSub_Number '$1') (.new))} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: check_commit_sha
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:badsha)
                  op: assign_op.Equal
                  rhs: {(0)}
                  spids: [6092]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_Number '$1'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:badsha)
                          op: assign_op.Equal
                          rhs: {(1)}
                          spids: [6110]
                        )
                      ]
                    )
                  ]
                  spids: [6096 6107]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:sha1_verif)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6119)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(git)} {(rev-parse)} {(--verify)} {(--quiet)} 
                                      {($ Id.VSub_Number '$1') (Id.Lit_Other '^') (Id.Lit_LBrace '{') 
                                        (commit) (Id.Lit_RBrace '}')
                                      }
                                    )
                                  ]
                                )
                            )
                          )
                        }
                      spids: [6117]
                    )
                  ]
                )
                (command.If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$sha1_verif'))})]
                      action: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:badsha)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [6151]
                            )
                          ]
                        )
                      ]
                      spids: [6137 6148]
                    )
                  ]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {($ Id.VSub_DollarName '$badsha')} {(-ne)} {(0)})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:line)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6178)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (C {(sed)} {(-n)} {(-e)} {(DQ (${ Id.VSub_Number 2) (p))} 
                                          {(DQ ($ Id.VSub_Number '$3'))}
                                        )
                                      ]
                                    )
                                )
                              )
                            }
                          spids: [6176]
                        )
                      ]
                    )
                    (C {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6202)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ 
                                        (
"Warning: the SHA-1 is missing or isn't a commit in the following line:\n"
                                        ) (' - ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:6209)) (line)
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(warn)})
                  ]
                  spids: [6162 6173]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:6223)
              arg_word: {($ Id.VSub_DollarName '$badsha')}
            )
          ]
        )
    )
    (command.ShFunction
      name: check_bad_cmd_and_sha
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:retval)
                  op: assign_op.Equal
                  rhs: {(0)}
                  spids: [6244]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:lineno)
                  op: assign_op.Equal
                  rhs: {(0)}
                  spids: [6248]
                )
              ]
            )
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:6252)
              cond: [(C {(read)} {(-r)} {(command)} {(rest)})]
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:lineno)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: (arith_expr.ArithWord w:{($ Id.VSub_DollarName '$lineno')})
                                    right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)})
                                  )
                              )
                            }
                          spids: [6266]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {($ Id.VSub_DollarName '$command')}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(DQ ($ Id.VSub_DollarName '$comment_char')) (Id.Lit_Star '*')}
                            {(SQ )}
                            {(noop)}
                            {(x)}
                            {(exec)}
                          ]
                          spids: [6286 6299 6306 -1]
                        )
                        (case_arm
                          pat_list: [{(DQ ($ Id.VSub_DollarName '$cr'))}]
                          spids: [6309 6312 6323 -1]
                        )
                        (case_arm
                          pat_list: [
                            {(pick)}
                            {(p)}
                            {(drop)}
                            {(d)}
                            {(reword)}
                            {(r)}
                            {(edit)}
                            {(e)}
                            {(squash)}
                            {(s)}
                            {(fixup)}
                            {(f)}
                          ]
                          action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Pipeline
                                      children: [
                                        (C {(check_commit_sha)} 
                                          {
                                            (DQ 
                                              (braced_var_sub
                                                token: (Token id:Id.VSub_Name val:rest span_id:6360)
                                                suffix_op: 
                                                  (suffix_op.Unary
                                                    op_id: Id.VOp1_DPercent
                                                    arg_word: {('[ \t]*')}
                                                  )
                                              )
                                            )
                                          } {(DQ ($ Id.VSub_DollarName '$lineno'))} {(DQ ($ Id.VSub_Number '$1'))}
                                        )
                                      ]
                                      negated: T
                                    )
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:retval)
                                          op: assign_op.Equal
                                          rhs: {(1)}
                                          spids: [6378]
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [6352 6375]
                                )
                              ]
                            )
                          ]
                          spids: [6326 6349 6385 -1]
                        )
                        (case_arm
                          pat_list: [{(Id.Lit_Star '*')}]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:line)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 6394
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(sed)} {(-n)} {(-e)} 
                                                  {(DQ (${ Id.VSub_Name lineno) (p))} {(DQ ($ Id.VSub_Number '$1'))}
                                                )
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  spids: [6392]
                                )
                              ]
                            )
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6418)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(eval_gettext)} 
                                            {
                                              (DQ 
                                                (
"Warning: the command isn't recognized in the following line:\n"
                                                ) (' - ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:6425)) (line)
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(warn)})
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:retval)
                                  op: assign_op.Equal
                                  rhs: {(1)}
                                  spids: [6435]
                                )
                              ]
                            )
                          ]
                          spids: [6388 6389 6439 -1]
                        )
                      ]
                    )
                  ]
                )
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Less val:'<' span_id:6447)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1'))}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Return val:return span_id:6453)
              arg_word: {($ Id.VSub_DollarName '$retval')}
            )
          ]
        )
    )
    (command.ShFunction
      name: todo_list_to_sha_list
      body: 
        (command.BraceGroup
          children: [
            (command.Pipeline
              children: [
                (C {(git)} {(stripspace)} {(--strip-comments)})
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:6483)
                  cond: [(C {(read)} {(-r)} {(command)} {(sha1)} {(rest)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.Case
                          to_match: {($ Id.VSub_DollarName '$command')}
                          arms: [
                            (case_arm
                              pat_list: [
                                {(DQ ($ Id.VSub_DollarName '$comment_char')) (Id.Lit_Star '*')}
                                {(SQ )}
                                {(noop)}
                                {(x)}
                                {(DQ (exec))}
                              ]
                              spids: [6506 6521 6524 -1]
                            )
                            (case_arm
                              pat_list: [{(Id.Lit_Star '*')}]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:long_sha)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 6532
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (command.Simple
                                                    words: [
                                                      {(git)}
                                                      {(rev-list)}
                                                      {(--no-walk)}
                                                      {(DQ ($ Id.VSub_DollarName '$sha1'))}
                                                    ]
                                                    redirects: [
                                                      (redir.Redir
                                                        op: 
                                                          (Token
                                                            id: Id.Redir_Great
                                                            val: '2>'
                                                            span_id: 6543
                                                          )
                                                        fd: 2
                                                        arg_word: {(/dev/null)}
                                                      )
                                                    ]
                                                  )
                                                ]
                                              )
                                          )
                                        }
                                      spids: [6531]
                                    )
                                  ]
                                )
                                (C {(printf)} {(DQ ('%s') (Id.Lit_Other '\\') (n))} 
                                  {(DQ ($ Id.VSub_DollarName '$long_sha'))}
                                )
                              ]
                              spids: [6527 6528 6561 -1]
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: warn_lines
      body: 
        (command.BraceGroup
          children: [
            (command.WhileUntil
              keyword: (Token id:Id.KW_While val:while span_id:6583)
              cond: [(C {(read)} {(-r)} {(line)})]
              body: 
                (command.DoGroup
                  children: [(C {(warn)} {(DQ (' - ') ($ Id.VSub_DollarName '$line'))})]
                )
            )
          ]
        )
    )
    (command.ShFunction
      name: checkout_onto
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') (': checkout ') 
                        ($ Id.VSub_DollarName '$onto_name')
                      )
                    }
                  spids: [6619]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(output)} {(git)} {(checkout)} {($ Id.VSub_DollarName '$onto')})
                (C {(die_abort)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6640)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('could not detach HEAD'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (C {(git)} {(update-ref)} {(ORIG_HEAD)} {($ Id.VSub_DollarName '$orig_head')})
          ]
        )
    )
    (command.ShFunction
      name: get_missing_commit_check_level
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6670)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git)} {(config)} {(--get)} {(rebase.missingCommitsCheck)})]
                          )
                      )
                    }
                  spids: [6669]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:check_level span_id:6683)
                        suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(ignore)})
                      )
                    }
                  spids: [6681]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(printf)} {(SQ (Token id:Id.Lit_Chars val:'%s' span_id:6696))} 
                  {(DQ ($ Id.VSub_DollarName '$check_level'))}
                )
                (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:A-Z span_id:6708))} 
                  {(SQ (Token id:Id.Lit_Chars val:a-z span_id:6712))}
                )
              ]
              negated: F
            )
          ]
        )
    )
    (command.ShFunction
      name: check_todo_list
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:raise_error)
                  op: assign_op.Equal
                  rhs: {(f)}
                  spids: [6738]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:check_level)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6744)
                        command_list: 
                          (command.CommandList
                            children: [(C {(get_missing_commit_check_level)})]
                          )
                      )
                    }
                  spids: [6743]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$check_level'))}
              arms: [
                (case_arm
                  pat_list: [{(warn)} {(error)}]
                  action: [
                    (command.Simple
                      words: [{(todo_list_to_sha_list)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:6771)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.backup)}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:6777)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(todo_list_to_sha_list)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:6786)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:6791)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(sort)} {(-u)} {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:6812)
                          fd: -1
                          arg_word: 
                            {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1) (Id.Lit_Other '+')}
                        )
                      ]
                    )
                    (C {(mv)} {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1) (Id.Lit_Other '+')} 
                      {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)}
                    )
                    (command.Simple
                      words: [{(sort)} {(-u)} {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:6843)
                          fd: -1
                          arg_word: 
                            {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1) (Id.Lit_Other '+')}
                        )
                      ]
                    )
                    (C {(mv)} {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1) (Id.Lit_Other '+')} 
                      {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1)}
                    )
                    (command.Simple
                      words: [
                        {(comm)}
                        {(-2)}
                        {(-3)}
                        {(DQ ($ Id.VSub_DollarName '$todo')) (.oldsha1)}
                        {(DQ ($ Id.VSub_DollarName '$todo')) (.newsha1)}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:6881)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.miss)}
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$todo')) (.miss)})]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(test)} {(DQ ($ Id.VSub_DollarName '$check_level'))} 
                                  {(Id.Lit_Equals '=')} {(error)}
                                )
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:raise_error)
                                      op: assign_op.Equal
                                      rhs: {(t)}
                                      spids: [6920]
                                    )
                                  ]
                                )
                              ]
                            )
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6928)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} 
                                            {
                                              (DQ 
                                                (
'Warning: some commits may have been dropped accidentally.\n'
                                                ) ('Dropped commits (newer to older):')
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:opt)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (
'--no-walk=sorted --format=oneline --abbrev-commit --stdin'
                                        )
                                      )
                                    }
                                  spids: [6945]
                                )
                              ]
                            )
                            (command.Pipeline
                              children: [
                                (command.Simple
                                  words: [{(git)} {(rev-list)} {($ Id.VSub_DollarName '$opt')}]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_Less val:'<' span_id:6957)
                                      fd: -1
                                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.miss)}
                                    )
                                  ]
                                )
                                (C {(warn_lines)})
                              ]
                              negated: F
                            )
                            (C {(warn)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:6972)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} 
                                            {
                                              (DQ ('To avoid this message, use ') 
                                                (word_part.EscapedLiteral
                                                  token: 
                                                    (Token
                                                      id: Id.Lit_EscapedChar
                                                      val: '\\"'
                                                      span_id: 6978
                                                    )
                                                ) (drop) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\"' span_id:6980)) 
                                                (' 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.'
                                                )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                            (C {(warn)})
                          ]
                          spids: [6893 6905]
                        )
                      ]
                    )
                  ]
                  spids: [6759 6762 6996 -1]
                )
                (case_arm pat_list:[{(ignore)}] spids:[6999 7000 7003 -1])
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7013)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(eval_gettext)} 
                                    {
                                      (DQ ('Unrecognized setting ') 
                                        (word_part.EscapedLiteral
                                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:7018)
                                        ) ('check_level for option rebase.missingCommitsCheck. Ignoring.')
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [7006 7007 7025 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Pipeline
                      children: [(C {(check_bad_cmd_and_sha)} {(DQ ($ Id.VSub_DollarName '$todo'))})]
                      negated: T
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:raise_error)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [7046]
                        )
                      ]
                    )
                  ]
                  spids: [7032 7043]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {($ Id.VSub_DollarName '$raise_error')} {(Id.Lit_Equals '=')} {(t)})
                  ]
                  action: [
                    (C {(checkout_onto)})
                    (C {(warn)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7091)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} 
                                    {
                                      (DQ 
                                        (
"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'."
                                        )
                                      )
                                    }
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                    (C {(die)} 
                      {
                        (DQ 
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7104)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(gettext)} 
                                    {(DQ ("Or you can abort the rebase with 'git rebase --abort'."))}
                                  )
                                ]
                              )
                          )
                        )
                      }
                    )
                  ]
                  spids: [7054 7065]
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction
      name: git_rebase__interactive
      body: 
        (command.BraceGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$action'))}
              arms: [
                (case_arm
                  pat_list: [{(Id.ControlFlow_Continue continue)}]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(git)} {(diff-index)} {(--cached)} {(--quiet)} {(HEAD)} {(--)})]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe Id.Op_DPipe]
                              children: [
                                (C {(test)} {(Id.KW_Bang '!')} {(-f)} 
                                  {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/CHERRY_PICK_HEAD)}
                                )
                                (C {(rm)} {(DQ ($ Id.VSub_DollarName '$GIT_DIR')) (/CHERRY_PICK_HEAD)})
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 7220
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(gettext)} 
                                                {(DQ ('Could not remove CHERRY_PICK_HEAD'))}
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                          spids: [7170 7185]
                        )
                      ]
                      else_action: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Pipeline
                                  children: [
                                    (C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$author_script'))})
                                  ]
                                  negated: T
                                )
                              ]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:gpg_sign_opt_quoted)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (braced_var_sub
                                            token: 
                                              (Token
                                                id: Id.VSub_Name
                                                val: gpg_sign_opt
                                                span_id: 7251
                                              )
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op_id: Id.VTest_ColonPlus
                                                arg_word: 
                                                  {
                                                    (command_sub
                                                      left_token: 
                                                        (Token
                                                          id: Id.Left_DollarParen
                                                          val: '$('
                                                          span_id: 7253
                                                        )
                                                      command_list: 
                                                        (command.CommandList
                                                          children: [
                                                            (C {(git)} {(rev-parse)} {(--sq-quote)} 
                                                              {
                                                                (DQ 
                                                                  ($ Id.VSub_DollarName 
'$gpg_sign_opt'
                                                                  )
                                                                )
                                                              }
                                                            )
                                                          ]
                                                        )
                                                    )
                                                  }
                                              )
                                          )
                                        }
                                      spids: [7249]
                                    )
                                  ]
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 7270
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(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:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:7280)) 
                                                    ('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: 
                                                        (Token
                                                          id: Id.Lit_EscapedChar
                                                          val: '\\$'
                                                          span_id: 7286
                                                        )
                                                    ) ('gpg_sign_opt_quoted\n') ('\n') ("In both cases, once you're done, continue with:\n") ('\n') 
                                                    ('  git rebase --continue\n')
                                                  )
                                                }
                                              )
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                              spids: [7233 7246]
                            )
                          ]
                        )
                        (command.AndOr
                          ops: [Id.Op_DPipe]
                          children: [
                            (C {(.)} {(DQ ($ Id.VSub_DollarName '$author_script'))})
                            (C {(die)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7312)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} 
                                            {
                                              (DQ 
                                                (
'Error trying to find the author identity to amend commit'
                                                )
                                              )
                                            }
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [(C {(test)} {(-f)} {(DQ ($ Id.VSub_DollarName '$amend'))})]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:current_head)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 7337
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})
                                                ]
                                              )
                                          )
                                        }
                                      spids: [7336]
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {(test)} {(DQ ($ Id.VSub_DollarName '$current_head'))} 
                                      {(Id.Lit_Equals '=')} 
                                      {
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 7356
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (C {(cat)} {(DQ ($ Id.VSub_DollarName '$amend'))})
                                              ]
                                            )
                                        )
                                      }
                                    )
                                    (C {(die)} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 7370
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(gettext)} 
                                                    {
                                                      (DQ 
                                                        (
'You have uncommitted changes in your working tree. Please commit them\n'
                                                        ) ("first and then run 'git rebase --continue' again.")
                                                      )
                                                    }
                                                  )
                                                ]
                                              )
                                          )
                                        )
                                      }
                                    )
                                  ]
                                )
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (C {(do_with_author)} {(git)} {(commit)} {(--amend)} {(--no-verify)} 
                                      {(-F)} {(DQ ($ Id.VSub_DollarName '$msg'))} {(-e)} 
                                      {
                                        (braced_var_sub
                                          token: 
                                            (Token
                                              id: Id.VSub_Name
                                              val: gpg_sign_opt
                                              span_id: 7403
                                            )
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op_id: Id.VTest_ColonPlus
                                              arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                            )
                                        )
                                      }
                                    )
                                    (C {(die)} 
                                      {
                                        (DQ 
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 7416
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (C {(gettext)} 
                                                    {(DQ ('Could not commit staged changes.'))}
                                                  )
                                                ]
                                              )
                                          )
                                        )
                                      }
                                    )
                                  ]
                                )
                              ]
                              spids: [7322 7333]
                            )
                          ]
                          else_action: [
                            (command.AndOr
                              ops: [Id.Op_DPipe]
                              children: [
                                (C {(do_with_author)} {(git)} {(commit)} {(--no-verify)} {(-F)} 
                                  {(DQ ($ Id.VSub_DollarName '$msg'))} {(-e)} 
                                  {
                                    (braced_var_sub
                                      token: (Token id:Id.VSub_Name val:gpg_sign_opt span_id:7448)
                                      suffix_op: 
                                        (suffix_op.Unary
                                          op_id: Id.VTest_ColonPlus
                                          arg_word: {(DQ ($ Id.VSub_DollarName '$gpg_sign_opt'))}
                                        )
                                    )
                                  }
                                )
                                (C {(die)} 
                                  {
                                    (DQ 
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 7461
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(gettext)} {(DQ ('Could not commit staged changes.'))})
                                            ]
                                          )
                                      )
                                    )
                                  }
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(-r)} {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)})
                          ]
                          action: [
                            (C {(record_in_rewritten)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7496)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(cat)} 
                                            {(DQ ($ Id.VSub_DollarName '$state_dir')) (/stopped-sha)}
                                          )
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                          spids: [7478 7490]
                        )
                      ]
                    )
                    (C {(require_clean_work_tree)} {(DQ (rebase))})
                    (C {(do_rest)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:7521)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [7162 7163 7526 -1]
                )
                (case_arm
                  pat_list: [{(skip)}]
                  action: [
                    (C {(git)} {(rerere)} {(clear)})
                    (C {(do_rest)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Return val:return span_id:7543)
                      arg_word: {(0)}
                    )
                  ]
                  spids: [7528 7529 7548 -1]
                )
                (case_arm
                  pat_list: [{(edit-todo)}]
                  action: [
                    (command.Simple
                      words: [{(git)} {(stripspace)} {(--strip-comments)}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Less val:'<' span_id:7560)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                        )
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:7565)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo')) (.new)}
                        )
                      ]
                    )
                    (C {(mv)} {(-f)} {(DQ ($ Id.VSub_DollarName '$todo')) (.new)} 
                      {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                    (C {(collapse_todo_ids)})
                    (C {(append_todo_help)})
                    (command.Pipeline
                      children: [
                        (C {(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')
                            )
                          }
                        )
                        (command.Simple
                          words: [{(git)} {(stripspace)} {(--comment-lines)}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_DGreat val:'>>' span_id:7610)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(git_sequence_editor)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7629)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(gettext)} {(DQ ('Could not execute editor'))})]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (C {(expand_todo_ids)})
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:7643)
                    )
                  ]
                  spids: [7550 7551 7646 -1]
                )
              ]
            )
            (C {(comment_for_reflog)} {(start)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(Id.KW_Bang '!')} {(-z)} {(DQ ($ Id.VSub_DollarName '$switch_to'))})
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GIT_REFLOG_ACTION)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$GIT_REFLOG_ACTION') (': checkout ') 
                                ($ Id.VSub_DollarName '$switch_to')
                              )
                            }
                          spids: [7671]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(output)} {(git)} {(checkout)} {(DQ ($ Id.VSub_DollarName '$switch_to'))} 
                          {(--)}
                        )
                        (C {(die)} 
                          {
                            (DQ 
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7697)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(eval_gettext)} 
                                        {
                                          (DQ ('Could not checkout ') 
                                            (word_part.EscapedLiteral
                                              token: 
                                                (Token
                                                  id: Id.Lit_EscapedChar
                                                  val: '\\$'
                                                  span_id: 7702
                                                )
                                            ) (switch_to)
                                          )
                                        }
                                      )
                                    ]
                                  )
                              )
                            )
                          }
                        )
                      ]
                    )
                    (C {(comment_for_reflog)} {(start)})
                  ]
                  spids: [7656 7668]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:orig_head)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7718)
                            command_list: 
                              (command.CommandList
                                children: [(C {(git)} {(rev-parse)} {(--verify)} {(HEAD)})]
                              )
                          )
                        }
                      spids: [7717]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7733)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('No HEAD?'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(mkdir)} {(-p)} {(DQ ($ Id.VSub_DollarName '$state_dir'))})
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7755)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Could not create temporary ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:7760)
                                    ) (state_dir)
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.Simple
                  words: [{(Id.Lit_Other ':')}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:7769)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/interactive)}
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7781)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Could not mark as interactive'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (C {(write_basic_state)})
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(t)} {(Id.Lit_Equals '=')} 
                      {(DQ ($ Id.VSub_DollarName '$preserve_merges'))}
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$rebase_root'))})]
                          action: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(mkdir)} {(DQ ($ Id.VSub_DollarName '$rewritten'))})
                                (command.ForEach
                                  iter_name: c
                                  iter_words: [
                                    {
                                      (command_sub
                                        left_token: 
                                          (Token
                                            id: Id.Left_DollarParen
                                            val: '$('
                                            span_id: 7836
                                          )
                                        command_list: 
                                          (command.CommandList
                                            children: [
                                              (C {(git)} {(merge-base)} {(--all)} 
                                                {($ Id.VSub_DollarName '$orig_head')} {($ Id.VSub_DollarName '$upstream')}
                                              )
                                            ]
                                          )
                                      )
                                    }
                                  ]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (command.AndOr
                                          ops: [Id.Op_DPipe]
                                          children: [
                                            (command.Simple
                                              words: [{(echo)} {($ Id.VSub_DollarName '$onto')}]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:7856)
                                                  fd: -1
                                                  arg_word: 
                                                    {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                                      ($ Id.VSub_DollarName '$c')
                                                    }
                                                )
                                              ]
                                            )
                                            (C {(die)} 
                                              {
                                                (DQ 
                                                  (command_sub
                                                    left_token: 
                                                      (Token
                                                        id: Id.Left_DollarParen
                                                        val: '$('
                                                        span_id: 7870
                                                      )
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (C {(gettext)} 
                                                            {
                                                              (DQ 
                                                                ('Could not init rewritten commits')
                                                              )
                                                            }
                                                          )
                                                        ]
                                                      )
                                                  )
                                                )
                                              }
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                          ]
                          spids: [7807 7818]
                        )
                      ]
                      else_action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (C {(mkdir)} {(DQ ($ Id.VSub_DollarName '$rewritten'))})
                            (command.Simple
                              words: [{(echo)} {($ Id.VSub_DollarName '$onto')}]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'>' span_id:7899)
                                  fd: -1
                                  arg_word: {(DQ ($ Id.VSub_DollarName '$rewritten')) (/root)}
                                )
                              ]
                            )
                            (C {(die)} 
                              {
                                (DQ 
                                  (command_sub
                                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7912)
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(gettext)} {(DQ ('Could not init rewritten commits'))})
                                        ]
                                      )
                                  )
                                )
                              }
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:merges_option)
                          op: assign_op.Equal
                          rhs: (word.Empty)
                          spids: [7937]
                        )
                      ]
                    )
                  ]
                  spids: [7792 7804]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:merges_option)
                      op: assign_op.Equal
                      rhs: {(DQ ('--no-merges --cherry-pick'))}
                      spids: [7942]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:shorthead)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7951)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$orig_head')})
                            ]
                          )
                      )
                    }
                  spids: [7950]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:shortonto)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7962)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(git)} {(rev-parse)} {(--short)} {($ Id.VSub_DollarName '$onto')})
                            ]
                          )
                      )
                    }
                  spids: [7961]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$rebase_root'))})]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:shortupstream)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:7990)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(git)} {(rev-parse)} {(--short)} 
                                        {($ Id.VSub_DollarName '$upstream')}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [7989]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:revisions)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName '$upstream') (...) 
                              ($ Id.VSub_DollarName '$orig_head')
                            }
                          spids: [8001]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:shortrevisions)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName '$shortupstream') (..) 
                              ($ Id.VSub_DollarName '$shorthead')
                            }
                          spids: [8007]
                        )
                      ]
                    )
                  ]
                  spids: [7972 7986]
                )
              ]
              else_action: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:revisions)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$onto') (...) ($ Id.VSub_DollarName '$orig_head')}
                      spids: [8015]
                    )
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:shortrevisions)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_DollarName '$shorthead')}
                      spids: [8021]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:format)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8027)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git)} {(config)} {(--get)} {(rebase.instructionFormat)})]
                          )
                      )
                    }
                  spids: [8026]
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(git)} {(rev-list)} {($ Id.VSub_DollarName '$merges_option')} 
                  {(--format) (Id.Lit_Equals '=') 
                    (DQ ('%m%H ') 
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:format span_id:8051)
                        suffix_op: 
                          (suffix_op.Unary
                            op_id: Id.VTest_ColonHyphen
                            arg_word: {(Id.Lit_Percent '%') (s)}
                          )
                      )
                    )
                  } {(--reverse)} {(--left-right)} {(--topo-order)} {($ Id.VSub_DollarName '$revisions')} 
                  {
                    (braced_var_sub
                      token: (Token id:Id.VSub_Name val:restrict_revision span_id:8071)
                      suffix_op: 
                        (suffix_op.Unary
                          op_id: Id.VTest_Plus
                          arg_word: {('^') ($ Id.VSub_DollarName '$restrict_revision')}
                        )
                    )
                  }
                )
                (C {(sed)} {(-n)} {(DQ ('s/^>//p'))})
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:8091)
                  cond: [(C {(read)} {(-r)} {(sha1)} {(rest)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.AndOr
                                  ops: [Id.Op_DAmp Id.Op_DAmp]
                                  children: [
                                    (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$keep_empty'))})
                                    (C {(is_empty_commit)} {($ Id.VSub_DollarName '$sha1')})
                                    (command.Pipeline
                                      children: [
                                        (C {(is_merge_commit)} {($ Id.VSub_DollarName '$sha1')})
                                      ]
                                      negated: T
                                    )
                                  ]
                                )
                              ]
                              action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:comment_out)
                                      op: assign_op.Equal
                                      rhs: {(DQ ($ Id.VSub_DollarName '$comment_char') (' '))}
                                      spids: [8133]
                                    )
                                  ]
                                )
                              ]
                              spids: [8105 8130]
                            )
                          ]
                          else_action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:comment_out)
                                  op: assign_op.Equal
                                  rhs: (word.Empty)
                                  spids: [8143]
                                )
                              ]
                            )
                          ]
                        )
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (C {(test)} {(t)} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                                  {(DQ ($ Id.VSub_DollarName '$preserve_merges'))}
                                )
                              ]
                              action: [
                                (command.Simple
                                  words: [
                                    {(printf)}
                                    {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:8170))}
                                    {
                                      (DQ (${ Id.VSub_Name comment_out) ('pick ') 
                                        ($ Id.VSub_DollarName '$sha1') (' ') ($ Id.VSub_DollarName '$rest')
                                      )
                                    }
                                  ]
                                  redirects: [
                                    (redir.Redir
                                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:8183)
                                      fd: -1
                                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                                    )
                                  ]
                                )
                              ]
                              spids: [8150 8164]
                            )
                          ]
                          else_action: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$rebase_root'))})
                                  ]
                                  action: [
                                    (command.ShAssignment
                                      pairs: [
                                        (assign_pair
                                          lhs: (sh_lhs_expr.Name name:preserve)
                                          op: assign_op.Equal
                                          rhs: {(t)}
                                          spids: [8206]
                                        )
                                      ]
                                    )
                                    (command.ForEach
                                      iter_name: p
                                      iter_words: [
                                        {
                                          (command_sub
                                            left_token: 
                                              (Token
                                                id: Id.Left_DollarParen
                                                val: '$('
                                                span_id: 8216
                                              )
                                            command_list: 
                                              (command.CommandList
                                                children: [
                                                  (command.Pipeline
                                                    children: [
                                                      (C {(git)} {(rev-list)} {(--parents)} {(-1)} 
                                                        {($ Id.VSub_DollarName '$sha1')}
                                                      )
                                                      (C {(cut)} 
                                                        {(-d) 
                                                          (SQ 
                                                            (Token
                                                              id: Id.Lit_Chars
                                                              val: ' '
                                                              span_id: 8233
                                                            )
                                                          )
                                                        } {(-s)} {(-f2-)}
                                                      )
                                                    ]
                                                    negated: F
                                                  )
                                                ]
                                              )
                                          )
                                        }
                                      ]
                                      do_arg_iter: F
                                      body: 
                                        (command.DoGroup
                                          children: [
                                            (command.If
                                              arms: [
                                                (if_arm
                                                  cond: [
                                                    (C {(test)} {(-f)} 
                                                      {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                                        ($ Id.VSub_DollarName '$p')
                                                      }
                                                    )
                                                  ]
                                                  action: [
                                                    (command.ShAssignment
                                                      pairs: [
                                                        (assign_pair
                                                          lhs: (sh_lhs_expr.Name name:preserve)
                                                          op: assign_op.Equal
                                                          rhs: {(f)}
                                                          spids: [8261]
                                                        )
                                                      ]
                                                    )
                                                  ]
                                                  spids: [8245 8258]
                                                )
                                              ]
                                            )
                                          ]
                                        )
                                    )
                                  ]
                                  spids: [8192 8203]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:preserve)
                                      op: assign_op.Equal
                                      rhs: {(f)}
                                      spids: [8274]
                                    )
                                  ]
                                )
                              ]
                            )
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (C {(test)} {(f)} {(Id.Lit_Equals '=')} 
                                      {(DQ ($ Id.VSub_DollarName '$preserve'))}
                                    )
                                  ]
                                  action: [
                                    (C {(touch)} 
                                      {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                        ($ Id.VSub_DollarName '$sha1')
                                      }
                                    )
                                    (command.Simple
                                      words: [
                                        {(printf)}
                                        {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:8309))}
                                        {
                                          (DQ (${ Id.VSub_Name comment_out) ('pick ') 
                                            ($ Id.VSub_DollarName '$sha1') (' ') ($ Id.VSub_DollarName '$rest')
                                          )
                                        }
                                      ]
                                      redirects: [
                                        (redir.Redir
                                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:8322)
                                          fd: -1
                                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                                        )
                                      ]
                                    )
                                  ]
                                  spids: [8281 8294]
                                )
                              ]
                            )
                          ]
                        )
                      ]
                    )
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(t)} {(Id.Lit_Equals '=')} 
                      {(DQ ($ Id.VSub_DollarName '$preserve_merges'))}
                    )
                  ]
                  action: [
                    (C {(mkdir)} {(DQ ($ Id.VSub_DollarName '$dropped'))})
                    (command.Pipeline
                      children: [
                        (C {(git)} {(rev-list)} {($ Id.VSub_DollarName '$revisions')} {(--left-right)} 
                          {(--cherry-pick)}
                        )
                        (command.Simple
                          words: [{(sed)} {(-n)} {(DQ ('s/^>//p'))}]
                          redirects: [
                            (redir.Redir
                              op: (Token id:Id.Redir_Great val:'>' span_id:8387)
                              fd: -1
                              arg_word: {(DQ ($ Id.VSub_DollarName '$state_dir')) (/not-cherry-picks)}
                            )
                          ]
                        )
                      ]
                      negated: F
                    )
                    (command.Pipeline
                      children: [
                        (C {(git)} {(rev-list)} {($ Id.VSub_DollarName '$revisions')})
                        (command.WhileUntil
                          keyword: (Token id:Id.KW_While val:while span_id:8412)
                          cond: [(C {(read)} {(rev)})]
                          body: 
                            (command.DoGroup
                              children: [
                                (command.If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (command.AndOr
                                          ops: [Id.Op_DAmp]
                                          children: [
                                            (C {(test)} {(-f)} 
                                              {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                                ($ Id.VSub_DollarName '$rev')
                                              }
                                            )
                                            (command.Pipeline
                                              children: [
                                                (command.Simple
                                                  words: [
                                                    {(sane_grep)}
                                                    {(DQ ($ Id.VSub_DollarName '$rev'))}
                                                    {(DQ ($ Id.VSub_DollarName '$state_dir')) 
                                                      (/not-cherry-picks)
                                                    }
                                                  ]
                                                  redirects: [
                                                    (redir.Redir
                                                      op: 
                                                        (Token
                                                          id: Id.Redir_Great
                                                          val: '>'
                                                          span_id: 8450
                                                        )
                                                      fd: -1
                                                      arg_word: {(/dev/null)}
                                                    )
                                                  ]
                                                )
                                              ]
                                              negated: T
                                            )
                                          ]
                                        )
                                      ]
                                      action: [
                                        (command.Pipeline
                                          children: [
                                            (C {(git)} {(rev-list)} {(--parents)} {(-1)} 
                                              {($ Id.VSub_DollarName '$rev')}
                                            )
                                            (command.Simple
                                              words: [
                                                {(cut)}
                                                {(-d) 
                                                  (SQ (Token id:Id.Lit_Chars val:' ' span_id:8489))
                                                }
                                                {(-s)}
                                                {(-f2)}
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:8496)
                                                  fd: -1
                                                  arg_word: 
                                                    {(DQ ($ Id.VSub_DollarName '$dropped')) (/) 
                                                      ($ Id.VSub_DollarName '$rev')
                                                    }
                                                )
                                              ]
                                            )
                                          ]
                                          negated: F
                                        )
                                        (command.ShAssignment
                                          pairs: [
                                            (assign_pair
                                              lhs: (sh_lhs_expr.Name name:sha1)
                                              op: assign_op.Equal
                                              rhs: 
                                                {
                                                  (command_sub
                                                    left_token: 
                                                      (Token
                                                        id: Id.Left_DollarParen
                                                        val: '$('
                                                        span_id: 8506
                                                      )
                                                    command_list: 
                                                      (command.CommandList
                                                        children: [
                                                          (C {(git)} {(rev-list)} {(-1)} 
                                                            {($ Id.VSub_DollarName '$rev')}
                                                          )
                                                        ]
                                                      )
                                                  )
                                                }
                                              spids: [8505]
                                            )
                                          ]
                                        )
                                        (command.Sentence
                                          child: 
                                            (command.Simple
                                              words: [
                                                {(sane_grep)}
                                                {(-v)}
                                                {
                                                  (DQ ('^[a-z][a-z]* ') ($ Id.VSub_DollarName '$sha1'))
                                                }
                                              ]
                                              redirects: [
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Less val:'<' span_id:8526)
                                                  fd: -1
                                                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                                                )
                                                (redir.Redir
                                                  op: (Token id:Id.Redir_Great val:'>' span_id:8531)
                                                  fd: -1
                                                  arg_word: {(DQ (${ Id.VSub_Name todo) (2))}
                                                )
                                              ]
                                            )
                                          terminator: (Token id:Id.Op_Semi val:';' span_id:8540)
                                        )
                                        (C {(mv)} {(DQ (${ Id.VSub_Name todo) (2))} 
                                          {(DQ ($ Id.VSub_DollarName '$todo'))}
                                        )
                                        (C {(rm)} 
                                          {(DQ ($ Id.VSub_DollarName '$rewritten')) (/) 
                                            ($ Id.VSub_DollarName '$rev')
                                          }
                                        )
                                      ]
                                      spids: [8422 8454]
                                    )
                                  ]
                                )
                              ]
                            )
                        )
                      ]
                      negated: F
                    )
                  ]
                  spids: [8339 8351]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-s)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                (command.Simple
                  words: [{(echo)} {(noop)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:8587)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                  ]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$autosquash'))})
                (C {(rearrange_squash)} {(DQ ($ Id.VSub_DollarName '$todo'))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$cmd'))})
                (C {(add_exec_commands)} {(DQ ($ Id.VSub_DollarName '$todo'))})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:todocount)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8627)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Pipeline
                                children: [
                                  (command.Simple
                                    words: [{(git)} {(stripspace)} {(--strip-comments)}]
                                    redirects: [
                                      (redir.Redir
                                        op: (Token id:Id.Redir_Less val:'<' span_id:8634)
                                        fd: -1
                                        arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                                      )
                                    ]
                                  )
                                  (C {(wc)} {(-l)})
                                ]
                                negated: F
                              )
                            ]
                          )
                      )
                    }
                  spids: [8626]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:todocount)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (braced_var_sub
                        token: (Token id:Id.VSub_Name val:todocount span_id:8648)
                        suffix_op: (suffix_op.Unary op_id:Id.VOp1_DPound arg_word:{('* ')})
                      )
                    }
                  spids: [8646]
                )
              ]
            )
            (command.Simple
              words: [{(cat)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_DGreat val:'>>' span_id:8656)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                )
                (redir.HereDoc
                  op: (Token id:Id.Redir_DLess val:'<<' span_id:8661)
                  fd: -1
                  here_begin: {(EOF)}
                  here_end_span_id: 8702
                  stdin_parts: [
                    ('\n')
                    ($ Id.VSub_DollarName '$comment_char')
                    (' ')
                    (command_sub
                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8667)
                      command_list: 
                        (command.CommandList
                          children: [
                            (C {(eval_ngettext)} 
                              {
                                (DQ ('Rebase ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8674)
                                  ) ('shortrevisions onto ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8676)
                                  ) ('shortonto (') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:8678)) 
                                  ('todocount command)')
                                )
                              } 
                              {
                                (DQ ('Rebase ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8686)
                                  ) ('shortrevisions onto ') 
                                  (word_part.EscapedLiteral
                                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:8688)
                                  ) ('shortonto (') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:8690)) 
                                  ('todocount commands)')
                                )
                              } {(DQ ($ Id.VSub_DollarName '$todocount'))}
                            )
                          ]
                        )
                    )
                    ('\n')
                  ]
                )
              ]
            )
            (C {(append_todo_help)})
            (command.Pipeline
              children: [
                (C {(gettext)} 
                  {
                    (DQ ('\n') ('However, if you remove everything, the rebase will be aborted.\n') 
                      ('\n')
                    )
                  }
                )
                (command.Simple
                  words: [{(git)} {(stripspace)} {(--comment-lines)}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_DGreat val:'>>' span_id:8721)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                    )
                  ]
                )
              ]
              negated: F
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$keep_empty'))})]
                  action: [
                    (command.Simple
                      words: [
                        {(printf)}
                        {(SQ (Token id:Id.Lit_Chars val:'%s\\n' span_id:8743))}
                        {
                          (DQ ($ Id.VSub_DollarName '$comment_char') (' ') 
                            (command_sub
                              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8749)
                              command_list: 
                                (command.CommandList
                                  children: [
                                    (C {(gettext)} {(DQ ('Note that empty commits are commented out'))})
                                  ]
                                )
                            )
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_DGreat val:'>>' span_id:8758)
                          fd: -1
                          arg_word: {(DQ ($ Id.VSub_DollarName '$todo'))}
                        )
                      ]
                    )
                  ]
                  spids: [8727 8737]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(has_action)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:8776)
                  arg_word: {(2)}
                )
              ]
            )
            (C {(cp)} {(DQ ($ Id.VSub_DollarName '$todo'))} 
              {(DQ ($ Id.VSub_DollarName '$todo')) (.backup)}
            )
            (C {(collapse_todo_ids)})
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(git_sequence_editor)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                (C {(die_abort)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:8806)
                        command_list: 
                          (command.CommandList
                            children: [(C {(gettext)} {(DQ ('Could not execute editor'))})]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(has_action)} {(DQ ($ Id.VSub_DollarName '$todo'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Return val:return span_id:8825)
                  arg_word: {(2)}
                )
              ]
            )
            (C {(check_todo_list)})
            (C {(expand_todo_ids)})
            (command.AndOr
              ops: [Id.Op_DPipe Id.Op_DPipe]
              children: [
                (C {(test)} {(-d)} {(DQ ($ Id.VSub_DollarName '$rewritten'))})
                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$force_rebase'))})
                (C {(skip_unnecessary_picks)})
              ]
            )
            (C {(checkout_onto)})
            (C {(do_rest)})
          ]
        )
    )
    (C {(git_rebase__interactive)})
  ]
)