(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'prec='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'prec='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'prec='> name:prec)
          op: assign_op.Equal
          rhs: {<4>}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <read_state>
      name: read_state
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'onto_name='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'onto_name='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'onto_name='> name:onto_name)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/onto_name'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'end='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'end='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/end'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'msgnum='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'msgnum='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <cat>
                                more_env: []
                                words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/msgnum'>}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <continue_merge>
      name: continue_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-d>} {(DQ ($ Id.VSub_DollarName state_dir))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <die>
                  more_env: []
                  words: [{<die>} {(DQ ($ Id.VSub_DollarName state_dir) <' directory does not exist'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'unmerged='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'unmerged='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'unmerged='> name:unmerged)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<ls-files>} {<-u>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName unmerged))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'You still have unmerged paths in your index'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'did you forget to use git add?'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [{<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [107 118]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt='> name:cmt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <cat>
                            more_env: []
                            words: [{<cat>} {(DQ ($ Id.VSub_DollarName state_dir) <'/current'>)}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [
                                {<git>}
                                {<diff-index>}
                                {<--quiet>}
                                {<--ignore-submodules>}
                                {<HEAD>}
                                {<-->}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Pipeline
                                  negated: <Id.KW_Bang '!'>
                                  children: [
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<commit>}
                                        {
                                          (BracedVarSub
                                            left: <Id.Left_DollarBrace '${'>
                                            token: <Id.VSub_Name gpg_sign_opt>
                                            var_name: gpg_sign_opt
                                            suffix_op: 
                                              (suffix_op.Unary
                                                op: <Id.VTest_ColonPlus _>
                                                arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                              )
                                            right: <Id.Right_DollarBrace '}'>
                                          )
                                        }
                                        {<--no-verify>}
                                        {<-C>}
                                        {(DQ ($ Id.VSub_DollarName cmt))}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  ]
                                  ops: []
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<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:'"')
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <echo>
                              more_env: []
                              words: [
                                {<echo>}
                                {(DQ <'directly, but instead do one of the following: '>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <die>
                              more_env: []
                              words: [{<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [177 202]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Simple
                                  blame_tok: <test>
                                  more_env: []
                                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <printf>
                              more_env: []
                              words: [
                                {<printf>}
                                {(DQ <'Committed: %0'> (${ Id.VSub_Name prec) <'d '>)}
                                {($ Id.VSub_DollarName msgnum)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          spids: [232 243]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [
                        {<echo>}
                        {
                          (DQ ($ Id.VSub_DollarName cmt) <' '> 
                            (CommandSub
                              left_token: <Id.Left_DollarParen '$('>
                              child: 
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [{<git>} {<rev-parse>} {<HEAD> <Id.Lit_Other '^'> <0>}]
                                  redirects: []
                                  do_fork: T
                                )
                              right: <Id.Eof_RParen _>
                            )
                          )
                        }
                      ]
                      redirects: [
                        (Redir
                          op: <Id.Redir_DGreat '>>'>
                          loc: (redir_loc.Fd fd:1)
                          arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/rewritten'>)}
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  spids: [157 174]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <printf>
                          more_env: []
                          words: [
                            {<printf>}
                            {(DQ <'Already applied: %0'> (${ Id.VSub_Name prec) <'d '>)}
                            {($ Id.VSub_DollarName msgnum)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      spids: [289 300]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: [(EnvPair left:<Id.Lit_VarLike 'GIT_PAGER='> name:GIT_PAGER val:{(SQ )})]
                  words: [
                    {<git>}
                    {<log>}
                    {<--format> <Id.Lit_Equals '='> <Id.Lit_Other '%'> <s>}
                    {<-1>}
                    {(DQ ($ Id.VSub_DollarName cmt))}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'msgnum='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'msgnum='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (word_part.ArithSub
                        left: <Id.Left_DollarDParen '$(('>
                        anode: 
                          (arith_expr.Binary
                            op_id: Id.Arith_Plus
                            left: {($ Id.VSub_DollarName msgnum)}
                            right: {<Id.Lit_Digits 1>}
                          )
                        right: <Id.Right_DollarDParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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'>)}
                )
              ]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <call_merge>
      name: call_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'msgnum='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'msgnum='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_Number 1))}
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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'>)}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmt='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmt='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt='> name:cmt)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <cat>
                              more_env: []
                              words: [
                                {<cat>}
                                {
                                  (DQ ($ Id.VSub_DollarName state_dir) <'/cmt.'> 
                                    ($ Id.VSub_DollarName msgnum)
                                  )
                                }
                              ]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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'>)}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'hd='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'hd='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hd='> name:hd)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [{<git>} {<rev-parse>} {<--verify>} {<HEAD>}]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'cmt_name='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'cmt_name='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cmt_name='> name:cmt_name)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.AndOr
                            children: [
                              (command.Simple
                                blame_tok: <git>
                                more_env: []
                                words: [{<git>} {<symbolic-ref>} {<HEAD>}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {<HEAD>}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_DPipe _>]
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {<GITHEAD_> ($ Id.VSub_DollarName cmt) <Id.Lit_Equals '='> 
                  (SQ <'"${cmt_name##refs/heads/}~$(($end - $msgnum))"'>)
                }
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {<GITHEAD_> ($ Id.VSub_DollarName hd) <Id.Lit_Equals '='> (SQ <'$onto_name'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <export>
              more_env: []
              words: [
                {<export>}
                {<GITHEAD_> ($ Id.VSub_DollarName cmt)}
                {<GITHEAD_> ($ Id.VSub_DollarName hd)}
              ]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName GIT_QUIET))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.ShAssignment
                          left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                          pairs: [
                            (AssignPair
                              left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'GIT_MERGE_VERBOSITY='>
                                  name: GIT_MERGE_VERBOSITY
                                )
                              op: assign_op.Equal
                              rhs: {<1>}
                            )
                          ]
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <export>
                          more_env: []
                          words: [{<export>} {<GIT_MERGE_VERBOSITY>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [500 511]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <test>
                  more_env: []
                  words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName strategy))}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'strategy='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'strategy='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'strategy='> name:strategy)
                      op: assign_op.Equal
                      rhs: {<recursive>}
                    )
                  ]
                  redirects: []
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'base='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'base='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'base='> name:base)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [
                              {<git>}
                              {<rev-parse>}
                              {<--verify>}
                              {<--quiet>}
                              {($ Id.VSub_DollarName cmt) <Id.Lit_Other '^'>}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.Simple
              blame_tok: <eval>
              more_env: []
              words: [
                {<eval>}
                {(SQ <'git-merge-$strategy'>)}
                {($ Id.VSub_DollarName strategy_opts)}
                {($ Id.VSub_DollarName base)}
                {(SQ <' -- "$hd" "$cmt"'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'rv='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'rv='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'rv='> name:rv)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '?')}
                )
              ]
              redirects: []
            )
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName rv))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <0>
                  pattern: (pat.Words words:[{<0>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <unset>
                      more_env: []
                      words: [
                        {<unset>}
                        {<GITHEAD_> ($ Id.VSub_DollarName cmt)}
                        {<GITHEAD_> ($ Id.VSub_DollarName hd)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <1>
                  pattern: (pat.Words words:[{<1>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<rerere>} {($ Id.VSub_DollarName allow_rerere_autoupdate)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [{<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <2>
                  pattern: (pat.Words words:[{<2>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      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>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [{<die>} {(DQ ($ Id.VSub_DollarName resolvemsg))}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <Id.Lit_Star '*'>
                  pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <die>
                      more_env: []
                      words: [
                        {<die>}
                        {(DQ <'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)
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <finish_rb_merge>
      name: finish_rb_merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <move_to_original_branch>
              more_env: []
              words: [{<move_to_original_branch>}]
              redirects: []
              do_fork: T
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-s>} {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<notes>} {<copy>} {<--for-rewrite> <Id.Lit_Equals '='> <rebase>}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'hook='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'hook='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'hook='> name:hook)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Simple
                                      blame_tok: <git>
                                      more_env: []
                                      words: [
                                        {<git>}
                                        {<rev-parse>}
                                        {<--git-path>}
                                        {<'hooks/post-rewrite'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-x>} {(DQ ($ Id.VSub_DollarName hook))}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <Id.Left_DoubleQuote '"'>
                          more_env: []
                          words: [{(DQ ($ Id.VSub_DollarName hook))} {<rebase>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {(DQ ($ Id.VSub_DollarName state_dir)) <'/rewritten'>}
                            )
                          ]
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  spids: [697 709]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [{<say>} {<All>} {<done.>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <git_rebase__merge>
      name: git_rebase__merge
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName action))})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <Id.ControlFlow_Continue continue>
                  pattern: (pat.Words words:[{<Id.ControlFlow_Continue continue>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <read_state>
                      more_env: []
                      words: [{<read_state>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <continue_merge>
                      more_env: []
                      words: [{<continue_merge>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName msgnum))}
                                {<-le>}
                                {(DQ ($ Id.VSub_DollarName end))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <call_merge>
                              more_env: []
                              words: [{<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <continue_merge>
                              more_env: []
                              words: [{<continue_merge>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <finish_rb_merge>
                      more_env: []
                      words: [{<finish_rb_merge>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <skip>
                  pattern: (pat.Words words:[{<skip>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <read_state>
                      more_env: []
                      words: [{<read_state>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [{<git>} {<rerere>} {<clear>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'msgnum='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'msgnum='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName msgnum)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.WhileUntil
                      keyword: <Id.KW_While while>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {(DQ ($ Id.VSub_DollarName msgnum))}
                                {<-le>}
                                {(DQ ($ Id.VSub_DollarName end))}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      body: 
                        (command.DoGroup
                          left: <Id.KW_Do do>
                          children: [
                            (command.Simple
                              blame_tok: <call_merge>
                              more_env: []
                              words: [{<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <continue_merge>
                              more_env: []
                              words: [{<continue_merge>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          right: <Id.KW_Done done>
                        )
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <finish_rb_merge>
                      more_env: []
                      words: [{<finish_rb_merge>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.Simple
              blame_tok: <mkdir>
              more_env: []
              words: [{<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName state_dir))}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(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'>)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <write_basic_state>
              more_env: []
              words: [{<write_basic_state>}]
              redirects: []
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'msgnum='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'msgnum='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [cmt]
              iterable: 
                (for_iter.Words
                  words: [
                    {
                      (CommandSub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            blame_tok: <git>
                            more_env: []
                            words: [
                              {<git>}
                              {<rev-list>}
                              {<--reverse>}
                              {<--no-merges>}
                              {(DQ ($ Id.VSub_DollarName revisions))}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'msgnum='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'msgnum='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName msgnum)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      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)
                              )
                            }
                        )
                      ]
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {<1>}]
              redirects: [
                (Redir
                  op: <Id.Redir_Great '>'>
                  loc: (redir_loc.Fd fd:1)
                  arg: {(DQ ($ Id.VSub_DollarName state_dir) <'/msgnum'>)}
                )
              ]
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              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'>)}
                )
              ]
              do_fork: T
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'end='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'end='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'end='> name:end)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName msgnum)}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'msgnum='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'msgnum='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msgnum='> name:msgnum)
                  op: assign_op.Equal
                  rhs: {<1>}
                )
              ]
              redirects: []
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Simple
                      blame_tok: <test>
                      more_env: []
                      words: [
                        {<test>}
                        {(DQ ($ Id.VSub_DollarName msgnum))}
                        {<-le>}
                        {(DQ ($ Id.VSub_DollarName end))}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <call_merge>
                      more_env: []
                      words: [{<call_merge>} {(DQ ($ Id.VSub_DollarName msgnum))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <continue_merge>
                      more_env: []
                      words: [{<continue_merge>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.Simple
              blame_tok: <finish_rb_merge>
              more_env: []
              words: [{<finish_rb_merge>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <git_rebase__merge>
      more_env: []
      words: [{<git_rebase__merge>}]
      redirects: []
      do_fork: T
    )
  ]
)