(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prec='> name:prec)
          op: assign_op.Equal
          rhs: {<4>}
          spids: [19]
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name: read_state
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto_name='> name:onto_name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/onto_name'>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [31]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/end'>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [44]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: (C {<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/msgnum'>})
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [57]
                    )
                  ]
                  redirects: []
                )
              ]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: continue_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<test>} {<-d>} {(DQ ($ Id.VSub_DollarName state_dir))})
                (C {<die>} {(DQ ($ Id.VSub_DollarName state_dir) <' directory does not exist'>)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unmerged='> name:unmerged)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<git>} {<ls-files>} {<-u>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [97]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName unmerged))})]
                    )
                  action: [
                    (C {<echo>} {(DQ <'You still have unmerged paths in your index'>)})
                    (C {<echo>} {(DQ <'did you forget to use git add?'>)})
                    (C {<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))})
                  ]
                  spids: [107 118]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt='> name:cmt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<cat>} {(DQ ($ Id.VSub_DollarName state_dir) <'/current'>)})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [146]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          children: [
                            (C {<git>} {<diff-index>} {<--quiet>} {<--ignore-submodules>} {<HEAD>} {<-->})
                          ]
                          negated: T
                          stderr_indices: []
                        )
                      ]
                    )
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  children: [
                                    (C {<git>} {<commit>} 
                                      {
                                        (braced_var_sub
                                          left: <Id.Left_DollarBrace '${'>
                                          token: <Id.VSub_Name gpg_sign_opt>
                                          var_name: gpg_sign_opt
                                          suffix_op: 
                                            (suffix_op.Unary
                                              op: <Id.VTest_ColonPlus _>
                                              arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                            )
                                          right: <Id.Right_DollarBrace '}'>
                                        )
                                      } {<--no-verify>} {<-C>} {(DQ ($ Id.VSub_DollarName cmt))}
                                    )
                                  ]
                                  negated: T
                                  stderr_indices: []
                                )
                              ]
                            )
                          action: [
                            (C {<echo>} 
                              {
                                (DQ <'Commit failed, please do not call '> 
                                  (word_part.EscapedLiteral
                                    token: <Id.Lit_EscapedChar '\\"'>
                                    ch: '"'
                                  ) <'git commit'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\"'> ch:'"')
                                )
                              }
                            )
                            (C {<echo>} {(DQ <'directly, but instead do one of the following: '>)})
                            (C {<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))})
                          ]
                          spids: [177 202]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: 
                            (condition.Shell
                              commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})]
                            )
                          action: [
                            (C {<printf>} {(DQ <'Committed: %0'> (${ Id.VSub_Name prec) <'d '>)} 
                              {($ Id.VSub_DollarName msgnum)}
                            )
                          ]
                          spids: [232 243]
                        )
                      ]
                      else_action: []
                      redirects: []
                    )
                    (command.Simple
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName cmt) <' '> 
                            (command_sub
                              left_token: <Id.Left_DollarParen '$('>
                              child: (C {<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>})
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/rewritten'>)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                  spids: [157 174]
                )
              ]
              else_action: [
                (command.If
                  arms: [
                    (if_arm
                      cond: 
                        (condition.Shell
                          commands: [(C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})]
                        )
                      action: [
                        (C {<printf>} {(DQ <'Already applied: %0'> (${ Id.VSub_Name prec) <'d '>)} 
                          {($ Id.VSub_DollarName msgnum)}
                        )
                      ]
                      spids: [289 300]
                    )
                  ]
                  else_action: []
                  redirects: []
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})
                (command.Simple
                  words: [
                    {<git>}
                    {<log>}
                    {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <s>}
                    {<-1>}
                    {(DQ ($ Id.VSub_DollarName cmt))}
                  ]
                  redirects: []
                  more_env: [(env_pair name:GIT_PAGER val:{(SQ )} spids:[333])]
                  do_fork: T
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName msgnum)}
                            right: {<Id.Lit_Digits 1>}
                          )
                      )
                    }
                  spids: [358]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName msgnum))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/msgnum'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: call_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                  spids: [392]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName msgnum))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/msgnum'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt='> name:cmt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (command_sub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (C {<cat>} 
                              {
                                (DQ ($ Id.VSub_DollarName state_dir) <'/cmt.'> 
                                  ($ Id.VSub_DollarName msgnum)
                                )
                              }
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                  spids: [411]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName cmt))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/current'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hd='> name:hd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: (C {<git>} {<rev-parse>} {<--verify>} {<HEAD>})
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [439]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt_name='> name:cmt_name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.AndOr
                            ops: [Id.Op_DPipe]
                            children: [
                              (command.Simple
                                words: [{<git>} {<symbolic-ref>} {<HEAD>}]
                                redirects: [
                                  (redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                more_env: []
                                do_fork: T
                              )
                              (C {<echo>} {<HEAD>})
                            ]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [451]
                )
              ]
              redirects: []
            )
            (C {<eval>} 
              {<GITHEAD_> ($ Id.VSub_DollarName cmt) <Id.Lit_Equals '='> 
                (SQ <'"${cmt_name##refs/heads/}~$(($end - $msgnum))"'>)
              }
            )
            (C {<eval>} {<GITHEAD_> ($ Id.VSub_DollarName hd) <Id.Lit_Equals '='> (SQ <'$onto_name'>)})
            (C {<export>} {<GITHEAD_> ($ Id.VSub_DollarName cmt)} {<GITHEAD_> ($ Id.VSub_DollarName hd)})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))})]
                    )
                  action: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                                  name: GIT_MERGE_VERBOSITY
                                )
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [514]
                            )
                          ]
                          redirects: []
                        )
                        (C {<export>} {<GIT_MERGE_VERBOSITY>})
                      ]
                    )
                  ]
                  spids: [500 511]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {<test>} {<-z>} {(DQ ($ Id.VSub_DollarName strategy))})
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
                      op: assign_op.Equal
                      rhs: {<recursive>}
                      spids: [537]
                    )
                  ]
                  redirects: []
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<git>} {<rev-parse>} {<--verify>} {<--quiet>} 
                            {($ Id.VSub_DollarName cmt) <Id.Lit_Other '^'>}
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [545]
                )
              ]
              redirects: []
            )
            (C {<eval>} {(SQ <'git-merge-$strategy'>)} {($ Id.VSub_DollarName strategy_opts)} 
              {($ Id.VSub_DollarName base)} {(SQ <' -- "$hd" "$cmt"'>)}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rv='> name:rv)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                  spids: [575]
                )
              ]
              redirects: []
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName rv))}
              arms: [
                (case_arm
                  pat_list: [{<0>}]
                  action: [
                    (C {<unset>} {<GITHEAD_> ($ Id.VSub_DollarName cmt)} 
                      {<GITHEAD_> ($ Id.VSub_DollarName hd)}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [588 589 604 -1]
                )
                (case_arm
                  pat_list: [{<1>}]
                  action: [
                    (C {<git>} {<rerere>} {($ Id.VSub_DollarName allow_rerere_autoupdate)})
                    (C {<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))})
                  ]
                  spids: [607 608 625 -1]
                )
                (case_arm
                  pat_list: [{<2>}]
                  action: [
                    (command.Simple
                      words: [
                        {<echo>}
                        {(DQ <'Strategy: '> ($ Id.VSub_DollarName strategy) <' failed, try another'>)}
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_GreatAnd '1>&'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {<2>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (C {<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))})
                  ]
                  spids: [628 629 651 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (C {<die>} 
                      {(DQ <'Unknown exit code ('> ($ Id.VSub_DollarName rv) <') from command:'>)} 
                      {
                        (DQ <git-merge-> ($ Id.VSub_DollarName strategy) <' '> 
                          ($ Id.VSub_DollarName cmt) <'^ -- HEAD '> ($ Id.VSub_DollarName cmt)
                        )
                      }
                    )
                  ]
                  spids: [654 655 678 -1]
                )
              ]
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: finish_rb_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<move_to_original_branch>})
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>})
                      ]
                    )
                  action: [
                    (command.Simple
                      words: [{<git>} {<notes>} {<copy>} {<--for-rewrite> <Id.Lit_Equals '='> <rebase>}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hook='> name:hook)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (C {<git>} {<rev-parse>} {<--git-path>} {<'hooks/post-rewrite'>})
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [729]
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<test>} {<-x>} {(DQ ($ Id.VSub_DollarName hook))})
                        (command.Simple
                          words: [{(DQ ($ Id.VSub_DollarName hook))} {<rebase>}]
                          redirects: [
                            (redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                      ]
                    )
                  ]
                  spids: [697 709]
                )
              ]
              else_action: []
              redirects: []
            )
            (C {<say>} {<All>} {<done.>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: git_rebase__merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName action))}
              arms: [
                (case_arm
                  pat_list: [{<Id.ControlFlow_Continue continue>}]
                  action: [
                    (C {<read_state>})
                    (C {<continue_merge>})
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<test>} {(DQ ($ Id.VSub_DollarName msgnum))} {<-le>} 
                              {(DQ ($ Id.VSub_DollarName end))}
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))})
                            (C {<continue_merge>})
                          ]
                        )
                      redirects: []
                    )
                    (C {<finish_rb_merge>})
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [821 822 868 -1]
                )
                (case_arm
                  pat_list: [{<skip>}]
                  action: [
                    (C {<read_state>})
                    (C {<git>} {<rerere>} {<clear>})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName msgnum)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [884]
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (C {<test>} {(DQ ($ Id.VSub_DollarName msgnum))} {<-le>} 
                              {(DQ ($ Id.VSub_DollarName end))}
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          children: [
                            (C {<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))})
                            (C {<continue_merge>})
                          ]
                        )
                      redirects: []
                    )
                    (C {<finish_rb_merge>})
                    (command.ControlFlow token:<Id.ControlFlow_Return return>)
                  ]
                  spids: [870 871 932 -1]
                )
              ]
              redirects: []
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName state_dir))})
            (command.Simple
              words: [{<echo>} {(DQ ($ Id.VSub_DollarName onto_name))}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/onto_name'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (C {<write_basic_state>})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {<0>}
                  spids: [961]
                )
              ]
              redirects: []
            )
            (command.ForEach
              iter_names: [cmt]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<git>} {<rev-list>} {<--reverse>} {<--no-merges>} 
                            {(DQ ($ Id.VSub_DollarName revisions))}
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName msgnum)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                              )
                            }
                          spids: [987]
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      words: [{<echo>} {(DQ ($ Id.VSub_DollarName cmt))}]
                      redirects: [
                        (redir
                          op: <Id.Redir_Great '>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: 
                            {
                              (DQ ($ Id.VSub_DollarName state_dir) <'/cmt.'> 
                                ($ Id.VSub_DollarName msgnum)
                              )
                            }
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                  ]
                )
              redirects: []
            )
            (command.Simple
              words: [{<echo>} {<1>}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/msgnum'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.Simple
              words: [{<echo>} {($ Id.VSub_DollarName msgnum)}]
              redirects: [
                (redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/end'>)}
                )
              ]
              more_env: []
              do_fork: T
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName msgnum)}
                  spids: [1036]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1039]
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (C {<test>} {(DQ ($ Id.VSub_DollarName msgnum))} {<-le>} 
                      {(DQ ($ Id.VSub_DollarName end))}
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  children: [
                    (C {<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))})
                    (C {<continue_merge>})
                  ]
                )
              redirects: []
            )
            (C {<finish_rb_merge>})
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (C {<git_rebase__merge>})
  ]
)