(command.CommandList
  children: [
    (C {(.)} {(git-sh-setup)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LF)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'\n' span_id:26))}
          spids: [24]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bases)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [33]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:head)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [35]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:remotes)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [37]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sep_seen)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [39]
        )
      ]
    )
    (command.ForEach
      iter_name: arg
      do_arg_iter: T
      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 name:sep_seen)
                          op: assign_op.Equal
                          rhs: {(yes)}
                          spids: [70]
                        )
                      ]
                    )
                  ]
                  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 name:head)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$arg')}
                          spids: [85]
                        )
                      ]
                    )
                  ]
                  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 name:remotes)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$remotes') ($ Id.VSub_DollarName '$arg') (' '))
                            }
                          spids: [99]
                        )
                      ]
                    )
                  ]
                  spids: [92 96 107 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:bases)
                          op: assign_op.Equal
                          rhs: 
                            {(DQ ($ Id.VSub_DollarName '$bases') ($ Id.VSub_DollarName '$arg') (' '))}
                          spids: [114]
                        )
                      ]
                    )
                  ]
                  spids: [110 111 122 -1]
                )
              ]
            )
          ]
        )
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$remotes'))}
      arms: [
        (case_arm
          pat_list: [
            {(Id.Lit_QMark '?') (Id.Lit_Star '*') (SQ (Token id:Id.Lit_Chars val:' ' span_id:144)) 
              (Id.Lit_QMark '?') (Id.Lit_Star '*')
            }
          ]
          spids: [141 148 151 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:157)
              arg_word: {(2)}
            )
          ]
          spids: [153 154 161 -1]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Pipeline
              children: [(C {(git)} {(diff-index)} {(--quiet)} {(--cached)} {(HEAD)} {(--)})]
              negated: T
            )
          ]
          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 (Token id:Id.Lit_Chars val:'s/^/    /' span_id:218))})
              ]
              negated: F
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:222)
              arg_word: {(2)}
            )
          ]
          spids: [173 189]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MRC)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:229)
                command_list: 
                  (command.CommandList
                    children: [
                      (C {(git)} {(rev-parse)} {(--verify)} {(-q)} {($ Id.VSub_DollarName '$head')})
                    ]
                  )
              )
            }
          spids: [228]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:MRT)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:242)
                command_list: (command.CommandList children:[(C {(git)} {(write-tree)})])
              )
            }
          spids: [241]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NON_FF_MERGE)
          op: assign_op.Equal
          rhs: {(0)}
          spids: [248]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OCTOPUS_FAILURE)
          op: assign_op.Equal
          rhs: {(0)}
          spids: [251]
        )
      ]
    )
    (command.ForEach
      iter_name: SHA1
      iter_words: [{($ Id.VSub_DollarName '$remotes')}]
      do_arg_iter: F
      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: (Token id:Id.ControlFlow_Exit val:exit span_id:304)
                      arg_word: {(2)}
                    )
                  ]
                  spids: [274 275 -1 309]
                )
              ]
            )
            (C {(eval)} 
              {(Id.Lit_VarLike 'pretty_name=') 
                (word_part.EscapedLiteral
                  token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:316)
                ) (Id.Lit_LBrace '{') (GITHEAD_) ($ Id.VSub_DollarName '$SHA1') (Id.Lit_Other ':') (-) 
                ($ Id.VSub_DollarName '$SHA1') (Id.Lit_RBrace '}')
              }
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (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 name:SHA1_UP)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ 
                                (command_sub
                                  left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:346)
                                  command_list: 
                                    (command.CommandList
                                      children: [
                                        (command.Pipeline
                                          children: [
                                            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$SHA1'))})
                                            (C {(tr)} {(a-z)} {(A-Z)})
                                          ]
                                          negated: F
                                        )
                                      ]
                                    )
                                )
                              )
                            }
                          spids: [344]
                        )
                      ]
                    )
                    (C {(eval)} 
                      {(Id.Lit_VarLike 'pretty_name=') 
                        (word_part.EscapedLiteral
                          token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:367)
                        ) (Id.Lit_LBrace '{') (GITHEAD_) ($ Id.VSub_DollarName '$SHA1_UP') (Id.Lit_Other ':') (-) 
                        ($ Id.VSub_DollarName '$pretty_name') (Id.Lit_RBrace '}')
                      }
                    )
                  ]
                  spids: [326 341]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:common)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:381)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (C {(git)} {(merge-base)} {(--all)} {($ Id.VSub_DollarName '$SHA1')} 
                                    {($ Id.VSub_DollarName '$MRC')}
                                  )
                                ]
                              )
                          )
                        }
                      spids: [380]
                    )
                  ]
                )
                (C {(die)} 
                  {
                    (DQ 
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:399)
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(eval_gettext)} 
                                {
                                  (DQ ('Unable to find common commit with ') 
                                    (word_part.EscapedLiteral
                                      token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:404)
                                    ) (pretty_name)
                                  )
                                }
                              )
                            ]
                          )
                      )
                    )
                  }
                )
              ]
            )
            (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: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:437)
                          ) (pretty_name)
                        )
                      }
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:442)
                    )
                  ]
                  spids: [423 430 445 -1]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (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: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:494)
                          ) (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: (Token id:Id.ControlFlow_Exit val:exit span_id:513)
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MRC)
                          op: assign_op.Equal
                          rhs: {($ Id.VSub_DollarName '$SHA1')}
                          spids: [516]
                        )
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:MRT)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:520)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(git)} {(write-tree)})]
                                  )
                              )
                            }
                          spids: [519]
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Continue val:continue span_id:527)
                    )
                  ]
                  spids: [452 470]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:NON_FF_MERGE)
                  op: assign_op.Equal
                  rhs: {(1)}
                  spids: [534]
                )
              ]
            )
            (C {(eval_gettextln)} 
              {
                (DQ ('Trying simple merge with ') 
                  (word_part.EscapedLiteral
                    token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:543)
                  ) (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: (Token id:Id.ControlFlow_Exit val:exit span_id:566)
                  arg_word: {(2)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:next)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:572)
                        command_list: 
                          (command.CommandList
                            children: [
                              (command.Simple
                                words: [{(git)} {(write-tree)}]
                                redirects: [
                                  (redir.Redir
                                    op: (Token id:Id.Redir_Great val:'2>' span_id:577)
                                    fd: 2
                                    arg_word: {(/dev/null)}
                                  )
                                ]
                              )
                            ]
                          )
                      )
                    }
                  spids: [571]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(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 name:OCTOPUS_FAILURE)
                              op: assign_op.Equal
                              rhs: {(1)}
                              spids: [614]
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:next)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:619)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (command.Simple
                                        words: [{(git)} {(write-tree)}]
                                        redirects: [
                                          (redir.Redir
                                            op: (Token id:Id.Redir_Great val:'2>' span_id:624)
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                          )
                                        ]
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [618]
                        )
                      ]
                    )
                  ]
                  spids: [582 593]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MRC)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$MRC') (' ') ($ Id.VSub_DollarName '$SHA1'))}
                  spids: [633]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:MRT)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$next')}
                  spids: [641]
                )
              ]
            )
          ]
        )
    )
    (command.ControlFlow
      token: (Token id:Id.ControlFlow_Exit val:exit span_id:647)
      arg_word: {(DQ ($ Id.VSub_DollarName '$OCTOPUS_FAILURE'))}
    )
  ]
)