(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'performance with large numbers of packs' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./perf-lib.sh)})
    (C {(test_perf_large_repo)})
    (command.ShFunction
      name: repack_into_n
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(rm)} {(-rf)} {(staging)})
                (C {(mkdir)} {(staging)})
                (command.Pipeline
                  children: [
                    (C {(git)} {(rev-list)} {(--first-parent)} {(HEAD)})
                    (C {(sed)} {(-n)} {(SQ (Token id:Id.Lit_Chars val:'1~5p' span_id:91))})
                    (C {(head)} {(-n)} {(DQ ($ Id.VSub_Number '$1'))})
                    (command.Simple
                      words: [
                        {(perl)}
                        {(-e)}
                        {(SQ (Token id:Id.Lit_Chars val:'print reverse <>' span_id:113))}
                      ]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:118)
                          fd: -1
                          arg_word: {(pushes)}
                        )
                      ]
                    )
                  ]
                  negated: F
                )
              ]
            )
            (command.Pipeline
              children: [
                (C {(head)} {(-n)} {(1)} {(pushes)})
                (C {(git)} {(pack-objects)} {(--delta-base-offset)} {(--revs)} {(staging/pack)})
              ]
              negated: F
            )
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp]
              children: [
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name name:last)
                      op: assign_op.Equal
                      rhs: (word.Empty)
                      spids: [154]
                    )
                  ]
                )
                (command.WhileUntil
                  keyword: (Token id:Id.KW_While val:while span_id:159)
                  cond: [(C {(read)} {(rev)})]
                  body: 
                    (command.DoGroup
                      children: [
                        (command.If
                          arms: [
                            (if_arm
                              cond: [
                                (command.Sentence
                                  child: (C {(test)} {(-n)} {(DQ ($ Id.VSub_DollarName '$last'))})
                                  terminator: (Token id:Id.Op_Semi val:';' span_id:178)
                                )
                              ]
                              action: [
                                (command.AndOr
                                  ops: [Id.Op_DPipe]
                                  children: [
                                    (command.Pipeline
                                      children: [
                                        (command.BraceGroup
                                          children: [
                                            (command.AndOr
                                              ops: [Id.Op_DAmp]
                                              children: [
                                                (C {(echo)} {(DQ ($ Id.VSub_DollarName '$rev'))})
                                                (C {(echo)} {(DQ ('^') ($ Id.VSub_DollarName '$last'))})
                                              ]
                                            )
                                          ]
                                        )
                                        (C {(git)} {(pack-objects)} {(--delta-base-offset)} {(--revs)} 
                                          {(staging/pack)}
                                        )
                                      ]
                                      negated: F
                                    )
                                    (command.ControlFlow
                                      token: (Token id:Id.ControlFlow_Return val:return span_id:222)
                                      arg_word: {(1)}
                                    )
                                  ]
                                )
                              ]
                              spids: [169 180]
                            )
                          ]
                        )
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:last)
                              op: assign_op.Equal
                              rhs: {($ Id.VSub_DollarName '$rev')}
                              spids: [230]
                            )
                          ]
                        )
                      ]
                    )
                  redirects: [
                    (redir.Redir
                      op: (Token id:Id.Redir_Less val:'<' span_id:236)
                      fd: -1
                      arg_word: {(pushes)}
                    )
                  ]
                )
                (C {(rm)} {(-f)} {(.git/objects/pack/) (Id.Lit_Star '*')})
                (C {(mv)} {(staging/) (Id.Lit_Star '*')} {(.git/objects/pack/)})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'simplify reachability' span_id:279))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:283) 
          (Token
            id: Id.Lit_Chars
            val: '\ttip=$(git rev-parse --verify HEAD) &&\n'
            span_id: 284
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit for-each-ref --format="option no-deref%0adelete %(refname)" |\n'
            span_id: 285
          ) (Token id:Id.Lit_Chars val:'\tgit update-ref --stdin &&\n' span_id:286) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git/logs &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\tgit update-ref refs/heads/master $tip &&\n' span_id:288) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit symbolic-ref HEAD refs/heads/master &&\n'
            span_id: 289
          ) (Token id:Id.Lit_Chars val:'\tgit repack -ad\n' span_id:290)
        )
      }
    )
    (command.ForEach
      iter_name: nr_packs
      iter_words: [{(1)} {(50)} {(1000)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {(DQ ('create ') ($ Id.VSub_DollarName '$nr_packs') ('-pack scenario'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:318) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\trepack_into_n $nr_packs\n'
                    span_id: 319
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:320)
                )
              }
            )
            (C {(test_perf)} {(DQ ('rev-list (') ($ Id.VSub_DollarName '$nr_packs') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:334) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit rev-list --objects --all >/dev/null\n'
                    span_id: 335
                  ) (Token id:Id.Lit_Chars val:'\t' span_id:336)
                )
              }
            )
            (C {(test_perf)} {(DQ ('repack (') ($ Id.VSub_DollarName '$nr_packs') (')'))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:362) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit pack-objects --keep-true-parents \\\n'
                    span_id: 363
                  ) (Token id:Id.Lit_Chars val:'\t\t  --honor-pack-keep --non-empty --all \\\n' span_id:364) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\t  --reflog --indexed-objects --delta-base-offset \\\n'
                    span_id: 365
                  ) (Token id:Id.Lit_Chars val:'\t\t  --stdout </dev/null >/dev/null\n' span_id:366) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:367)
                )
              }
            )
          ]
        )
    )
    (C {(test_done)})
  ]
)