(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTIONS_KEEPDASHDASH)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [13]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:OPTIONS_SPEC)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ('git repack [options]\n') ('--\n') 
                ('a               pack everything in a single pack\n') ('A               same as -a, and turn unreachable objects loose\n') 
                ('d               remove redundant packs, and run git-prune-packed\n') ('f               pass --no-reuse-delta to git-pack-objects\n') 
                ('F               pass --no-reuse-object to git-pack-objects\n') ('n               do not run git-update-server-info\n') ('q,quiet         be quiet\n') 
                ('l               pass --local to git-pack-objects\n') ('unpack-unreachable=  with -A, do not loosen objects older than this\n') (' Packing constraints\n') 
                ('window=         size of the window used for delta compression\n') ('window-memory=  same as the above, but limit memory size instead of entries count\n') 
                ('depth=          limits the maximum delta depth\n') ('max-pack-size=  maximum size of each packfile\n')
              )
            }
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:SUBDIRECTORY_OK)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:Yes span_id:38))}
          spids: [36]
        )
      ]
    )
    (C {(.)} {(git-sh-setup)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:no_update_info)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [46]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:all_into_one)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [48]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:remove_redundant)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [50]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:unpack_unreachable)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [52]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:local)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [54]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:no_reuse)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [56]
        )
        (assign_pair
          lhs: (sh_lhs_expr.Name name:extra)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [58]
        )
      ]
    )
    (command.WhileUntil
      keyword: (Token id:Id.KW_While val:while span_id:60)
      cond: [(C {(test)} {($ Id.VSub_Pound '$#')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(0)})]
      body: 
        (command.DoGroup
          children: [
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$1'))}
              arms: [
                (case_arm
                  pat_list: [{(-n)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:no_update_info)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [86]
                        )
                      ]
                    )
                  ]
                  spids: [83 84 89 -1]
                )
                (case_arm
                  pat_list: [{(-a)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:all_into_one)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [95]
                        )
                      ]
                    )
                  ]
                  spids: [92 93 98 -1]
                )
                (case_arm
                  pat_list: [{(-A)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:all_into_one)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [104]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:unpack_unreachable)
                          op: assign_op.Equal
                          rhs: {(--unpack-unreachable)}
                          spids: [108]
                        )
                      ]
                    )
                  ]
                  spids: [101 102 111 -1]
                )
                (case_arm
                  pat_list: [{(--unpack-unreachable)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:unpack_unreachable)
                              op: assign_op.Equal
                              rhs: {(DQ ('--unpack-unreachable=') ($ Id.VSub_Number '$2'))}
                              spids: [118]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:123)
                    )
                    (C {(shift)})
                  ]
                  spids: [114 115 127 -1]
                )
                (case_arm
                  pat_list: [{(-d)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:remove_redundant)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [133]
                        )
                      ]
                    )
                  ]
                  spids: [130 131 136 -1]
                )
                (case_arm
                  pat_list: [{(-q)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:GIT_QUIET)
                          op: assign_op.Equal
                          rhs: {(t)}
                          spids: [142]
                        )
                      ]
                    )
                  ]
                  spids: [139 140 145 -1]
                )
                (case_arm
                  pat_list: [{(-f)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:no_reuse)
                          op: assign_op.Equal
                          rhs: {(--no-reuse-delta)}
                          spids: [151]
                        )
                      ]
                    )
                  ]
                  spids: [148 149 154 -1]
                )
                (case_arm
                  pat_list: [{(-F)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:no_reuse)
                          op: assign_op.Equal
                          rhs: {(--no-reuse-object)}
                          spids: [160]
                        )
                      ]
                    )
                  ]
                  spids: [157 158 163 -1]
                )
                (case_arm
                  pat_list: [{(-l)}]
                  action: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:local)
                          op: assign_op.Equal
                          rhs: {(--local)}
                          spids: [169]
                        )
                      ]
                    )
                  ]
                  spids: [166 167 172 -1]
                )
                (case_arm
                  pat_list: [{(--max-pack-size)} {(--window)} {(--window-memory)} {(--depth)}]
                  action: [
                    (command.Sentence
                      child: 
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:extra)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$extra') (' ') ($ Id.VSub_Number '$1') 
                                    ('=') ($ Id.VSub_Number '$2')
                                  )
                                }
                              spids: [185]
                            )
                          ]
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:193)
                    )
                    (C {(shift)})
                  ]
                  spids: [175 182 197 -1]
                )
                (case_arm
                  pat_list: [{(--)}]
                  action: [
                    (command.Sentence
                      child: (C {(shift)})
                      terminator: (Token id:Id.Op_Semi val:';' span_id:204)
                    )
                    (command.ControlFlow
                      token: (Token id:Id.ControlFlow_Break val:break span_id:206)
                    )
                  ]
                  spids: [200 201 207 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_Star '*')}]
                  action: [(C {(usage)})]
                  spids: [210 211 215 -1]
                )
              ]
            )
            (C {(shift)})
          ]
        )
    )
    (command.Case
      to_match: 
        {
          (DQ 
            (command_sub
              left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:229)
              command_list: 
                (command.CommandList
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(git)} {(config)} {(--bool)} {(repack.usedeltabaseoffset)})
                        (C {(echo)} {(true)})
                      ]
                    )
                  ]
                )
            )
          )
        }
      arms: [
        (case_arm
          pat_list: [{(true)}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:extra)
                  op: assign_op.Equal
                  rhs: {(DQ ($ Id.VSub_DollarName '$extra') (' --delta-base-offset'))}
                  spids: [252]
                )
              ]
            )
          ]
          spids: [248 249 258 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PACKDIR)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$GIT_OBJECT_DIRECTORY') (/pack))}
          spids: [263]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PACKTMP)
          op: assign_op.Equal
          rhs: {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/.tmp-) ($ Id.VSub_Dollar '$$') (-pack))}
          spids: [269]
        )
      ]
    )
    (C {(rm)} {(-f)} {(DQ ($ Id.VSub_DollarName '$PACKTMP')) (-) (Id.Lit_Star '*')})
    (C {(trap)} {(SQ (Token id:Id.Lit_Chars val:'rm -f "$PACKTMP"-*' span_id:290))} {(0)} {(1)} {(2)} {(3)} 
      {(15)}
    )
    (command.Case
      to_match: {(DQ (',') ($ Id.VSub_DollarName '$all_into_one') (','))}
      arms: [
        (case_arm
          pat_list: [{(Id.Lit_Comma ',') (Id.Lit_Comma ',')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:args)
                  op: assign_op.Equal
                  rhs: {(SQ (Token id:Id.Lit_Chars val:'--unpacked --incremental' span_id:324))}
                  spids: [322]
                )
              ]
            )
          ]
          spids: [317 319 328 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Comma ',') (t) (Id.Lit_Comma ',')}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:args)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [336]
                )
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:existing)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [338]
                )
              ]
            )
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (command.Sentence
                      child: 
                        (C {(Id.Lit_LBracket '[')} {(-d)} {(DQ ($ Id.VSub_DollarName '$PACKDIR'))} 
                          {(Id.Lit_RBracket ']')}
                        )
                      terminator: (Token id:Id.Op_Semi val:';' span_id:352)
                    )
                  ]
                  action: [
                    (command.ForEach
                      iter_name: e
                      iter_words: [
                        {
                          (command_sub
                            left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:363)
                            command_list: 
                              (command.CommandList
                                children: [
                                  (command.AndOr
                                    ops: [Id.Op_DAmp]
                                    children: [
                                      (C {(cd)} {(DQ ($ Id.VSub_DollarName '$PACKDIR'))})
                                      (command.Pipeline
                                        children: [
                                          (C {(find)} {(.)} {(-type)} {(f)} {(-name)} 
                                            {(SQ (Token id:Id.Lit_Chars val:'*.pack' span_id:383))}
                                          )
                                          (C {(sed)} {(-e)} 
                                            {
                                              (SQ 
                                                (Token
                                                  id: Id.Lit_Chars
                                                  val: 's/^\\.\\///'
                                                  span_id: 395
                                                )
                                              )
                                            } {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/\\.pack$//' span_id:401))}
                                          )
                                        ]
                                        negated: F
                                      )
                                    ]
                                  )
                                ]
                              )
                          )
                        }
                      ]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.If
                              arms: [
                                (if_arm
                                  cond: [
                                    (command.Sentence
                                      child: 
                                        (C {(Id.Lit_LBracket '[')} {(-e)} 
                                          {
                                            (DQ ($ Id.VSub_DollarName '$PACKDIR') (/) 
                                              ($ Id.VSub_DollarName '$e') (.keep)
                                            )
                                          } {(Id.Lit_RBracket ']')}
                                        )
                                      terminator: (Token id:Id.Op_Semi val:';' span_id:423)
                                    )
                                  ]
                                  action: [(C {(Id.Lit_Other ':')} {(keep)})]
                                  spids: [409 425]
                                )
                              ]
                              else_action: [
                                (command.ShAssignment
                                  pairs: [
                                    (assign_pair
                                      lhs: (sh_lhs_expr.Name name:existing)
                                      op: assign_op.Equal
                                      rhs: 
                                        {
                                          (DQ ($ Id.VSub_DollarName '$existing') (' ') 
                                            ($ Id.VSub_DollarName '$e')
                                          )
                                        }
                                      spids: [436]
                                    )
                                  ]
                                )
                              ]
                            )
                          ]
                        )
                    )
                    (command.If
                      arms: [
                        (if_arm
                          cond: [
                            (command.AndOr
                              ops: [Id.Op_DAmp Id.Op_DAmp]
                              children: [
                                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$existing'))})
                                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$unpack_unreachable'))})
                                (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$remove_redundant'))})
                              ]
                            )
                          ]
                          action: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:args)
                                  op: assign_op.Equal
                                  rhs: 
                                    {
                                      (DQ ($ Id.VSub_DollarName '$args') (' ') 
                                        (command_sub
                                          left_token: 
                                            (Token
                                              id: Id.Left_DollarParen
                                              val: '$('
                                              span_id: 510
                                            )
                                          command_list: 
                                            (command.CommandList
                                              children: [
                                                (command.Pipeline
                                                  children: [
                                                    (C {(echo)} 
                                                      {
                                                        (DQ 
                                                          ($ Id.VSub_DollarName '$unpack_unreachable')
                                                        )
                                                      }
                                                    )
                                                    (C {(tr)} 
                                                      {
                                                        (SQ 
                                                          (Token
                                                            id: Id.Lit_Chars
                                                            val: ' '
                                                            span_id: 522
                                                          )
                                                        )
                                                      } {(.)}
                                                    )
                                                  ]
                                                  negated: F
                                                )
                                              ]
                                            )
                                        )
                                      )
                                    }
                                  spids: [506]
                                )
                              ]
                            )
                          ]
                          spids: [450 483]
                        )
                      ]
                    )
                  ]
                  spids: [341 354]
                )
              ]
            )
          ]
          spids: [330 333 536 -1]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(mkdir)} {(-p)} {(DQ ($ Id.VSub_DollarName '$PACKDIR'))})
        (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:551))
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:args)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$args') (' ') ($ Id.VSub_DollarName '$local') (' ') 
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:GIT_QUIET span_id:561)
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{(-q)})
                ) (' ') ($ Id.VSub_DollarName '$no_reuse') ($ Id.VSub_DollarName '$extra')
              )
            }
          spids: [554]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:names)
              op: assign_op.Equal
              rhs: 
                {
                  (command_sub
                    left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:571)
                    command_list: 
                      (command.CommandList
                        children: [
                          (command.Simple
                            words: [
                              {(git)}
                              {(pack-objects)}
                              {(--keep-true-parents)}
                              {(--honor-pack-keep)}
                              {(--non-empty)}
                              {(--all)}
                              {(--reflog)}
                              {($ Id.VSub_DollarName '$args')}
                              {(DQ ($ Id.VSub_DollarName '$PACKTMP'))}
                            ]
                            redirects: [
                              (redir.Redir
                                op: (Token id:Id.Redir_Less val:'<' span_id:588)
                                fd: -1
                                arg_word: {(/dev/null)}
                              )
                            ]
                          )
                        ]
                      )
                  )
                }
              spids: [570]
            )
          ]
        )
        (command.ControlFlow
          token: (Token id:Id.ControlFlow_Exit val:exit span_id:599)
          arg_word: {(1)}
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_DollarName '$names'))} 
                  {(Id.Lit_RBracket ']')}
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:614)
            )
          ]
          action: [(C {(say)} {(Nothing)} {(new)} {(to)} {(pack.)})]
          spids: [603 616]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:rollback)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [645]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [647]
        )
      ]
    )
    (command.ForEach
      iter_name: name
      iter_words: [{($ Id.VSub_DollarName '$names')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ForEach
              iter_name: sfx
              iter_words: [{(pack)} {(idx)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:file)
                          op: assign_op.Equal
                          rhs: 
                            {(pack-) ($ Id.VSub_DollarName '$name') (.) ($ Id.VSub_DollarName '$sfx')}
                          spids: [674]
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(test)} {(-f)} 
                          {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/) ($ Id.VSub_DollarName '$file'))}
                        )
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:693)
                        )
                      ]
                    )
                    (command.AndOr
                      ops: [Id.Op_DAmp Id.Op_DPipe]
                      children: [
                        (C {(rm)} {(-f)} 
                          {
                            (DQ ($ Id.VSub_DollarName '$PACKDIR') (/old-) 
                              ($ Id.VSub_DollarName '$file')
                            )
                          }
                        )
                        (C {(mv)} 
                          {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/) ($ Id.VSub_DollarName '$file'))} {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/old-) ($ Id.VSub_DollarName '$file'))}
                        )
                        (command.BraceGroup
                          children: [
                            (command.ShAssignment
                              pairs: [
                                (assign_pair
                                  lhs: (sh_lhs_expr.Name name:failed)
                                  op: assign_op.Equal
                                  rhs: {(t)}
                                  spids: [728]
                                )
                              ]
                            )
                            (command.ControlFlow
                              token: (Token id:Id.ControlFlow_Break val:break span_id:732)
                            )
                          ]
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:rollback)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (DQ ($ Id.VSub_DollarName '$rollback') (' ') 
                                ($ Id.VSub_DollarName '$file')
                              )
                            }
                          spids: [738]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {(test)} {(-z)} {(DQ ($ Id.VSub_DollarName '$failed'))})
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Break val:break span_id:759)
                )
              ]
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$failed'))})]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:rollback_failure)
                  op: assign_op.Equal
                  rhs: (word.Empty)
                  spids: [783]
                )
              ]
            )
            (command.ForEach
              iter_name: file
              iter_words: [{($ Id.VSub_DollarName '$rollback')}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DPipe]
                      children: [
                        (C {(mv)} 
                          {
                            (DQ ($ Id.VSub_DollarName '$PACKDIR') (/old-) 
                              ($ Id.VSub_DollarName '$file')
                            )
                          } {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/) ($ Id.VSub_DollarName '$file'))}
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:rollback_failure)
                              op: assign_op.Equal
                              rhs: 
                                {
                                  (DQ ($ Id.VSub_DollarName '$rollback_failure') (' ') 
                                    ($ Id.VSub_DollarName '$file')
                                  )
                                }
                              spids: [815]
                            )
                          ]
                        )
                      ]
                    )
                  ]
                )
            )
            (command.If
              arms: [
                (if_arm
                  cond: [(C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$rollback_failure'))})]
                  action: [
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: Some packs in use have been renamed by'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:842)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: prefixing old- to their name, in order to'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:852)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: replace them with the new version of the'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:862)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: file.  But the operation failed, and'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:872)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: attempt to rename them back to their'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:882)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(echo)} {(DQ ('WARNING: original names also failed.'))}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:892)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.Simple
                      words: [
                        {(echo)}
                        {
                          (DQ ('WARNING: Please rename them in ') ($ Id.VSub_DollarName '$PACKDIR') 
                            (' manually:')
                          )
                        }
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:902)
                          fd: -1
                          arg_word: {(2)}
                        )
                      ]
                    )
                    (command.ForEach
                      iter_name: file
                      iter_words: [{($ Id.VSub_DollarName '$rollback_failure')}]
                      do_arg_iter: F
                      body: 
                        (command.DoGroup
                          children: [
                            (command.Simple
                              words: [
                                {(echo)}
                                {
                                  (DQ ('WARNING:   old-') ($ Id.VSub_DollarName '$file') (' -> ') 
                                    ($ Id.VSub_DollarName '$file')
                                  )
                                }
                              ]
                              redirects: [
                                (redir.Redir
                                  op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:926)
                                  fd: -1
                                  arg_word: {(2)}
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [826 837]
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:943)
              arg_word: {(1)}
            )
          ]
          spids: [770 780]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:fullbases)
          op: assign_op.Equal
          rhs: (word.Empty)
          spids: [953]
        )
      ]
    )
    (command.ForEach
      iter_name: name
      iter_words: [{($ Id.VSub_DollarName '$names')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:fullbases)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (DQ ($ Id.VSub_DollarName '$fullbases') (' pack-') ($ Id.VSub_DollarName '$name'))
                    }
                  spids: [966]
                )
              ]
            )
            (C {(chmod)} {(a-w)} 
              {(DQ ($ Id.VSub_DollarName '$PACKTMP') (-) ($ Id.VSub_DollarName '$name') (.pack))}
            )
            (C {(chmod)} {(a-w)} 
              {(DQ ($ Id.VSub_DollarName '$PACKTMP') (-) ($ Id.VSub_DollarName '$name') (.idx))}
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DPipe]
              children: [
                (C {(mv)} {(-f)} 
                  {(DQ ($ Id.VSub_DollarName '$PACKTMP') (-) ($ Id.VSub_DollarName '$name') (.pack))} {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/pack-) ($ Id.VSub_DollarName '$name') (.pack))}
                )
                (C {(mv)} {(-f)} 
                  {(DQ ($ Id.VSub_DollarName '$PACKTMP') (-) ($ Id.VSub_DollarName '$name') (.idx))} {(DQ ($ Id.VSub_DollarName '$PACKDIR') (/pack-) ($ Id.VSub_DollarName '$name') (.idx))}
                )
                (command.ControlFlow
                  token: (Token id:Id.ControlFlow_Exit val:exit span_id:1040)
                )
              ]
            )
          ]
        )
    )
    (command.ForEach
      iter_name: name
      iter_words: [{($ Id.VSub_DollarName '$names')}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(rm)} {(-f)} 
              {
                (DQ ($ Id.VSub_DollarName '$PACKDIR') (/old-pack-) ($ Id.VSub_DollarName '$name') (.idx))
              }
            )
            (C {(rm)} {(-f)} 
              {
                (DQ ($ Id.VSub_DollarName '$PACKDIR') (/old-pack-) ($ Id.VSub_DollarName '$name') 
                  (.pack)
                )
              }
            )
          ]
        )
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(test)} {(DQ ($ Id.VSub_DollarName '$remove_redundant'))} {(Id.Lit_Equals '=')} {(t)})
          ]
          action: [
            (command.If
              arms: [
                (if_arm
                  cond: [
                    (C {(Id.Lit_LBracket '[')} {(-n)} {(DQ ($ Id.VSub_DollarName '$existing'))} 
                      {(Id.Lit_RBracket ']')}
                    )
                  ]
                  action: [
                    (command.Subshell
                      command_list: 
                        (command.CommandList
                          children: [
                            (command.AndOr
                              ops: [Id.Op_DAmp]
                              children: [
                                (C {(cd)} {(DQ ($ Id.VSub_DollarName '$PACKDIR'))})
                                (command.ForEach
                                  iter_name: e
                                  iter_words: [{($ Id.VSub_DollarName '$existing')}]
                                  do_arg_iter: F
                                  body: 
                                    (command.DoGroup
                                      children: [
                                        (command.Case
                                          to_match: 
                                            {(DQ (' ') ($ Id.VSub_DollarName '$fullbases') (' '))}
                                          arms: [
                                            (case_arm
                                              pat_list: [
                                                {(Id.Lit_Star '*') 
                                                  (DQ (' ') ($ Id.VSub_DollarName '$e') (' ')) (Id.Lit_Star '*')
                                                }
                                              ]
                                              spids: [1158 1165 1167 -1]
                                            )
                                            (case_arm
                                              pat_list: [{(Id.Lit_Star '*')}]
                                              action: [
                                                (C {(rm)} {(-f)} 
                                                  {(DQ ($ Id.VSub_DollarName '$e') (.pack))} {(DQ ($ Id.VSub_DollarName '$e') (.idx))} {(DQ ($ Id.VSub_DollarName '$e') (.keep))}
                                                )
                                              ]
                                              spids: [1170 1171 1192 -1]
                                            )
                                          ]
                                        )
                                      ]
                                    )
                                )
                              ]
                            )
                          ]
                        )
                    )
                  ]
                  spids: [1108 1121]
                )
              ]
            )
            (C {(git)} {(prune-packed)} 
              {
                (braced_var_sub
                  token: (Token id:Id.VSub_Name val:GIT_QUIET span_id:1212)
                  suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonPlus arg_word:{(-q)})
                )
              }
            )
          ]
          spids: [1089 1101]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$no_update_info'))}
      arms: [
        (case_arm
          pat_list: [{(t)}]
          action: [(C {(Id.Lit_Other ':')})]
          spids: [1228 1229 1233 -1]
        )
        (case_arm
          pat_list: [{(Id.Lit_Star '*')}]
          action: [(C {(git)} {(update-server-info)})]
          spids: [1235 1236 1242 -1]
        )
      ]
    )
  ]
)