(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'handling of duplicate objects in incoming packfiles'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/lib-pack.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'LO_SHA1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'LO_SHA1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LO_SHA1='> name:LO_SHA1)
          op: assign_op.Equal
          rhs: {<e68fe8129b546b101aee9510c5328e7f21ca1d18>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'HI_SHA1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'HI_SHA1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'HI_SHA1='> name:HI_SHA1)
          op: assign_op.Equal
          rhs: {<e69de29bb2d1d6434b8b29ae775ad8c2e48c5391>}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MISSING_SHA1='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MISSING_SHA1='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MISSING_SHA1='> name:MISSING_SHA1)
          op: assign_op.Equal
          rhs: {(SQ <e69d000000000000000000000000000000000000>)}
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <create_pack>
      name: create_pack
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <pack_header>
                  more_env: []
                  words: [
                    {<pack_header>}
                    {
                      (DQ 
                        (word_part.ArithSub
                          left: <Id.Left_DollarDParen '$(('>
                          anode: 
                            (arith_expr.Binary
                              op_id: Id.Arith_Star
                              left: {<Id.Lit_Digits 2>}
                              right: {($ Id.VSub_Number 2)}
                            )
                          right: <Id.Right_DollarDParen _>
                        )
                      )
                    }
                  ]
                  redirects: [
                    (Redir
                      op: <Id.Redir_Great '>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 1))}
                    )
                  ]
                  do_fork: T
                )
                (command.ForEach
                  keyword: <Id.KW_For for>
                  iter_names: [i]
                  iterable: 
                    (for_iter.Words
                      words: [
                        {
                          (CommandSub
                            left_token: <Id.Left_DollarParen '$('>
                            child: 
                              (command.Simple
                                blame_tok: <test_seq>
                                more_env: []
                                words: [{<test_seq>} {<1>} {(DQ ($ Id.VSub_Number 2))}]
                                redirects: []
                                do_fork: T
                              )
                            right: <Id.Eof_RParen _>
                          )
                        }
                      ]
                    )
                  semi_tok: <Id.Op_Semi _>
                  body: 
                    (command.DoGroup
                      left: <Id.KW_Do do>
                      children: [
                        (command.AndOr
                          children: [
                            (command.Simple
                              blame_tok: <pack_obj>
                              more_env: []
                              words: [{<pack_obj>} {($ Id.VSub_DollarName LO_SHA1)}]
                              redirects: []
                              do_fork: T
                            )
                            (command.Simple
                              blame_tok: <pack_obj>
                              more_env: []
                              words: [{<pack_obj>} {($ Id.VSub_DollarName HI_SHA1)}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: [<Id.Op_DAmp _>]
                        )
                      ]
                      right: <Id.KW_Done done>
                    )
                  redirects: [
                    (Redir
                      op: <Id.Redir_DGreat '>>'>
                      loc: (redir_loc.Fd fd:1)
                      arg: {(DQ ($ Id.VSub_Number 1))}
                    )
                  ]
                )
                (command.Simple
                  blame_tok: <pack_trailer>
                  more_env: []
                  words: [{<pack_trailer>} {(DQ ($ Id.VSub_Number 1))}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'pack with no duplicates'>)}
        {
          (SQ <'\n'> <'\tcreate_pack no-dups.pack 1 &&\n'> <'\tgit index-pack --stdin <no-dups.pack\n'>)
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'index-pack will allow duplicate objects by default'>)}
        {
          (SQ <'\n'> <'\tclear_packs &&\n'> <'\tcreate_pack dups.pack 100 &&\n'> 
            <'\tgit index-pack --stdin <dups.pack\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'create batch-check test vectors'>)}
        {
          (SQ <'\n'> <'\tcat >input <<-EOF &&\n'> <'\t$LO_SHA1\n'> <'\t$HI_SHA1\n'> <'\t$MISSING_SHA1\n'> 
            <'\tEOF\n'> <'\tcat >expect <<-EOF\n'> <'\t$LO_SHA1 blob 2\n'> <'\t$HI_SHA1 blob 0\n'> <'\t$MISSING_SHA1 missing\n'> 
            <'\tEOF\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'lookup in duplicated pack (binary search)'>)}
        {
          (SQ <'\n'> <'\tgit cat-file --batch-check <input >actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'lookup in duplicated pack (GIT_USE_LOOKUP)'>)}
        {
          (SQ <'\n'> <'\t(\n'> <'\t\tGIT_USE_LOOKUP=1 &&\n'> <'\t\texport GIT_USE_LOOKUP &&\n'> 
            <'\t\tgit cat-file --batch-check <input >actual\n'> <'\t) &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'index-pack can reject packs with duplicates'>)}
        {
          (SQ <'\n'> <'\tclear_packs &&\n'> <'\tcreate_pack dups.pack 2 &&\n'> 
            <'\ttest_must_fail git index-pack --strict --stdin <dups.pack &&\n'> <'\ttest_expect_code 1 git cat-file -e $LO_SHA1\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)