(command.CommandList
  children: [
    (C {<.>} {<git-sh-setup>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LF='> name:LF)
          op: assign_op.Equal
          rhs: {(SQ <'\n'>)}
          spids: [24]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bases='> name:bases)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [33]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [35]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remotes='> name:remotes)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [37]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sep_seen='> name:sep_seen)
          op: assign_op.Equal
          rhs: (rhs_word.Empty)
          spids: [39]
        )
      ]
      redirects: []
    )
    (command.ForEach
      iter_names: [arg]
      iterable: (for_iter.Args)
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: 
                {
                  (DQ <','> ($ Id.VSub_DollarName sep_seen) <','> ($ Id.VSub_DollarName head) <','> 
                    ($ Id.VSub_DollarName arg) <','>
                  )
                }
              arms: [
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'> <Id.Lit_Comma ','> <--> <Id.Lit_Comma ','>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'sep_seen='> name:sep_seen)
                          op: assign_op.Equal
                          rhs: {<yes>}
                          spids: [70]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [63 67 74 -1]
                )
                (case_arm
                  pat_list: [
                    {<Id.Lit_Comma ','> <yes> <Id.Lit_Comma ','> <Id.Lit_Comma ','> <Id.Lit_Star '*'>}
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'head='> name:head)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName arg)}
                          spids: [85]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [77 82 89 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Comma ','> <yes> <Id.Lit_Comma ','> <Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'remotes='> name:remotes)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName remotes) ($ Id.VSub_DollarName arg) <' '>)}
                          spids: [99]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [92 96 107 -1]
                )
                (case_arm
                  pat_list: [{<Id.Lit_Star '*'>}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'bases='> name:bases)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_DollarName bases) ($ Id.VSub_DollarName arg) <' '>)}
                          spids: [114]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [110 111 122 -1]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName remotes))}
      arms: [
        (case_arm
          pat_list: [
            {<Id.Lit_QMark '?'> <Id.Lit_Star '*'> (SQ <' '>) <Id.Lit_QMark '?'> <Id.Lit_Star '*'>}
          ]
          action: []
          spids: [141 148 151 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})]
          spids: [153 154 161 -1]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Pipeline
                  children: [(C {<git>} {<diff-index>} {<--quiet>} {<--cached>} {<HEAD>} {<-->})]
                  negated: T
                  stderr_indices: []
                )
              ]
            )
          action: [
            (C {<gettextln>} 
              {
                (DQ 
                  <'Error: Your local changes to the following files would be overwritten by merge'>
                )
              }
            )
            (command.Pipeline
              children: [
                (C {<git>} {<diff-index>} {<--cached>} {<--name-only>} {<HEAD>} {<-->})
                (C {<sed>} {<-e>} {(SQ <'s/^/    /'>)})
              ]
              negated: F
              stderr_indices: []
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [173 189]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRC='> name:MRC)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<git>} {<rev-parse>} {<--verify>} {<-q>} {($ Id.VSub_DollarName head)})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [228]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRT='> name:MRT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: <Id.Left_DollarParen '$('>
                child: (C {<git>} {<write-tree>})
                right: <Id.Eof_RParen _>
              )
            }
          spids: [241]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NON_FF_MERGE='> name:NON_FF_MERGE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [248]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OCTOPUS_FAILURE='> name:OCTOPUS_FAILURE)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [251]
        )
      ]
      redirects: []
    )
    (command.ForEach
      iter_names: [SHA1]
      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName remotes)}])
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName OCTOPUS_FAILURE))}
              arms: [
                (case_arm
                  pat_list: [{<1>}]
                  action: [
                    (C {<gettextln>} {(DQ <'Automated merge did not work.'>)})
                    (C {<gettextln>} {(DQ <'Should not be doing an octopus.'>)})
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<2>}
                    )
                  ]
                  spids: [274 275 -1 309]
                )
              ]
              redirects: []
            )
            (C {<eval>} 
              {<Id.Lit_VarLike 'pretty_name='> 
                (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'> ch:'$') <Id.Lit_LBrace '{'> <GITHEAD_> ($ Id.VSub_DollarName SHA1) <Id.Lit_Colon ':'> <-> 
                ($ Id.VSub_DollarName SHA1) <Id.Lit_RBrace '}'>
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} {(DQ ($ Id.VSub_DollarName SHA1))} {<Id.Lit_Equals '='>} 
                          {(DQ ($ Id.VSub_DollarName pretty_name))}
                        )
                      ]
                    )
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SHA1_UP='> name:SHA1_UP)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: <Id.Left_DollarParen '$('>
                                  child: 
                                    (command.Pipeline
                                      children: [
                                        (C {<echo>} {(DQ ($ Id.VSub_DollarName SHA1))})
                                        (C {<tr>} {<a-z>} {<A-Z>})
                                      ]
                                      negated: F
                                      stderr_indices: []
                                    )
                                  right: <Id.Eof_RParen _>
                                )
                              )
                            }
                          spids: [344]
                        )
                      ]
                      redirects: []
                    )
                    (C {<eval>} 
                      {<Id.Lit_VarLike 'pretty_name='> 
                        (word_part.EscapedLiteral
                          token: <Id.Lit_EscapedChar '\\$'>
                          ch: '$'
                        ) <Id.Lit_LBrace '{'> <GITHEAD_> ($ Id.VSub_DollarName SHA1_UP) <Id.Lit_Colon ':'> <-> 
                        ($ Id.VSub_DollarName pretty_name) <Id.Lit_RBrace '}'>
                      }
                    )
                  ]
                  spids: [326 341]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'common='> name:common)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (C {<git>} {<merge-base>} {<--all>} {($ Id.VSub_DollarName SHA1)} 
                                {($ Id.VSub_DollarName MRC)}
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      spids: [380]
                    )
                  ]
                  redirects: []
                )
                (C {<die>} 
                  {
                    (DQ 
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (C {<eval_gettext>} 
                            {
                              (DQ <'Unable to find common commit with '> 
                                (word_part.EscapedLiteral
                                  token: <Id.Lit_EscapedChar '\\$'>
                                  ch: '$'
                                ) <pretty_name>
                              )
                            }
                          )
                        right: <Id.Eof_RParen _>
                      )
                    )
                  }
                )
              ]
            )
            (command.Case
              to_match: 
                {
                  (DQ ($ Id.VSub_DollarName LF) ($ Id.VSub_DollarName common) ($ Id.VSub_DollarName LF))
                }
              arms: [
                (case_arm
                  pat_list: [
                    {<Id.Lit_Star '*'> 
                      (DQ ($ Id.VSub_DollarName LF) ($ Id.VSub_DollarName SHA1) 
                        ($ Id.VSub_DollarName LF)
                      ) <Id.Lit_Star '*'>
                    }
                  ]
                  action: [
                    (C {<eval_gettextln>} 
                      {
                        (DQ <'Already up-to-date with '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) <pretty_name>
                        )
                      }
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                  spids: [423 430 445 -1]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [
                        (C {<test>} 
                          {
                            (DQ ($ Id.VSub_DollarName common) <','> ($ Id.VSub_DollarName NON_FF_MERGE))
                          } {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName MRC) <',0'>)}
                        )
                      ]
                    )
                  action: [
                    (C {<eval_gettextln>} 
                      {
                        (DQ <'Fast-forwarding to: '> 
                          (word_part.EscapedLiteral
                            token: <Id.Lit_EscapedChar '\\$'>
                            ch: '$'
                          ) <pretty_name>
                        )
                      }
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<git>} {<read-tree>} {<-u>} {<-m>} {($ Id.VSub_DollarName head)} 
                          {($ Id.VSub_DollarName SHA1)}
                        )
                        (command.ControlFlow token:<Id.ControlFlow_Exit exit>)
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRC='> name:MRC)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName SHA1)}
                          spids: [516]
                        )
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRT='> name:MRT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<git>} {<write-tree>})
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [519]
                        )
                      ]
                      redirects: []
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                  spids: [452 470]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NON_FF_MERGE='> name:NON_FF_MERGE)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [534]
                )
              ]
              redirects: []
            )
            (C {<eval_gettextln>} 
              {
                (DQ <'Trying simple merge with '> 
                  (word_part.EscapedLiteral
                    token: <Id.Lit_EscapedChar '\\$'>
                    ch: '$'
                  ) <pretty_name>
                )
              }
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<git>} {<read-tree>} {<-u>} {<-m>} {<--aggressive>} {($ Id.VSub_DollarName common)} 
                  {($ Id.VSub_DollarName MRT)} {($ Id.VSub_DollarName SHA1)}
                )
                (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'next='> name:next)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_DollarParen '$('>
                        child: 
                          (command.Simple
                            words: [{<git>} {<write-tree>}]
                            redirects: [
                              (redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            more_env: []
                            do_fork: T
                          )
                        right: <Id.Eof_RParen _>
                      )
                    }
                  spids: [571]
                )
              ]
              redirects: []
            )
            (command.If
              arms: [
                (if_arm
                  cond: 
                    (condition.Shell
                      commands: [(C {<test>} {($ Id.VSub_QMark '?')} {<-ne>} {<0>})]
                    )
                  action: [
                    (C {<gettextln>} {(DQ <'Simple merge did not work, trying automatic merge.'>)})
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {<git-merge-index>} {<-o>} {<git-merge-one-file>} {<-a>})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: 
                                (sh_lhs_expr.Name
                                  left: <Id.Lit_VarLike 'OCTOPUS_FAILURE='>
                                  name: OCTOPUS_FAILURE
                                )
                              op: assign_op.Equal
                              rhs: {<1>}
                              spids: [614]
                            )
                          ]
                          redirects: []
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'next='> name:next)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: 
                                  (command.Simple
                                    words: [{<git>} {<write-tree>}]
                                    redirects: [
                                      (redir
                                        op: <Id.Redir_Great '2>'>
                                        loc: (redir_loc.Fd fd:2)
                                        arg: {<'/dev/null'>}
                                      )
                                    ]
                                    more_env: []
                                    do_fork: T
                                  )
                                right: <Id.Eof_RParen _>
                              )
                            }
                          spids: [618]
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [582 593]
                )
              ]
              else_action: []
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRC='> name:MRC)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName MRC) <' '> ($ Id.VSub_DollarName SHA1))}
                  spids: [633]
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MRT='> name:MRT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName next)}
                  spids: [641]
                )
              ]
              redirects: []
            )
          ]
        )
      redirects: []
    )
    (command.ControlFlow
      token: <Id.ControlFlow_Exit exit>
      arg_word: {(DQ ($ Id.VSub_DollarName OCTOPUS_FAILURE))}
    )
  ]
)