(command.CommandList
  children: [
    (command.ShFunction
      name_tok: <git_rebase__am>
      name: git_rebase__am
      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.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<am>}
                            {<--resolved>}
                            {<--resolvemsg> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName resolvemsg))}
                            {
                              (BracedVarSub
                                left: <Id.Left_DollarBrace '${'>
                                token: <Id.VSub_Name gpg_sign_opt>
                                var_name: gpg_sign_opt
                                suffix_op: 
                                  (suffix_op.Unary
                                    op: <Id.VTest_ColonPlus _>
                                    arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                                  )
                                right: <Id.Right_DollarBrace '}'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <move_to_original_branch>
                          more_env: []
                          words: [{<move_to_original_branch>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (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.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <git>
                          more_env: []
                          words: [
                            {<git>}
                            {<am>}
                            {<--skip>}
                            {<--resolvemsg> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName resolvemsg))}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <move_to_original_branch>
                          more_env: []
                          words: [{<move_to_original_branch>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-z>} {(DQ ($ Id.VSub_DollarName rebase_root))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'revisions='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'revisions='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions)
                          op: assign_op.Equal
                          rhs: 
                            {($ Id.VSub_DollarName upstream) <Id.Lit_TDot ...> 
                              ($ Id.VSub_DollarName orig_head)
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [126 140]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'revisions='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'revisions='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'revisions='> name:revisions)
                      op: assign_op.Equal
                      rhs: 
                        {($ Id.VSub_DollarName onto) <Id.Lit_TDot ...> 
                          ($ Id.VSub_DollarName orig_head)
                        }
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'ret='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'ret='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Simple
                          blame_tok: <test>
                          more_env: []
                          words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName keep_empty))}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <git>
                      more_env: []
                      words: [
                        {<git>}
                        {<cherry-pick>}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name gpg_sign_opt>
                            var_name: gpg_sign_opt
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VTest_ColonPlus _>
                                arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                        {<--allow-empty>}
                        {<--right-only>}
                        {(DQ ($ Id.VSub_DollarName revisions))}
                        {
                          (BracedVarSub
                            left: <Id.Left_DollarBrace '${'>
                            token: <Id.VSub_Name restrict_revision>
                            var_name: restrict_revision
                            suffix_op: 
                              (suffix_op.Unary
                                op: <Id.VTest_Plus _>
                                arg_word: {<'^'> ($ Id.VSub_DollarName restrict_revision)}
                              )
                            right: <Id.Right_DollarBrace '}'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ret='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ret='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_QMark '?')}
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [162 172]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/rebased-patches'>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<format-patch>}
                    {<-k>}
                    {<--stdout>}
                    {<--full-index>}
                    {<--cherry-pick>}
                    {<--right-only>}
                    {<--src-prefix> <Id.Lit_Equals '='> <'a/'>}
                    {<--dst-prefix> <Id.Lit_Equals '='> <'b/'>}
                    {<--no-renames>}
                    {<--no-cover-letter>}
                    {(DQ ($ Id.VSub_DollarName revisions))}
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name restrict_revision>
                        var_name: restrict_revision
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_Plus _>
                            arg_word: {<'^'> ($ Id.VSub_DollarName restrict_revision)}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/rebased-patches'>)}
                    )
                  ]
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ret='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ret='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  redirects: []
                )
                (command.If
                  if_kw: <Id.KW_If if>
                  arms: [
                    (IfArm
                      keyword: <Id.KW_If if>
                      cond: 
                        (condition.Shell
                          commands: [
                            (command.Simple
                              blame_tok: <test>
                              more_env: []
                              words: [
                                {<test>}
                                {<0>}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {($ Id.VSub_DollarName ret)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          ]
                        )
                      then_kw: <Id.KW_Then then>
                      action: [
                        (command.Simple
                          blame_tok: <rm>
                          more_env: []
                          words: [
                            {<rm>}
                            {<-f>}
                            {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/rebased-patches'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Case
                          case_kw: <Id.KW_Case case>
                          to_match: (case_arg.Word w:{(DQ ($ Id.VSub_DollarName head_name))})
                          arms_start: <Id.KW_In in>
                          arms: [
                            (CaseArm
                              left: <'refs/heads/'>
                              pattern: (pat.Words words:[{<'refs/heads/'> <Id.Lit_Star '*'>}])
                              middle: <Id.Right_CasePat _>
                              action: [
                                (command.Simple
                                  blame_tok: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<checkout>}
                                    {<-q>}
                                    {(DQ ($ Id.VSub_DollarName head_name))}
                                  ]
                                  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: <git>
                                  more_env: []
                                  words: [
                                    {<git>}
                                    {<checkout>}
                                    {<-q>}
                                    {(DQ ($ Id.VSub_DollarName orig_head))}
                                  ]
                                  redirects: []
                                  do_fork: T
                                )
                              ]
                              right: <Id.Op_DSemi _>
                            )
                          ]
                          arms_end: <Id.KW_Esac esac>
                          redirects: []
                        )
                        (command.Simple
                          blame_tok: <cat>
                          more_env: []
                          words: [{<cat>}]
                          redirects: [
                            (Redir
                              op: <Id.Redir_GreatAnd '>&'>
                              loc: (redir_loc.Fd fd:1)
                              arg: {<2>}
                            )
                            (Redir
                              op: <Id.Redir_DLessDash '<<-'>
                              loc: (redir_loc.Fd fd:0)
                              arg: 
                                (redir_param.HereDoc
                                  here_begin: {<EOF>}
                                  here_end_tok: <Id.Undefined_Tok ''>
                                  stdin_parts: [
                                    <'\n'>
                                    <
'git encountered an error while preparing the patches to replay\n'
                                    >
                                    <'these revisions:\n'>
                                    <'\n'>
                                    <'    '>
                                    ($ Id.VSub_DollarName revisions)
                                    <'\n'>
                                    <'\n'>
                                    <'As a result, git cannot rebase them.\n'>
                                  ]
                                )
                            )
                          ]
                          do_fork: T
                        )
                        (command.ControlFlow
                          keyword: <Id.ControlFlow_Return return>
                          arg_word: {($ Id.VSub_DollarName ret)}
                        )
                      ]
                      spids: [295 307]
                    )
                  ]
                  else_action: []
                  fi_kw: <Id.KW_Fi fi>
                  redirects: []
                )
                (command.Simple
                  blame_tok: <git>
                  more_env: []
                  words: [
                    {<git>}
                    {<am>}
                    {($ Id.VSub_DollarName git_am_opt)}
                    {<--rebasing>}
                    {<--resolvemsg> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName resolvemsg))}
                    {
                      (BracedVarSub
                        left: <Id.Left_DollarBrace '${'>
                        token: <Id.VSub_Name gpg_sign_opt>
                        var_name: gpg_sign_opt
                        suffix_op: 
                          (suffix_op.Unary
                            op: <Id.VTest_ColonPlus _>
                            arg_word: {(DQ ($ Id.VSub_DollarName gpg_sign_opt))}
                          )
                        right: <Id.Right_DollarBrace '}'>
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Less '<'>
                      loc: (redir_loc.Fd fd:0)
                      arg: {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/rebased-patches'>)}
                    )
                  ]
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'ret='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'ret='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ret='> name:ret)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_QMark '?')}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <rm>
                  more_env: []
                  words: [{<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName GIT_DIR) <'/rebased-patches'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              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>}
                            {<0>}
                            {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                            {($ Id.VSub_DollarName ret)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (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: <write_basic_state>
                          more_env: []
                          words: [{<write_basic_state>}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Return return>
                      arg_word: {($ Id.VSub_DollarName ret)}
                    )
                  ]
                  spids: [447 458]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <move_to_original_branch>
              more_env: []
              words: [{<move_to_original_branch>}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <git_rebase__am>
      more_env: []
      words: [{<git_rebase__am>}]
      redirects: []
      do_fork: T
    )
  ]
)