(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:OPTIONS_KEEPDASHDASH) op:Equal rhs:{(SQ )} spids:[13])]
      spids: [13]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:OPTIONS_SPEC)
          op: Equal
          rhs: 
            {
              (DQ ("git merge [options] <remote>...\n") ("git merge [options] <msg> HEAD <remote>\n") 
                ("--\n") ("stat                 show a diffstat at the end of the merge\n") 
                ("n                    don't show a diffstat at the end of the merge\n") ("summary              (synonym to --stat)\n") 
                ("log                  add list of one-line log to merge commit message\n") ("squash               create a single commit instead of doing a merge\n") 
                ("commit               perform a commit if the merge succeeds (default)\n") ("ff                   allow fast-forward (default)\n") 
                ("ff-only              abort if fast-forward is not possible\n") ("rerere-autoupdate    update index with any reused conflict resolution\n") 
                ("s,strategy=          merge strategy to use\n") ("X=                   option for selected merge strategy\n") 
                ("m,message=           message to be used for the merge commit (if any)\n")
              )
            }
          spids: [15]
        )
      ]
      spids: [15]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:SUBDIRECTORY_OK) op:Equal rhs:{(Yes)} spids:[36])]
      spids: [36]
    )
    (C {(.)} {(git-sh-setup)})
    (C {(require_work_tree)})
    (C {(cd_to_toplevel)})
    (AndOr
      children: [
        (C {(test)} {(-z)} 
          {
            (DQ 
              (CommandSubPart
                command_list: (CommandList children:[(C {(git)} {(ls-files)} {(-u)})])
                left_token: <Left_CommandSub "$(">
                spids: [53 59]
              )
            )
          }
        )
        (C {(die)} {(DQ ("Merge is not possible because you have unmerged files."))})
      ]
      op_id: Op_DPipe
    )
    (AndOr
      children: [
        (Pipeline
          children: [(C {(test)} {(-e)} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_HEAD))})]
          negated: True
        )
        (C {(die)} {(SQ <"You have not concluded your merge (MERGE_HEAD exists).">)})
      ]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:LF) op:Equal rhs:{(SQ <"\n">)} spids:[93])]
      spids: [93]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:all_strategies)
          op: Equal
          rhs: {(SQ <"recur recursive octopus resolve stupid ours subtree">)}
          spids: [99]
        )
      ]
      spids: [99]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:all_strategies)
          op: Equal
          rhs: {(DQ ($ VSub_Name "$all_strategies") (" recursive-ours recursive-theirs"))}
          spids: [104]
        )
      ]
      spids: [104]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:not_strategies)
          op: Equal
          rhs: {(SQ <"base file index tree">)}
          spids: [110]
        )
      ]
      spids: [110]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:default_twohead_strategies)
          op: Equal
          rhs: {(SQ <recursive>)}
          spids: [115]
        )
      ]
      spids: [115]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:default_octopus_strategies)
          op: Equal
          rhs: {(SQ <octopus>)}
          spids: [120]
        )
      ]
      spids: [120]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:no_fast_forward_strategies)
          op: Equal
          rhs: {(SQ <"subtree ours">)}
          spids: [125]
        )
      ]
      spids: [125]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:no_trivial_strategies)
          op: Equal
          rhs: {(SQ <"recursive recur subtree ours recursive-ours recursive-theirs">)}
          spids: [130]
        )
      ]
      spids: [130]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:use_strategies) op:Equal rhs:{(SQ )} spids:[135])]
      spids: [135]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:xopt) op:Equal rhs:{(SQ )} spids:[137])]
      spids: [137]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:allow_fast_forward) op:Equal rhs:{(t)} spids:[140])]
      spids: [140]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:fast_forward_only) op:Equal rhs:{(SQ )} spids:[143])]
      spids: [143]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:allow_trivial_merge) op:Equal rhs:{(t)} spids:[145])]
      spids: [145]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair lhs:(LhsName name:squash) op:Equal rhs:{(SQ )} spids:[148])
        (assign_pair lhs:(LhsName name:no_commit) op:Equal rhs:{(SQ )} spids:[150])
        (assign_pair lhs:(LhsName name:log_arg) op:Equal rhs:{(SQ )} spids:[152])
        (assign_pair lhs:(LhsName name:rr_arg) op:Equal rhs:{(SQ )} spids:[154])
      ]
      spids: [148]
    )
    (FuncDef
      name: dropsave
      body: 
        (BraceGroup
          children: [
            (AndOr
              children: [
                (C {(rm)} {(-f)} {(--)} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_HEAD))} 
                  {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_MSG))} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_STASH))} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_MODE))}
                )
                (C {(exit)} {(1)})
              ]
              op_id: Op_DPipe
            )
          ]
          spids: [161]
        )
      spids: [157 160]
    )
    (FuncDef
      name: savestate
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(git)} {(stash)} {(create)}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_STASH))}
                  spids: [218]
                )
              ]
            )
          ]
          spids: [205]
        )
      spids: [201 204]
    )
    (FuncDef
      name: restorestate
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-f)} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_STASH))})]
                  action: [
                    (SimpleCommand
                      words: [{(git)} {(reset)} {(--hard)} {($ VSub_Name "$head")}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[257])]
                    )
                    (C {(git)} {(stash)} {(apply)} 
                      {
                        (CommandSubPart
                          command_list: 
                            (CommandList
                              children: [(C {(cat)} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_STASH))})]
                            )
                          left_token: <Left_CommandSub "$(">
                          spids: [267 274]
                        )
                      }
                    )
                    (SimpleCommand
                      words: [{(git)} {(update-index)} {(--refresh)}]
                      redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[283])]
                    )
                  ]
                  spids: [-1 246]
                )
              ]
              spids: [-1 287]
            )
          ]
          spids: [231]
        )
      spids: [227 230]
    )
    (FuncDef
      name: finish_up_to_date
      body: 
        (BraceGroup
          children: [
            (Case
              to_match: {(DQ ($ VSub_Name "$squash"))}
              arms: [
                (case_arm
                  pat_list: [{(t)}]
                  action: [(C {(echo)} {(DQ ($ VSub_Number "$1") (" (nothing to squash)"))})]
                  spids: [309 310 320 -1]
                )
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [(C {(echo)} {(DQ ($ VSub_Number "$1"))})]
                  spids: [-1 325 334 -1]
                )
              ]
              spids: [300 306 337]
            )
            (C {(dropsave)})
          ]
          spids: [297]
        )
      spids: [292 296]
    )
    (FuncDef
      name: squash_message
      body: 
        (BraceGroup
          children: [
            (C {(echo)} {(Squashed)} {(commit)} {(of)} {(the)} {(following) (Lit_Other ":")})
            (C {(echo)})
            (C {(git)} {(log)} {(--no-merges)} {(--pretty) (Lit_Other "=") (medium)} 
              {(Lit_Other "^") (DQ ($ VSub_Name "$head"))} {($ VSub_Name "$remoteheads")}
            )
          ]
          spids: [350]
        )
      spids: [345 349]
    )
    (FuncDef
      name: finish
      body: 
        (BraceGroup
          children: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(SQ )} {(Lit_Other "=")} {(DQ ($ VSub_Number "$2"))})]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rlogm)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$GIT_REFLOG_ACTION"))}
                          spids: [415]
                        )
                      ]
                      spids: [415]
                    )
                  ]
                  spids: [-1 412]
                )
              ]
              else_action: [
                (C {(echo)} {(DQ ($ VSub_Number "$2"))})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:rlogm)
                      op: Equal
                      rhs: {(DQ ($ VSub_Name "$GIT_REFLOG_ACTION") (": ") ($ VSub_Number "$2"))}
                      spids: [431]
                    )
                  ]
                  spids: [431]
                )
              ]
              spids: [421 439]
            )
            (Case
              to_match: {(DQ ($ VSub_Name "$squash"))}
              arms: [
                (case_arm
                  pat_list: [{(t)}]
                  action: [
                    (C {(echo)} {(DQ ("Squash commit -- not updating HEAD"))})
                    (SimpleCommand
                      words: [{(squash_message)}]
                      redirects: [
                        (Redir
                          op_id: Redir_Great
                          fd: -1
                          arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/SQUASH_MSG))}
                          spids: [464]
                        )
                      ]
                    )
                  ]
                  spids: [451 452 471 -1]
                )
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (Case
                      to_match: {(DQ ($ VSub_Name "$merge_msg"))}
                      arms: [
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [(C {(echo)} {(DQ ("No merge message -- not updating HEAD"))})]
                          spids: [-1 490 500 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [
                            (AndOr
                              children: [
                                (C {(git)} {(update-ref)} {(-m)} {(DQ ($ VSub_Name "$rlogm"))} {(HEAD)} 
                                  {(DQ ($ VSub_Number "$1"))} {(DQ ($ VSub_Name "$head"))}
                                )
                                (C {(exit)} {(1)})
                              ]
                              op_id: Op_DPipe
                            )
                            (C {(git)} {(gc)} {(--auto)})
                          ]
                          spids: [503 504 541 -1]
                        )
                      ]
                      spids: [479 485 544]
                    )
                  ]
                  spids: [-1 476 547 -1]
                )
              ]
              spids: [442 448 550]
            )
            (Case
              to_match: {(DQ ($ VSub_Number "$1"))}
              arms: [
                (case_arm pat_list:[{(SQ )}] spids:[-1564567-1])
                (case_arm
                  pat_list: [{(Lit_Other "?") (Lit_Other "*")}]
                  action: [
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Name "$show_diffstat"))} {(Lit_Other "=")} {(t)})
                          ]
                          action: [
                            (SimpleCommand
                              words: [
                                {(git)}
                                {(diff)}
                                {(--stat)}
                                {(--summary)}
                                {(-M)}
                                {(DQ ($ VSub_Name "$head"))}
                                {(DQ ($ VSub_Number "$1"))}
                              ]
                              more_env: [(env_pair name:GIT_PAGER val:{(SQ )} spids:[595])]
                            )
                          ]
                          spids: [-1 588]
                        )
                      ]
                      spids: [-1 618]
                    )
                  ]
                  spids: [570 572 621 -1]
                )
              ]
              spids: [553 559 624]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-x)} {(DQ ($ VSub_Name "$GIT_DIR")) (/hooks/post-merge)})]
                  action: [
                    (Case
                      to_match: {(DQ ($ VSub_Name "$squash"))}
                      arms: [
                        (case_arm
                          pat_list: [{(t)}]
                          action: [(C {(DQ ($ VSub_Name "$GIT_DIR")) (/hooks/post-merge)} {(1)})]
                          spids: [656 657 668 -1]
                        )
                        (case_arm
                          pat_list: [{(SQ )}]
                          action: [(C {(DQ ($ VSub_Name "$GIT_DIR")) (/hooks/post-merge)} {(0)})]
                          spids: [-1 673 684 -1]
                        )
                      ]
                      spids: [647 653 687]
                    )
                  ]
                  spids: [-1 644]
                )
              ]
              spids: [-1 690]
            )
          ]
          spids: [395]
        )
      spids: [390 394]
    )
    (FuncDef
      name: merge_name
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:remote)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [703]
                )
              ]
              spids: [703]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:rh)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(git)}
                                      {(rev-parse)}
                                      {(--verify)}
                                      {(DQ ($ VSub_Name "$remote") ("^0"))}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [722]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [710 724]
                          )
                        }
                      spids: [709]
                    )
                  ]
                  spids: [709]
                )
                (ControlFlow token:<ControlFlow_Return return>)
              ]
              op_id: Op_DPipe
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:truname)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(expr)} {(DQ ($ VSub_Name "$remote"))} {(Lit_Other ":")} 
                                            {(SQ <"\\(.*\\)~[0-9]*$">)}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [734 746]
                                  )
                                }
                              spids: [733]
                            )
                          ]
                          spids: [733]
                        )
                        (SimpleCommand
                          words: [
                            {(git)}
                            {(show-ref)}
                            {(-q)}
                            {(--verify)}
                            {(DQ (refs/heads/) ($ VSub_Name "$truname"))}
                          ]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: 2
                              arg_word: {(/dev/null)}
                              spids: [764]
                            )
                          ]
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {
                        (DQ ($ VSub_Name "$rh") ("\t\tbranch '") ($ VSub_Name "$truname") 
                          ("' (early part) of .")
                        )
                      }
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 768]
                )
              ]
              spids: [-1 784]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:found_ref)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (SimpleCommand
                                        words: [
                                          {(git)}
                                          {(rev-parse)}
                                          {(--symbolic-full-name)}
                                          {(--verify)}
                                          {(DQ ($ VSub_Name "$remote"))}
                                        ]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [805]
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [790 807]
                              )
                            }
                          spids: [789]
                        )
                      ]
                      spids: [789]
                    )
                  ]
                  action: [
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:expanded)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(git)} {(check-ref-format)} {(--branch)} 
                                            {(DQ ($ VSub_Name "$remote"))}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [814 824]
                                  )
                                }
                              spids: [813]
                            )
                          ]
                          spids: [813]
                        )
                        (C {(exit)})
                      ]
                      op_id: Op_DPipe
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name found_ref>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VOp1_Pound
                                        arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)}
                                      )
                                    spids: [837 844]
                                  )
                                )
                              } {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$found_ref"))}
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ($ VSub_Name "$rh") ("\t\tbranch '") ($ VSub_Name "$expanded") 
                                  ("' of .")
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                            )
                          ]
                          spids: [-1 855]
                        )
                        (if_arm
                          cond: [
                            (C {(test)} 
                              {
                                (DQ 
                                  (BracedVarSub
                                    token: <VSub_Name found_ref>
                                    suffix_op: 
                                      (StringUnary
                                        op_id: VOp1_Pound
                                        arg_word: {(refs) (Lit_Slash /) (remotes) (Lit_Slash /)}
                                      )
                                    spids: [876 883]
                                  )
                                )
                              } {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$found_ref"))}
                            )
                          ]
                          action: [
                            (C {(echo)} 
                              {
                                (DQ ($ VSub_Name "$rh") ("\t\tremote branch '") 
                                  ($ VSub_Name "$expanded") ("' of .")
                                )
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                            )
                          ]
                          spids: [871 894]
                        )
                      ]
                      spids: [-1 910]
                    )
                  ]
                  spids: [-1 810]
                )
              ]
              spids: [-1 913]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name "$remote"))} {(Lit_Other "=")} {(DQ (FETCH_HEAD))})
                        (C {(test)} {(-r)} {(DQ ($ VSub_Name "$GIT_DIR") (/FETCH_HEAD))})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (C {(sed)} {(-e)} {(SQ <"s/\tnot-for-merge\t/\t\t/">)} {(-e)} {(1q)} 
                      {(DQ ($ VSub_Name "$GIT_DIR") (/FETCH_HEAD))}
                    )
                    (ControlFlow token:<ControlFlow_Return return>)
                  ]
                  spids: [-1 942]
                )
              ]
              spids: [-1 968]
            )
            (C {(echo)} {(DQ ($ VSub_Name "$rh") ("\t\tcommit '") ($ VSub_Name "$remote") ("'"))})
          ]
          spids: [700]
        )
      spids: [695 699]
    )
    (FuncDef
      name: parse_config
      body: 
        (BraceGroup
          children: [
            (While
              cond: [
                (Sentence
                  child: (C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)})
                  terminator: <Op_Semi ";">
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ ($ VSub_Number "$1"))}
                      arms: [
                        (case_arm
                          pat_list: [{(-n)} {(--no-stat)} {(--no-summary)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:show_diffstat)
                                  op: Equal
                                  rhs: {(false)}
                                  spids: [1023]
                                )
                              ]
                              spids: [1023]
                            )
                          ]
                          spids: [1015 1020 1026 -1]
                        )
                        (case_arm
                          pat_list: [{(--stat)} {(--summary)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:show_diffstat)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1035]
                                )
                              ]
                              spids: [1035]
                            )
                          ]
                          spids: [1029 1032 1038 -1]
                        )
                        (case_arm
                          pat_list: [{(--log)} {(--no-log)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:log_arg)
                                  op: Equal
                                  rhs: {($ VSub_Number "$1")}
                                  spids: [1047]
                                )
                              ]
                              spids: [1047]
                            )
                          ]
                          spids: [1041 1044 1050 -1]
                        )
                        (case_arm
                          pat_list: [{(--squash)}]
                          action: [
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$allow_fast_forward"))} {(Lit_Other "=")} 
                                  {(t)}
                                )
                                (C {(die)} {(DQ ("You cannot combine --squash with --no-ff."))})
                              ]
                              op_id: Op_DPipe
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:squash)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1077]
                                )
                                (assign_pair
                                  lhs: (LhsName name:no_commit)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1080]
                                )
                              ]
                              spids: [1077]
                            )
                          ]
                          spids: [1053 1054 1083 -1]
                        )
                        (case_arm
                          pat_list: [{(--no-squash)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:squash)
                                  op: Equal
                                  rhs: {(SQ )}
                                  spids: [1090]
                                )
                                (assign_pair
                                  lhs: (LhsName name:no_commit)
                                  op: Equal
                                  rhs: {(SQ )}
                                  spids: [1092]
                                )
                              ]
                              spids: [1090]
                            )
                          ]
                          spids: [1086 1087 1094 -1]
                        )
                        (case_arm
                          pat_list: [{(--commit)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:no_commit)
                                  op: Equal
                                  rhs: {(SQ )}
                                  spids: [1101]
                                )
                              ]
                              spids: [1101]
                            )
                          ]
                          spids: [1097 1098 1103 -1]
                        )
                        (case_arm
                          pat_list: [{(--no-commit)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:no_commit)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1110]
                                )
                              ]
                              spids: [1110]
                            )
                          ]
                          spids: [1106 1107 1113 -1]
                        )
                        (case_arm
                          pat_list: [{(--ff)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:allow_fast_forward)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1120]
                                )
                              ]
                              spids: [1120]
                            )
                          ]
                          spids: [1116 1117 1123 -1]
                        )
                        (case_arm
                          pat_list: [{(--no-ff)}]
                          action: [
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$squash"))} 
                                  {(KW_Bang "!") (Lit_Other "=")} {(t)}
                                )
                                (C {(die)} {(DQ ("You cannot combine --squash with --no-ff."))})
                              ]
                              op_id: Op_DPipe
                            )
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$fast_forward_only"))} 
                                  {(KW_Bang "!") (Lit_Other "=")} {(t)}
                                )
                                (C {(die)} {(DQ ("You cannot combine --ff-only with --no-ff."))})
                              ]
                              op_id: Op_DPipe
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:allow_fast_forward)
                                  op: Equal
                                  rhs: {(f)}
                                  spids: [1172]
                                )
                              ]
                              spids: [1172]
                            )
                          ]
                          spids: [1126 1127 1175 -1]
                        )
                        (case_arm
                          pat_list: [{(--ff-only)}]
                          action: [
                            (AndOr
                              children: [
                                (C {(test)} {(DQ ($ VSub_Name "$allow_fast_forward"))} 
                                  {(KW_Bang "!") (Lit_Other "=")} {(f)}
                                )
                                (C {(die)} {(DQ ("You cannot combine --ff-only with --no-ff."))})
                              ]
                              op_id: Op_DPipe
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:fast_forward_only)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1203]
                                )
                              ]
                              spids: [1203]
                            )
                          ]
                          spids: [1178 1179 1206 -1]
                        )
                        (case_arm
                          pat_list: [{(--rerere-autoupdate)} {(--no-rerere-autoupdate)}]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:rr_arg)
                                  op: Equal
                                  rhs: {($ VSub_Number "$1")}
                                  spids: [1215]
                                )
                              ]
                              spids: [1215]
                            )
                          ]
                          spids: [1209 1212 1218 -1]
                        )
                        (case_arm
                          pat_list: [{(-s)} {(--strategy)}]
                          action: [
                            (C {(shift)})
                            (Case
                              to_match: {(DQ (" ") ($ VSub_Name "$all_strategies") (" "))}
                              arms: [
                                (case_arm
                                  pat_list: [
                                    {(Lit_Other "*") (DQ (" ") ($ VSub_Number "$1") (" ")) 
                                      (Lit_Other "*")
                                    }
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:use_strategies)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ($ VSub_Name "$use_strategies") ($ VSub_Number "$1") 
                                                (" ")
                                              )
                                            }
                                          spids: [1251]
                                        )
                                      ]
                                      spids: [1251]
                                    )
                                  ]
                                  spids: [1241 1248 1259 -1]
                                )
                                (case_arm
                                  pat_list: [{(Lit_Other "*")}]
                                  action: [
                                    (AndOr
                                      children: [
                                        (Case
                                          to_match: {(DQ (" ") ($ VSub_Name "$not_strategies") (" "))}
                                          arms: [
                                            (case_arm
                                              pat_list: [
                                                {(Lit_Other "*") 
                                                  (DQ (" ") ($ VSub_Number "$1") (" ")) (Lit_Other "*")
                                                }
                                              ]
                                              action: [(C {(false)})]
                                              spids: [1277 1284 -1 1290]
                                            )
                                          ]
                                          spids: [1266 1274 1290]
                                        )
                                        (AndOr
                                          children: [
                                            (SimpleCommand
                                              words: [{(type)} {(DQ (git-merge-) ($ VSub_Number "$1"))}]
                                              redirects: [
                                                (Redir
                                                  op_id: Redir_Great
                                                  fd: -1
                                                  arg_word: {(/dev/null)}
                                                  spids: [1302]
                                                )
                                                (Redir
                                                  op_id: Redir_GreatAnd
                                                  fd: 2
                                                  arg_word: {(1)}
                                                  spids: [1305]
                                                )
                                              ]
                                            )
                                            (C {(die)} 
                                              {
                                                (DQ ("available strategies are: ") 
                                                  ($ VSub_Name "$all_strategies")
                                                )
                                              }
                                            )
                                          ]
                                          op_id: Op_DPipe
                                        )
                                      ]
                                      op_id: Op_DAmp
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:use_strategies)
                                          op: Equal
                                          rhs: 
                                            {
                                              (DQ ($ VSub_Name "$use_strategies") ($ VSub_Number "$1") 
                                                (" ")
                                              )
                                            }
                                          spids: [1319]
                                        )
                                      ]
                                      spids: [1319]
                                    )
                                  ]
                                  spids: [1262 1263 1327 -1]
                                )
                              ]
                              spids: [1230 1238 1330]
                            )
                          ]
                          spids: [1221 1224 1333 -1]
                        )
                        (case_arm
                          pat_list: [{(-X)}]
                          action: [
                            (C {(shift)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:xopt)
                                  op: Equal
                                  rhs: 
                                    {
                                      (DQ 
                                        (BracedVarSub
                                          token: <VSub_Name xopt>
                                          suffix_op: 
                                            (StringUnary
                                              op_id: VTest_ColonPlus
                                              arg_word: {($ VSub_Name "$xopt") (" ")}
                                            )
                                          spids: [1345 1350]
                                        ) 
                                        (CommandSubPart
                                          command_list: 
                                            (CommandList
                                              children: [
                                                (C {(git)} {(rev-parse)} {(--sq-quote)} 
                                                  {(DQ (--) ($ VSub_Number "$1"))}
                                                )
                                              ]
                                            )
                                          left_token: <Left_CommandSub "$(">
                                          spids: [1351 1362]
                                        )
                                      )
                                    }
                                  spids: [1343]
                                )
                              ]
                              spids: [1343]
                            )
                          ]
                          spids: [1336 1337 1366 -1]
                        )
                        (case_arm
                          pat_list: [{(-m)} {(--message)}]
                          action: [
                            (C {(shift)})
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:merge_msg)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Number "$1"))}
                                  spids: [1378]
                                )
                              ]
                              spids: [1378]
                            )
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:have_message)
                                  op: Equal
                                  rhs: {(t)}
                                  spids: [1384]
                                )
                              ]
                              spids: [1384]
                            )
                          ]
                          spids: [1369 1372 1388 -1]
                        )
                        (case_arm
                          pat_list: [{(--)}]
                          action: [(C {(shift)}) (ControlFlow token:<ControlFlow_Break break>)]
                          spids: [1391 1392 1400 -1]
                        )
                        (case_arm
                          pat_list: [{(Lit_Other "*")}]
                          action: [(C {(usage)})]
                          spids: [1403 1404 1408 -1]
                        )
                      ]
                      spids: [1006 1012 1411]
                    )
                    (C {(shift)})
                  ]
                  spids: [1003 1417]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:args_left)
                  op: Equal
                  rhs: {($ VSub_Pound "$#")}
                  spids: [1420]
                )
              ]
              spids: [1420]
            )
          ]
          spids: [988]
        )
      spids: [983 987]
    )
    (AndOr
      children: [(C {(test)} {($ VSub_Pound "$#")} {(KW_Bang "!") (Lit_Other "=")} {(0)}) (C {(usage)})]
      op_id: Op_DPipe
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:have_message) op:Equal rhs:{(SQ )} spids:[1440])]
      spids: [1440]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:branch)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git-symbolic-ref)} {(-q)} {(HEAD)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1446 1452]
                      )
                    }
                  spids: [1445]
                )
              ]
              spids: [1445]
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:mergeopts)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(git)} {(config)} 
                                {
                                  (DQ (branch.) 
                                    (BracedVarSub
                                      token: <VSub_Name branch>
                                      suffix_op: 
                                        (StringUnary
                                          op_id: VOp1_Pound
                                          arg_word: {(refs) (Lit_Slash /) (heads) (Lit_Slash /)}
                                        )
                                      spids: [1465 1472]
                                    ) (.mergeoptions)
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1458 1475]
                      )
                    }
                  spids: [1457]
                )
              ]
              spids: [1457]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$mergeopts"))})]
                  action: [(C {(parse_config)} {($ VSub_Name "$mergeopts")} {(--)})]
                  spids: [-1 1489]
                )
              ]
              spids: [-1 1499]
            )
          ]
          spids: [-1 1454]
        )
      ]
      spids: [-1 1501]
    )
    (C {(parse_config)} {(DQ ($ VSub_At "$@"))})
    (While
      cond: [
        (Sentence
          child: (C {(test)} {($ VSub_Name "$args_left")} {(-lt)} {($ VSub_Pound "$#")})
          terminator: <Op_Semi ";">
        )
      ]
      body: 
        (DoGroup
          children: [(Sentence child:(C {(shift)}) terminator:<Op_Semi ";">)]
          spids: [1521 1526]
        )
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(test)} {(-z)} {(DQ ($ VSub_Name "$show_diffstat"))})
              terminator: <Op_Semi ";">
            )
          ]
          action: [
            (AndOr
              children: [
                (C {(test)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git)} {(config)} {(--bool)} {(merge.diffstat)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1546 1554]
                      )
                    )
                  } {(Lit_Other "=")} {(false)}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:show_diffstat)
                      op: Equal
                      rhs: {(false)}
                      spids: [1563]
                    )
                  ]
                  spids: [1563]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (C {(test)} 
                  {
                    (DQ 
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(git)} {(config)} {(--bool)} {(merge.stat)})]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [1570 1578]
                      )
                    )
                  } {(Lit_Other "=")} {(false)}
                )
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:show_diffstat)
                      op: Equal
                      rhs: {(false)}
                      spids: [1587]
                    )
                  ]
                  spids: [1587]
                )
              ]
              op_id: Op_DAmp
            )
            (AndOr
              children: [
                (C {(test)} {(-z)} {(DQ ($ VSub_Name "$show_diffstat"))})
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:show_diffstat)
                      op: Equal
                      rhs: {(t)}
                      spids: [1601]
                    )
                  ]
                  spids: [1601]
                )
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [-1 1540]
        )
      ]
      spids: [-1 1604]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (AndOr
              children: [
                (C {(test)} {(-z)} {(DQ ($ VSub_Name "$have_message"))})
                (AndOr
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:second_token)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (SimpleCommand
                                        words: [
                                          {(git)}
                                          {(rev-parse)}
                                          {(--verify)}
                                          {(DQ ($ VSub_Number "$2") ("^0"))}
                                        ]
                                        redirects: [
                                          (Redir
                                            op_id: Redir_Great
                                            fd: 2
                                            arg_word: {(/dev/null)}
                                            spids: [1649]
                                          )
                                        ]
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [1637 1651]
                              )
                            }
                          spids: [1636]
                        )
                      ]
                      spids: [1636]
                    )
                    (AndOr
                      children: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:head_commit)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (SimpleCommand
                                            words: [{(git)} {(rev-parse)} {(--verify)} {(DQ (HEAD))}]
                                            redirects: [
                                              (Redir
                                                op_id: Redir_Great
                                                fd: 2
                                                arg_word: {(/dev/null)}
                                                spids: [1668]
                                              )
                                            ]
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub "$(">
                                    spids: [1657 1670]
                                  )
                                }
                              spids: [1656]
                            )
                          ]
                          spids: [1656]
                        )
                        (C {(test)} {(DQ ($ VSub_Name "$second_token"))} {(Lit_Other "=")} 
                          {(DQ ($ VSub_Name "$head_commit"))}
                        )
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:merge_msg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1690]
                )
              ]
              spids: [1690]
            )
            (C {(shift)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:head_arg)
                  op: Equal
                  rhs: {(DQ ($ VSub_Number "$1"))}
                  spids: [1699]
                )
              ]
              spids: [1699]
            )
            (C {(shift)})
          ]
          spids: [-1 1687]
        )
        (if_arm
          cond: [
            (Pipeline
              children: [
                (SimpleCommand
                  words: [{(git)} {(rev-parse)} {(--verify)} {(HEAD)}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: -1
                      arg_word: {(/dev/null)}
                      spids: [1719]
                    )
                    (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1722])
                  ]
                )
              ]
              negated: True
            )
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(1)} {(-ne)} {($ VSub_Pound "$#")})]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("Can merge only exactly one commit into empty head"))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1756])]
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [-1 1751]
                )
              ]
              spids: [-1 1769]
            )
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$squash"))} {(KW_Bang "!") (Lit_Other "=")} {(t)})
                (C {(die)} {(DQ ("Squash commit into empty head not supported yet"))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$allow_fast_forward"))} {(Lit_Other "=")} {(t)})
                (C {(die)} {(DQ ("Non-fast-forward into an empty head does not make sense"))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:rh)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Number "$1") ("^0"))})
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [1815 1826]
                          )
                        }
                      spids: [1814]
                    )
                  ]
                  spids: [1814]
                )
                (C {(die)} {(DQ ($ VSub_Number "$1") (" - not something we can merge"))})
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (C {(git)} {(update-ref)} {(-m)} {(DQ ("initial pull"))} {(HEAD)} {(DQ ($ VSub_Name "$rh"))} {(DQ )})
                (C {(git)} {(read-tree)} {(--reset)} {(-u)} {(HEAD)})
              ]
              op_id: Op_DAmp
            )
            (C {(exit)})
          ]
          spids: [1707 1725]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [(assign_pair lhs:(LhsName name:head_arg) op:Equal rhs:{(HEAD)} spids:[1883])]
          spids: [1883]
        )
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:merge_msg)
              op: Equal
              rhs: 
                {
                  (DQ 
                    (CommandSubPart
                      command_list: 
                        (CommandList
                          children: [
                            (Pipeline
                              children: [
                                (ForEach
                                  iter_name: remote
                                  do_arg_iter: True
                                  body: 
                                    (DoGroup
                                      children: [(C {(merge_name)} {(DQ ($ VSub_Name "$remote"))})]
                                      spids: [1918 1928]
                                    )
                                  spids: [-1 -1]
                                )
                                (If
                                  arms: [
                                    (if_arm
                                      cond: [
                                        (C {(test)} {(DQ ($ VSub_Name "$have_message"))} 
                                          {(Lit_Other "=")} {(t)}
                                        )
                                      ]
                                      action: [
                                        (C {(git)} {(fmt-merge-msg)} {(-m)} 
                                          {(DQ ($ VSub_Name "$merge_msg"))} {($ VSub_Name "$log_arg")}
                                        )
                                      ]
                                      spids: [-1 1946]
                                    )
                                  ]
                                  else_action: [
                                    (C {(git)} {(fmt-merge-msg)} {($ VSub_Name "$log_arg")})
                                  ]
                                  spids: [1962 1972]
                                )
                              ]
                              negated: False
                            )
                          ]
                        )
                      left_token: <Left_CommandSub "$(">
                      spids: [1910 1975]
                    )
                  )
                }
              spids: [1908]
            )
          ]
          spids: [1908]
        )
      ]
      spids: [1876 1978]
    )
    (AndOr
      children: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:head)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(git)} {(rev-parse)} {(--verify)} 
                            {(DQ ($ VSub_Name "$head_arg")) (Lit_Other "^") (0)}
                          )
                        ]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [1981 1993]
                  )
                }
              spids: [1980]
            )
          ]
          spids: [1980]
        )
        (C {(usage)})
      ]
      op_id: Op_DPipe
    )
    (Sentence
      child: 
        (AndOr
          children: [(C {(test)} {(DQ ($ VSub_Pound "$#"))} {(Lit_Other "=")} {(0)}) (C {(usage)})]
          op_id: Op_DAmp
        )
      terminator: <Op_Semi ";">
    )
    (C {(set_reflog_action)} {(DQ ("merge ") ($ VSub_Star "$*"))})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:remoteheads) op:Equal rhs:{(SQ )} spids:[2029])]
      spids: [2029]
    )
    (ForEach
      iter_name: remote
      do_arg_iter: True
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:remotehead)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (SimpleCommand
                                    words: [
                                      {(git)}
                                      {(rev-parse)}
                                      {(--verify)}
                                      {(DQ ($ VSub_Name "$remote")) (Lit_Other "^") (0)}
                                    ]
                                    redirects: [
                                      (Redir
                                        op_id: Redir_Great
                                        fd: 2
                                        arg_word: {(/dev/null)}
                                        spids: [2052]
                                      )
                                    ]
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2039 2054]
                          )
                        }
                      spids: [2038]
                    )
                  ]
                  spids: [2038]
                )
                (C {(die)} {(DQ ($ VSub_Name "$remote") (" - not something we can merge"))})
              ]
              op_id: Op_DPipe
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:remoteheads)
                  op: Equal
                  rhs: {(DQ (${ VSub_Name remoteheads) ($ VSub_Name "$remotehead") (" "))}
                  spids: [2067]
                )
              ]
              spids: [2067]
            )
            (C {(eval)} {(GITHEAD_) ($ VSub_Name "$remotehead") (Lit_Other "=") (SQ <"\"$remote\"">)})
            (C {(export)} {(GITHEAD_) ($ VSub_Name "$remotehead")})
          ]
          spids: [2035 2092]
        )
      spids: [-1 -1]
    )
    (Sentence child:(C {(set)} {(x)} {($ VSub_Name "$remoteheads")}) terminator:<Op_Semi ";">)
    (C {(shift)})
    (Case
      to_match: {(DQ ($ VSub_Name "$use_strategies"))}
      arms: [
        (case_arm
          pat_list: [{(SQ )}]
          action: [
            (Case
              to_match: {(DQ ($ VSub_Pound "$#"))}
              arms: [
                (case_arm
                  pat_list: [{(1)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:var)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(git)} {(config)} {(--get)} {(pull.twohead)})]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [2133 2141]
                                )
                              )
                            }
                          spids: [2131]
                        )
                      ]
                      spids: [2131]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$var"))})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:use_strategies)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name "$var"))}
                                  spids: [2159]
                                )
                              ]
                              spids: [2159]
                            )
                          ]
                          spids: [-1 2156]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:use_strategies)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name "$default_twohead_strategies"))}
                              spids: [2168]
                            )
                          ]
                          spids: [2168]
                        )
                      ]
                      spids: [2165 2174]
                    )
                  ]
                  spids: [2127 2128 2176 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:var)
                          op: Equal
                          rhs: 
                            {
                              (DQ 
                                (CommandSubPart
                                  command_list: 
                                    (CommandList
                                      children: [(C {(git)} {(config)} {(--get)} {(pull.octopus)})]
                                    )
                                  left_token: <Left_CommandSub "$(">
                                  spids: [2185 2193]
                                )
                              )
                            }
                          spids: [2183]
                        )
                      ]
                      spids: [2183]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$var"))})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:use_strategies)
                                  op: Equal
                                  rhs: {(DQ ($ VSub_Name "$var"))}
                                  spids: [2211]
                                )
                              ]
                              spids: [2211]
                            )
                          ]
                          spids: [-1 2208]
                        )
                      ]
                      else_action: [
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:use_strategies)
                              op: Equal
                              rhs: {(DQ ($ VSub_Name "$default_octopus_strategies"))}
                              spids: [2220]
                            )
                          ]
                          spids: [2220]
                        )
                      ]
                      spids: [2217 2226]
                    )
                  ]
                  spids: [2179 2180 2228 -1]
                )
              ]
              spids: [2118 2124 2231]
            )
          ]
          spids: [-1 2115 2234 -1]
        )
      ]
      spids: [2105 2111 2236]
    )
    (ForEach
      iter_name: s
      iter_words: [{($ VSub_Name "$use_strategies")}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (ForEach
              iter_name: ss
              iter_words: [{($ VSub_Name "$no_fast_forward_strategies")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ (" ") ($ VSub_Name "$s") (" "))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other "*") (DQ (" ") ($ VSub_Name "$ss") (" ")) (Lit_Other "*")}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:allow_fast_forward)
                                  op: Equal
                                  rhs: {(f)}
                                  spids: [2283]
                                )
                              ]
                              spids: [2283]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [2273 2280 2290 -1]
                        )
                      ]
                      spids: [2262 2270 2293]
                    )
                  ]
                  spids: [2259 2296]
                )
              spids: [2255 -1]
            )
            (ForEach
              iter_name: ss
              iter_words: [{($ VSub_Name "$no_trivial_strategies")}]
              do_arg_iter: False
              body: 
                (DoGroup
                  children: [
                    (Case
                      to_match: {(DQ (" ") ($ VSub_Name "$s") (" "))}
                      arms: [
                        (case_arm
                          pat_list: [
                            {(Lit_Other "*") (DQ (" ") ($ VSub_Name "$ss") (" ")) (Lit_Other "*")}
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:allow_trivial_merge)
                                  op: Equal
                                  rhs: {(f)}
                                  spids: [2332]
                                )
                              ]
                              spids: [2332]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [2322 2329 2339 -1]
                        )
                      ]
                      spids: [2311 2319 2342]
                    )
                  ]
                  spids: [2308 2345]
                )
              spids: [2304 -1]
            )
          ]
          spids: [2247 2347]
        )
      spids: [2244 -1]
    )
    (Case
      to_match: {(DQ ($ VSub_Pound "$#"))}
      arms: [
        (case_arm
          pat_list: [{(1)}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:common)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(git)} {(merge-base)} {(--all)} {($ VSub_Name "$head")} 
                                {(DQ ($ VSub_At "$@"))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [2363 2375]
                      )
                    }
                  spids: [2362]
                )
              ]
              spids: [2362]
            )
          ]
          spids: [2358 2359 2378 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:common)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(git)} {(merge-base)} {(--all)} {(--octopus)} {($ VSub_Name "$head")} 
                                {(DQ ($ VSub_At "$@"))}
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [2385 2399]
                      )
                    }
                  spids: [2384]
                )
              ]
              spids: [2384]
            )
          ]
          spids: [2380 2381 2402 -1]
        )
      ]
      spids: [2350 2356 2404]
    )
    (SimpleCommand
      words: [{(echo)} {(DQ ($ VSub_Name "$head"))}]
      redirects: [
        (Redir
          op_id: Redir_Great
          fd: -1
          arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/ORIG_HEAD))}
          spids: [2412]
        )
      ]
    )
    (Case
      to_match: 
        {
          (DQ ($ VSub_Name "$allow_fast_forward") (",") ($ VSub_Pound "$#") (",") ($ VSub_Name "$common") 
            (",") ($ VSub_Name "$no_commit")
          )
        }
      arms: [
        (case_arm
          pat_list: [
            {(Lit_Other "?") (Lit_Comma ",") (Lit_Other "*") (Lit_Comma ",") (SQ ) (Lit_Comma ",") 
              (Lit_Other "*")
            }
          ]
          spids: [2433 2441 2448 -1]
        )
        (case_arm
          pat_list: [
            {(Lit_Other "?") (Lit_Comma ",") (1) (Lit_Comma ",") (DQ ($ VSub_Number "$1")) 
              (Lit_Comma ",") (Lit_Other "*")
            }
          ]
          action: [(C {(finish_up_to_date)} {(DQ ("Already up-to-date."))}) (C {(exit)} {(0)})]
          spids: [2450 2459 2482 -1]
        )
        (case_arm
          pat_list: [
            {(t) (Lit_Comma ",") (1) (Lit_Comma ",") (DQ ($ VSub_Name "$head")) (Lit_Comma ",") 
              (Lit_Other "*")
            }
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ("Updating ") 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(git)} {(rev-parse)} {(--short)} {($ VSub_Name "$head")})]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [2504 2512]
                  ) (..) 
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [(C {(git)} {(rev-parse)} {(--short)} {($ VSub_Number "$1")})]
                      )
                    left_token: <Left_CommandSub "$(">
                    spids: [2514 2522]
                  )
                )
              }
            )
            (SimpleCommand
              words: [{(git)} {(update-index)} {(--refresh)}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2532])]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:msg)
                  op: Equal
                  rhs: {(DQ (Fast-forward))}
                  spids: [2536]
                )
              ]
              spids: [2536]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$have_message"))})]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:msg)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name "$msg") (" (no commit created; -m option ignored)"))}
                          spids: [2556]
                        )
                      ]
                      spids: [2556]
                    )
                  ]
                  spids: [-1 2553]
                )
              ]
              spids: [-1 2563]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:new_head)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Number "$1") ("^0"))})
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [2567 2578]
                          )
                        }
                      spids: [2566]
                    )
                  ]
                  spids: [2566]
                )
                (AndOr
                  children: [
                    (C {(git)} {(read-tree)} {(-v)} {(-m)} {(-u)} 
                      {(--exclude-per-directory) (Lit_Other "=") (.gitignore)} {($ VSub_Name "$head")} {(DQ ($ VSub_Name "$new_head"))}
                    )
                    (AndOr
                      children: [
                        (C {(finish)} {(DQ ($ VSub_Name "$new_head"))} {(DQ ($ VSub_Name "$msg"))})
                        (C {(exit)})
                      ]
                      op_id: Op_DPipe
                    )
                  ]
                  op_id: Op_DAmp
                )
              ]
              op_id: Op_DAmp
            )
            (C {(dropsave)})
            (C {(exit)} {(0)})
          ]
          spids: [2484 2493 2629 -1]
        )
        (case_arm
          pat_list: [
            {(Lit_Other "?") (Lit_Comma ",") (1) (Lit_Comma ",") (Lit_Other "?") (Lit_Other "*") 
              (DQ ($ VSub_Name "$LF")) (Lit_Other "?") (Lit_Other "*") (Lit_Comma ",") (Lit_Other "*")
            }
          ]
          spids: [2631 2644 2655 -1]
        )
        (case_arm
          pat_list: [
            {(Lit_Other "?") (Lit_Comma ",") (1) (Lit_Comma ",") (Lit_Other "*") (Lit_Comma ",")}
          ]
          action: [
            (SimpleCommand
              words: [{(git)} {(update-index)} {(--refresh)}]
              redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[2680])]
            )
            (Case
              to_match: 
                {(DQ ($ VSub_Name "$allow_trivial_merge") (",") ($ VSub_Name "$fast_forward_only"))}
              arms: [
                (case_arm
                  pat_list: [{(t) (Lit_Comma ",")}]
                  action: [
                    (AndOr
                      children: [
                        (SimpleCommand
                          words: [{(git)} {(var)} {(GIT_COMMITTER_IDENT)}]
                          redirects: [
                            (Redir
                              op_id: Redir_Great
                              fd: -1
                              arg_word: {(/dev/null)}
                              spids: [2710]
                            )
                          ]
                        )
                        (C {(exit)})
                      ]
                      op_id: Op_DPipe
                    )
                    (C {(echo)} {(DQ ("Trying really trivial in-index merge..."))})
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (AndOr
                              children: [
                                (C {(git)} {(read-tree)} {(--trivial)} {(-m)} {(-u)} {(-v)} 
                                  {($ VSub_Name "$common")} {($ VSub_Name "$head")} {(DQ ($ VSub_Number "$1"))}
                                )
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:result_tree)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [(C {(git)} {(write-tree)})]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [2751 2755]
                                          )
                                        }
                                      spids: [2750]
                                    )
                                  ]
                                  spids: [2750]
                                )
                              ]
                              op_id: Op_DAmp
                            )
                          ]
                          action: [
                            (C {(echo)} {(DQ (Wonderful.))})
                            (AndOr
                              children: [
                                (Assignment
                                  keyword: Assign_None
                                  pairs: [
                                    (assign_pair
                                      lhs: (LhsName name:result_commit)
                                      op: Equal
                                      rhs: 
                                        {
                                          (CommandSubPart
                                            command_list: 
                                              (CommandList
                                                children: [
                                                  (Pipeline
                                                    children: [
                                                      (C {(printf)} {(SQ <"%s\\n">)} 
                                                        {(DQ ($ VSub_Name "$merge_msg"))}
                                                      )
                                                      (C {(git)} {(commit-tree)} 
                                                        {($ VSub_Name "$result_tree")} {(-p)} {(HEAD)} {(-p)} {(DQ ($ VSub_Number "$1"))}
                                                      )
                                                    ]
                                                    negated: False
                                                  )
                                                ]
                                              )
                                            left_token: <Left_CommandSub "$(">
                                            spids: [2769 2802]
                                          )
                                        }
                                      spids: [2768]
                                    )
                                  ]
                                  spids: [2768]
                                )
                                (C {(exit)})
                              ]
                              op_id: Op_DPipe
                            )
                            (C {(finish)} {(DQ ($ VSub_Name "$result_commit"))} {(DQ ("In-index merge"))})
                            (C {(dropsave)})
                            (C {(exit)} {(0)})
                          ]
                          spids: [-1 2758]
                        )
                      ]
                      spids: [-1 2828]
                    )
                    (C {(echo)} {(DQ (Nope.))})
                  ]
                  spids: [2695 2697 -1 2838]
                )
              ]
              spids: [2684 2692 2838]
            )
          ]
          spids: [2657 2663 2841 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:up_to_date) op:Equal rhs:{(t)} spids:[2851])]
              spids: [2851]
            )
            (ForEach
              iter_name: remote
              do_arg_iter: True
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:common_one)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(merge-base)} {(--all)} {($ VSub_Name "$head")} 
                                        {($ VSub_Name "$remote")}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [2864 2874]
                              )
                            }
                          spids: [2863]
                        )
                      ]
                      spids: [2863]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (C {(test)} {(DQ ($ VSub_Name "$common_one"))} 
                              {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$remote"))}
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:up_to_date)
                                  op: Equal
                                  rhs: {(f)}
                                  spids: [2896]
                                )
                              ]
                              spids: [2896]
                            )
                            (ControlFlow token:<ControlFlow_Break break>)
                          ]
                          spids: [-1 2893]
                        )
                      ]
                      spids: [-1 2903]
                    )
                  ]
                  spids: [2860 2906]
                )
              spids: [-1 -1]
            )
            (If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(DQ ($ VSub_Name "$up_to_date"))} {(Lit_Other "=")} {(t)})]
                  action: [
                    (C {(finish_up_to_date)} {(DQ ("Already up-to-date. Yeeah!"))})
                    (C {(exit)} {(0)})
                  ]
                  spids: [-1 2922]
                )
              ]
              spids: [-1 2937]
            )
          ]
          spids: [2843 2844 2940 -1]
        )
      ]
      spids: [2419 2431 2942]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(DQ ($ VSub_Name "$fast_forward_only"))} {(Lit_Other "=")} {(t)})]
          action: [(C {(die)} {(DQ ("Not possible to fast-forward, aborting."))})]
          spids: [-1 2957]
        )
      ]
      spids: [-1 2966]
    )
    (AndOr
      children: [
        (SimpleCommand
          words: [{(git)} {(var)} {(GIT_COMMITTER_IDENT)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[2978])]
        )
        (C {(exit)})
      ]
      op_id: Op_DPipe
    )
    (Case
      to_match: {(DQ ($ VSub_Name "$use_strategies"))}
      arms: [
        (case_arm
          pat_list: [{(Lit_Other "?") (Lit_Other "*") (SQ <" ">) (Lit_Other "?") (Lit_Other "*")}]
          action: [
            (C {(savestate)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:single_strategy)
                  op: Equal
                  rhs: {(no)}
                  spids: [3027]
                )
              ]
              spids: [3027]
            )
          ]
          spids: [3010 3017 3031 -1]
        )
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (C {(rm)} {(-f)} {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_STASH))})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:single_strategy)
                  op: Equal
                  rhs: {(yes)}
                  spids: [3047]
                )
              ]
              spids: [3047]
            )
          ]
          spids: [3033 3034 3051 -1]
        )
      ]
      spids: [3002 3008 3053]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair lhs:(LhsName name:result_tree) op:Equal rhs:{(SQ )} spids:[3056])
        (assign_pair lhs:(LhsName name:best_cnt) op:Equal rhs:{(-1)} spids:[3058])
        (assign_pair lhs:(LhsName name:best_strategy) op:Equal rhs:{(SQ )} spids:[3061])
        (assign_pair lhs:(LhsName name:wt_strategy) op:Equal rhs:{(SQ )} spids:[3063])
      ]
      spids: [3056]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:merge_was_ok) op:Equal rhs:{(SQ )} spids:[3065])]
      spids: [3065]
    )
    (ForEach
      iter_name: strategy
      iter_words: [{($ VSub_Name "$use_strategies")}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$wt_strategy"))} {(Lit_Other "=")} {(SQ )})
                (BraceGroup
                  children: [
                    (C {(echo)} {(DQ ("Rewinding the tree to pristine..."))})
                    (C {(restorestate)})
                  ]
                  spids: [3091]
                )
              ]
              op_id: Op_DPipe
            )
            (Case
              to_match: {(DQ ($ VSub_Name "$single_strategy"))}
              arms: [
                (case_arm
                  pat_list: [{(no)}]
                  action: [
                    (C {(echo)} {(DQ ("Trying merge strategy ") ($ VSub_Name "$strategy") (...))})
                  ]
                  spids: [3116 3117 3129 -1]
                )
              ]
              spids: [3107 3113 3132]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:wt_strategy)
                  op: Equal
                  rhs: {($ VSub_Name "$strategy")}
                  spids: [3140]
                )
              ]
              spids: [3140]
            )
            (C {(eval)} 
              {(SQ <"git-merge-$strategy ">) (DQ ($ VSub_Name "$xopt")) 
                (SQ <" $common -- \"$head_arg\" \"$@\"">)
              }
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:exit)
                  op: Equal
                  rhs: {($ VSub_QMark "$?")}
                  spids: [3158]
                )
              ]
              spids: [3158]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (AndOr
                      children: [
                        (C {(test)} {(DQ ($ VSub_Name "$no_commit"))} {(Lit_Other "=")} {(t)})
                        (C {(test)} {(DQ ($ VSub_Name "$exit"))} {(Lit_Other "=")} {(0)})
                      ]
                      op_id: Op_DAmp
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:merge_was_ok)
                          op: Equal
                          rhs: {(t)}
                          spids: [3190]
                        )
                      ]
                      spids: [3190]
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:exit)
                              op: Equal
                              rhs: {(1)}
                              spids: [3194]
                            )
                          ]
                          spids: [3194]
                        )
                      terminator: <Op_Semi ";">
                    )
                  ]
                  spids: [-1 3187]
                )
              ]
              spids: [-1 3202]
            )
            (AndOr
              children: [
                (C {(test)} {(DQ ($ VSub_Name "$exit"))} {(Lit_Other "=")} {(0)})
                (BraceGroup
                  children: [
                    (If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(DQ ($ VSub_Name "$exit"))} {(-eq)} {(1)})]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:cnt)
                                  op: Equal
                                  rhs: 
                                    {
                                      (CommandSubPart
                                        command_list: 
                                          (CommandList
                                            children: [
                                              (Pipeline
                                                children: [
                                                  (BraceGroup
                                                    children: [
                                                      (C {(git)} {(diff-files)} {(--name-only)})
                                                      (C {(git)} {(ls-files)} {(--unmerged)})
                                                    ]
                                                    spids: [3249]
                                                  )
                                                  (C {(wc)} {(-l)})
                                                ]
                                                negated: False
                                              )
                                            ]
                                          )
                                        left_token: <Left_CommandSub "$(">
                                        spids: [3248 3273]
                                      )
                                    }
                                  spids: [3247]
                                )
                              ]
                              spids: [3247]
                            )
                            (If
                              arms: [
                                (if_arm
                                  cond: [
                                    (AndOr
                                      children: [
                                        (C {(test)} {($ VSub_Name "$best_cnt")} {(-le)} {(0)})
                                        (C {(test)} {($ VSub_Name "$cnt")} {(-le)} 
                                          {($ VSub_Name "$best_cnt")}
                                        )
                                      ]
                                      op_id: Op_DPipe
                                    )
                                  ]
                                  action: [
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:best_strategy)
                                          op: Equal
                                          rhs: {($ VSub_Name "$strategy")}
                                          spids: [3300]
                                        )
                                      ]
                                      spids: [3300]
                                    )
                                    (Assignment
                                      keyword: Assign_None
                                      pairs: [
                                        (assign_pair
                                          lhs: (LhsName name:best_cnt)
                                          op: Equal
                                          rhs: {($ VSub_Name "$cnt")}
                                          spids: [3304]
                                        )
                                      ]
                                      spids: [3304]
                                    )
                                  ]
                                  spids: [-1 3297]
                                )
                              ]
                              spids: [-1 3308]
                            )
                          ]
                          spids: [-1 3244]
                        )
                      ]
                      spids: [-1 3311]
                    )
                    (ControlFlow token:<ControlFlow_Continue continue>)
                  ]
                  spids: [3218]
                )
              ]
              op_id: Op_DPipe
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:result_tree)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: (CommandList children:[(C {(git)} {(write-tree)})])
                            left_token: <Left_CommandSub "$(">
                            spids: [3326 3330]
                          )
                        }
                      spids: [3325]
                    )
                  ]
                  spids: [3325]
                )
                (ControlFlow token:<ControlFlow_Break break>)
              ]
              op_id: Op_DAmp
            )
          ]
          spids: [3075 3336]
        )
      spids: [3072 -1]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(test)} {(SQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$result_tree"))})
          ]
          action: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ VSub_Name "$allow_fast_forward"))} {(Lit_Other "=")} {(DQ (t))})
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:parents)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(git)} {(merge-base)} {(--independent)} 
                                        {(DQ ($ VSub_Name "$head"))} {(DQ ($ VSub_At "$@"))}
                                      )
                                    ]
                                  )
                                left_token: <Left_CommandSub "$(">
                                spids: [3381 3395]
                              )
                            }
                          spids: [3380]
                        )
                      ]
                      spids: [3380]
                    )
                  ]
                  spids: [-1 3377]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:parents)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (C {(git)} {(rev-parse)} {(DQ ($ VSub_Name "$head"))} 
                                    {(DQ ($ VSub_At "$@"))}
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [3402 3414]
                          )
                        }
                      spids: [3401]
                    )
                  ]
                  spids: [3401]
                )
              ]
              spids: [3398 3417]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:parents)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (Pipeline
                                children: [
                                  (C {(echo)} {(DQ ($ VSub_Name "$parents"))})
                                  (C {(sed)} {(-e)} {(SQ <"s/^/-p /">)})
                                ]
                                negated: False
                              )
                            ]
                          )
                        left_token: <Left_CommandSub "$(">
                        spids: [3421 3437]
                      )
                    }
                  spids: [3420]
                )
              ]
              spids: [3420]
            )
            (AndOr
              children: [
                (Assignment
                  keyword: Assign_None
                  pairs: [
                    (assign_pair
                      lhs: (LhsName name:result_commit)
                      op: Equal
                      rhs: 
                        {
                          (CommandSubPart
                            command_list: 
                              (CommandList
                                children: [
                                  (Pipeline
                                    children: [
                                      (C {(printf)} {(SQ <"%s\\n">)} {(DQ ($ VSub_Name "$merge_msg"))})
                                      (C {(git)} {(commit-tree)} {($ VSub_Name "$result_tree")} 
                                        {($ VSub_Name "$parents")}
                                      )
                                    ]
                                    negated: False
                                  )
                                ]
                              )
                            left_token: <Left_CommandSub "$(">
                            spids: [3441 3461]
                          )
                        }
                      spids: [3440]
                    )
                  ]
                  spids: [3440]
                )
                (C {(exit)})
              ]
              op_id: Op_DPipe
            )
            (C {(finish)} {(DQ ($ VSub_Name "$result_commit"))} 
              {(DQ ("Merge made by ") ($ VSub_Name "$wt_strategy") (.))}
            )
            (C {(dropsave)})
            (C {(exit)} {(0)})
          ]
          spids: [-1 3359]
        )
      ]
      spids: [-1 3488]
    )
    (Case
      to_match: {(DQ ($ VSub_Name "$best_strategy"))}
      arms: [
        (case_arm
          pat_list: [{(SQ )}]
          action: [
            (C {(restorestate)})
            (Case
              to_match: {(DQ ($ VSub_Name "$use_strategies"))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Lit_Other "?") (Lit_Other "*") (SQ <" ">) (Lit_Other "?") (Lit_Other "*")}
                  ]
                  action: [
                    (SimpleCommand
                      words: [{(echo)} {(DQ ("No merge strategy handled the merge."))}]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[3531])]
                    )
                  ]
                  spids: [3519 3526 3539 -1]
                )
                (case_arm
                  pat_list: [{(Lit_Other "*")}]
                  action: [
                    (SimpleCommand
                      words: [
                        {(echo)}
                        {(DQ ("Merge with strategy ") ($ VSub_Name "$use_strategies") (" failed."))}
                      ]
                      redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[3548])]
                    )
                  ]
                  spids: [3542 3543 3558 -1]
                )
              ]
              spids: [3510 3516 3561]
            )
            (C {(exit)} {(2)})
          ]
          spids: [-1 3504 3569 -1]
        )
        (case_arm pat_list:[{(DQ ($ VSub_Name "$wt_strategy"))}] spids:[357235743581-1])
        (case_arm
          pat_list: [{(Lit_Other "*")}]
          action: [
            (C {(echo)} {(DQ ("Rewinding the tree to pristine..."))})
            (C {(restorestate)})
            (C {(echo)} 
              {(DQ ("Using the ") ($ VSub_Name "$best_strategy") (" to prepare resolving by hand."))}
            )
            (C {(git-merge-) ($ VSub_Name "$best_strategy")} {($ VSub_Name "$common")} {(--)} 
              {(DQ ($ VSub_Name "$head_arg"))} {(DQ ($ VSub_At "$@"))}
            )
          ]
          spids: [3583 3584 3622 -1]
        )
      ]
      spids: [3494 3500 3624]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(DQ ($ VSub_Name "$squash"))} {(Lit_Other "=")} {(t)})]
          action: [(C {(finish)})]
          spids: [-1 3639]
        )
      ]
      else_action: [
        (ForEach
          iter_name: remote
          do_arg_iter: True
          body: (DoGroup children:[(C {(echo)} {($ VSub_Name "$remote")})] spids:[36523660])
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: -1
              arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_HEAD))}
              spids: [3662]
            )
          ]
          spids: [-1 -1]
        )
        (AndOr
          children: [
            (SimpleCommand
              words: [{(printf)} {(SQ <"%s\\n">)} {(DQ ($ VSub_Name "$merge_msg"))}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_MSG))}
                  spids: [3679]
                )
              ]
            )
            (C {(die)} {(DQ ("Could not write to ") ($ VSub_Name "$GIT_DIR") (/MERGE_MSG))})
          ]
          op_id: Op_DPipe
        )
        (AndOr
          children: [
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ VSub_Name "$allow_fast_forward"))} 
                      {(KW_Bang "!") (Lit_Other "=")} {(t)}
                    )
                  ]
                  action: [(C {(printf)} {(DQ ("%s"))} {(no-ff)})]
                  spids: [-1 3711]
                )
              ]
              else_action: [(C {(Lit_Other ":")})]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: -1
                  arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_MODE))}
                  spids: [3731]
                )
              ]
              spids: [3723 3729]
            )
            (C {(die)} {(DQ ("Could not write to ") ($ VSub_Name "$GIT_DIR") (/MERGE_MODE))})
          ]
          op_id: Op_DPipe
        )
      ]
      spids: [3644 3748]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(test)} {(DQ ($ VSub_Name "$merge_was_ok"))} {(Lit_Other "=")} {(t)})]
          action: [
            (SimpleCommand
              words: [
                {(echo)}
                {(DQ ("Automatic merge went well; stopped before committing as requested"))}
              ]
              redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[3768])]
            )
            (C {(exit)} {(0)})
          ]
          spids: [-1 3763]
        )
      ]
      else_action: [
        (BraceGroup
          children: [
            (C {(echo)} {(SQ <"\n"> <"Conflicts:\n">)})
            (Pipeline
              children: [
                (C {(git)} {(ls-files)} {(--unmerged)})
                (C {(sed)} {(-e)} {(SQ <"s/^[^\t]*\t/\t/">)})
                (C {(uniq)})
              ]
              negated: False
            )
          ]
          redirects: [
            (Redir
              op_id: Redir_DGreat
              fd: -1
              arg_word: {(DQ ($ VSub_Name "$GIT_DIR") (/MERGE_MSG))}
              spids: [3821]
            )
          ]
          spids: [3785]
        )
        (C {(git)} {(rerere)} {($ VSub_Name "$rr_arg")})
        (C {(die)} {(DQ ("Automatic merge failed; fix conflicts and then commit the result."))})
      ]
      spids: [3782 3841]
    )
  ]
)