(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USAGE)
          op: assign_op.Equal
          rhs: 
            {(SQ (Token id:Id.Lit_Chars val:'<orig blob> <our blob> <their blob> <path>' span_id:54))}
          spids: [52]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USAGE)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$USAGE') (' <orig mode> <our mode> <their mode>'))}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:LONG_USAGE)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('usage: git merge-one-file ') ($ Id.VSub_DollarName '$USAGE') ('\n') ('\n') 
                ('Blob ids and modes should be empty for missing files.')
              )
            }
          spids: [63]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUBDIRECTORY_OK)
          op: assign_op.Equal
          rhs: {(Yes)}
          spids: [73]
        )
      ]
    )
    (C {(.)} {(git-sh-setup)})
    (C {(cd_to_toplevel)})
    (C {(require_work_tree)})
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(7)})]
          action: [
            (C {(echo)} {(DQ ($ Id.VSub_DollarName '$LONG_USAGE'))})
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:106)
              arg_word: {(1)}
            )
          ]
          spids: [85 96]
        )
      ]
    )
    (command.Case
      to_match: 
        {
          (DQ 
            (braced_var_sub
              token: (Token id:Id.VSub_Number val:1 span_id:117)
              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(.)})
            ) 
            (braced_var_sub
              token: (Token id:Id.VSub_Number val:2 span_id:122)
              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(.)})
            ) 
            (braced_var_sub
              token: (Token id:Id.VSub_Number val:3 span_id:127)
              suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(.)})
            )
          )
        }
      arms: [
        (case_arm
          pat_list: [
            {(DQ ($ Id.VSub_Number '$1') (..))}
            {(DQ ($ Id.VSub_Number '$1') (.) ($ Id.VSub_Number '$1'))}
            {(DQ ($ Id.VSub_Number '$1') ($ Id.VSub_Number '$1') (.))}
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {(test)} {(-z)} {(DQ ($ Id.VSub_Number '$6'))})
                                    (C {(test)} {(DQ ($ Id.VSub_Number '$5'))} 
                                      {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_Number '$7'))}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:193)
                            )
                          ]
                        )
                        (command.BraceGroup
                          children: [
                            (command.Sentence
                              child: 
                                (command.AndOr
                                  ops: [Id.Op_DAmp]
                                  children: [
                                    (C {(test)} {(-z)} {(DQ ($ Id.VSub_Number '$7'))})
                                    (C {(test)} {(DQ ($ Id.VSub_Number '$5'))} 
                                      {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_Number '$6'))}
                                    )
                                  ]
                                )
                              terminator: (Token id:Id.Op_Semi val:';' span_id:224)
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: File ') ($ Id.VSub_Number '$4') 
                            (' deleted on one branch but had its')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:240)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('ERROR: permissions changed on the other.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:250)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:254)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [167 229]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_Number '$2'))})]
                  action: [(C {(echo)} {(DQ ('Removing ') ($ Id.VSub_Number '$4'))})]
                  spids: [263 274]
                )
              ]
              else_action: [
                (C {(exec)} {(git)} {(update-index)} {(--remove)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (command.If
                  arms: [
                    (if_arm
                      cond: [(C {(test)} {(-f)} {(DQ ($ Id.VSub_Number '$4'))})]
                      action: [
                        (command.AndOr
                          ops: [Id.Op_DAmp Id.Op_DPipe]
                          children: [
                            (C {(rm)} {(-f)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
                            (command.Simple
                              words: [
                                {(rmdir)}
                                {(-p)}
                                {
                                  (DQ 
                                    (command_sub
                                      left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:358)
                                      command_list: 
                                        (command.CommandList
                                          children: [
                                            (C {(expr)} {(DQ (z) ($ Id.VSub_Number '$4'))} 
                                              {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'z\\(.*\\)/' span_id:369))}
                                            )
                                          ]
                                        )
                                    )
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_Great val:'2>' span_id:374)
                                  fd: 2
                                  arg_word: {(/dev/null)}
                                )
                              ]
                            )
                            (C {(Id.Lit_Other ':')})
                          ]
                        )
                      ]
                      spids: [326 337]
                    )
                  ]
                )
                (C {(exec)} {(git)} {(update-index)} {(--remove)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
              ]
            )
          ]
          spids: [144 164 402 -1]
        )
        (case_arm
          pat_list: [{(DQ (.) ($ Id.VSub_Number '$2') (.))}]
          action: [
            (C {(exec)} {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(DQ ($ Id.VSub_Number '$6'))} 
              {(DQ ($ Id.VSub_Number '$2'))} {(DQ ($ Id.VSub_Number '$4'))}
            )
          ]
          spids: [414 419 453 -1]
        )
        (case_arm
          pat_list: [{(DQ (..) ($ Id.VSub_Number '$3'))}]
          action: [
            (C {(echo)} {(DQ ('Adding ') ($ Id.VSub_Number '$4'))})
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-f)} {(DQ ($ Id.VSub_Number '$4'))})]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: untracked ') ($ Id.VSub_Number '$4') 
                            (' is overwritten by the merge.')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:492)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:496)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [470 481]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(DQ ($ Id.VSub_Number '$7'))} 
                  {(DQ ($ Id.VSub_Number '$3'))} {(DQ ($ Id.VSub_Number '$4'))}
                )
                (C {(exec)} {(git)} {(checkout-index)} {(-u)} {(-f)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
              ]
            )
          ]
          spids: [455 459 544 -1]
        )
        (case_arm
          pat_list: [{(DQ (.) ($ Id.VSub_Number '$3') ($ Id.VSub_Number '$2'))}]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ Id.VSub_Number '$6'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                      {(DQ ($ Id.VSub_Number '$7'))}
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: File ') ($ Id.VSub_Number '$4') 
                            (' added identically in both branches,')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:591)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: but permissions conflict ') ($ Id.VSub_Number '$6') ('->') 
                            ($ Id.VSub_Number '$7') (.)
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:605)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:609)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [564 580]
                )
              ]
            )
            (C {(echo)} {(DQ ('Adding ') ($ Id.VSub_Number '$4'))})
            (command.AndOr
              ops: [Id.Op_DAmp]
              children: [
                (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(DQ ($ Id.VSub_Number '$6'))} 
                  {(DQ ($ Id.VSub_Number '$2'))} {(DQ ($ Id.VSub_Number '$4'))}
                )
                (C {(exec)} {(git)} {(checkout-index)} {(-u)} {(-f)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
              ]
            )
          ]
          spids: [556 561 665 -1]
        )
        (case_arm
          pat_list: [
            {(DQ ($ Id.VSub_Number '$1') ($ Id.VSub_Number '$2') ($ Id.VSub_Number '$3'))}
            {(DQ (.) ($ Id.VSub_Number '$2') ($ Id.VSub_Number '$3'))}
          ]
          action: [
            (command.Case
              to_match: {(DQ (',') ($ Id.VSub_Number '$6') (',') ($ Id.VSub_Number '$7') (','))}
              arms: [
                (case_arm
                  pat_list: [
                    {(Id.Lit_Star '*') (Id.Lit_Comma ',') (120000) (Id.Lit_Comma ',') (Id.Lit_Star '*')}
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: ') ($ Id.VSub_Number '$4') 
                            (': Not merging symbolic link changes.')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:723)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:727)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [707 712 732 -1]
                )
                (case_arm
                  pat_list: [
                    {(Id.Lit_Star '*') (Id.Lit_Comma ',') (160000) (Id.Lit_Comma ',') (Id.Lit_Star '*')}
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: ') ($ Id.VSub_Number '$4') 
                            (': Not merging conflicting submodule changes.')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:751)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:755)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [735 740 760 -1]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:src1)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:768)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git-unpack-file)} {($ Id.VSub_Number '$2')})]
                          )
                      )
                    }
                  spids: [767]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:src2)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:776)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git-unpack-file)} {($ Id.VSub_Number '$3')})]
                          )
                      )
                    }
                  spids: [775]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [
                    (C {(echo)} {(DQ ('Added ') ($ Id.VSub_Number '$4') (' in both, but differently.'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:orig)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:807)
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(git-unpack-file)} 
                                        {(e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)}
                                      )
                                    ]
                                  )
                              )
                            }
                          spids: [806]
                        )
                      ]
                    )
                  ]
                  spids: [792 794 814 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [
                    (C {(echo)} {(DQ ('Auto-merging ') ($ Id.VSub_Number '$4'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:orig)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:830)
                                command_list: 
                                  (command.CommandList
                                    children: [(C {(git-unpack-file)} {($ Id.VSub_Number '$1')})]
                                  )
                              )
                            }
                          spids: [829]
                        )
                      ]
                    )
                  ]
                  spids: [817 818 837 -1]
                )
              ]
            )
            (C {(git)} {(merge-file)} {(DQ ($ Id.VSub_DollarName '$src1'))} 
              {(DQ ($ Id.VSub_DollarName '$orig'))} {(DQ ($ Id.VSub_DollarName '$src2'))}
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:ret)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_QMark '$?')}
                  spids: [861]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:msg)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [865]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {($ Id.VSub_DollarName '$ret')} 
                          {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)}
                        )
                        (C {(test)} {(-z)} {(DQ ($ Id.VSub_Number '$1'))})
                      ]
                    )
                  ]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msg)
                          op: assign_op.Equal
                          rhs: {(SQ (Token id:Id.Lit_Chars val:'content conflict' span_id:895))}
                          spids: [893]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ret)
                          op: assign_op.Equal
                          rhs: {(1)}
                          spids: [899]
                        )
                      ]
                    )
                  ]
                  spids: [868 890]
                )
              ]
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(git)} {(checkout-index)} {(-f)} {(--stage) (Id.Lit_Equals '=') (2)} {(--)} 
                  {(DQ ($ Id.VSub_Number '$4'))}
                )
                (command.Simple
                  words: [{(cat)} {(DQ ($ Id.VSub_DollarName '$src1'))}]
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Great val:'>' span_id:939)
                      fd: -1
                      arg_word: {(DQ ($ Id.VSub_Number '$4'))}
                    )
                  ]
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:946)
                  arg_word: {(1)}
                )
              ]
            )
            (C {(rm)} {(-f)} {(--)} {(DQ ($ Id.VSub_DollarName '$orig'))} 
              {(DQ ($ Id.VSub_DollarName '$src1'))} {(DQ ($ Id.VSub_DollarName '$src2'))}
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {(DQ ($ Id.VSub_Number '$6'))} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                      {(DQ ($ Id.VSub_Number '$7'))}
                    )
                  ]
                  action: [
                    (command.If
                      arms: [
                        (if_arm
                          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$msg'))})]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:msg)
                                  op: assign_op.Equal
                                  rhs: {(DQ ($ Id.VSub_DollarName '$msg') (', '))}
                                  spids: [1004]
                                )
                              ]
                            )
                          ]
                          spids: [990 1001]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:msg)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ (${ Id.VSub_Name msg) ('permissions conflict: ') 
                                ($ Id.VSub_Number '$5') ('->') ($ Id.VSub_Number '$6') (',') ($ Id.VSub_Number '$7')
                              )
                            }
                          spids: [1014]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:ret)
                          op: assign_op.Equal
                          rhs: {(1)}
                          spids: [1028]
                        )
                      ]
                    )
                  ]
                  spids: [971 987]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(test)} {($ Id.VSub_DollarName '$ret')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} 
                      {(0)}
                    )
                  ]
                  action: [
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('ERROR: ') ($ Id.VSub_DollarName '$msg') (' in ') ($ Id.VSub_Number '$4'))
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1060)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Exit val:exit span_id:1064)
                      arg_word: {(1)}
                    )
                  ]
                  spids: [1036 1048]
                )
              ]
            )
            (C {(exec)} {(git)} {(update-index)} {(--)} {(DQ ($ Id.VSub_Number '$4'))})
          ]
          spids: [677 690 1085 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [
            (command.Simple
              words: [
                {(echo)}
                {
                  (DQ ('ERROR: ') ($ Id.VSub_Number '$4') (': Not handling case ') 
                    ($ Id.VSub_Number '$1') (' -> ') ($ Id.VSub_Number '$2') (' -> ') ($ Id.VSub_Number '$3')
                  )
                }
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:1105)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
          ]
          spids: [1088 1089 1109 -1]
        )
      ]
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:1113) arg_word:{(1)})
  ]
)