(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:'git pack-object --include-tag' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:TRASH)
          op: assign_op.Equal
          rhs: 
            {
              (command_sub
                left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:15)
                command_list: (command.CommandList children:[(C {(pwd)})])
              )
            }
          spids: [14]
        )
      ]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\techo c >d &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tgit update-index --add d &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\ttree=$(git write-tree) &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tcommit=$(git commit-tree $tree </dev/null) &&\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\techo "object $commit" >sig &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\techo "type commit" >>sig &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\techo "tag mytag" >>sig &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\techo "tagger $(git var GIT_COMMITTER_IDENT)" >>sig &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\techo >>sig &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\techo "our test tag" >>sig &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\ttag=$(git mktag <sig) &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\trm d sig &&\n' span_id:37) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-ref refs/tags/mytag $tag && {\n'
            span_id: 38
          ) (Token id:Id.Lit_Chars val:'\t\techo $tree &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\t\techo $commit &&\n' span_id:40) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit ls-tree $tree | sed -e "s/.* \\\\([0-9a-f]*\\\\)\t.*/\\\\1/"\n'
            span_id: 41
          ) (Token id:Id.Lit_Chars val:'\t} >obj-list\n' span_id:42)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'pack without --include-tag' span_id:49))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\tpackname=$(git pack-objects \\\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\t--window=0 \\\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\t\ttest-no-include <obj-list)\n' span_id:56)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unpack objects' span_id:63))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\trm -rf clone.git &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\tgit init clone.git &&\n' span_id:69) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git unpack-objects <test-no-include-${packname}.pack\n'
            span_id: 70
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check unpacked result (have commit, no tag)' span_id:77))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:81) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-list --objects $commit >list.expect &&\n'
            span_id: 82
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git -C clone.git cat-file -e $tag &&\n' span_id:83) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git rev-list --objects $commit >list.actual &&\n'
            span_id: 84
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp list.expect list.actual\n' span_id:85)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack with --include-tag' span_id:92))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\tpackname=$(git pack-objects \\\n' span_id:97) (Token id:Id.Lit_Chars val:'\t\t--window=0 \\\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\t\t--include-tag \\\n' span_id:99) (Token id:Id.Lit_Chars val:'\t\ttest-include <obj-list)\n' span_id:100)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unpack objects' span_id:107))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\trm -rf clone.git &&\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit init clone.git &&\n' span_id:113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git unpack-objects <test-include-${packname}.pack\n'
            span_id: 114
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check unpacked result (have commit, have tag)' span_id:121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit rev-list --objects mytag >list.expect &&\n'
            span_id: 126
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git rev-list --objects $tag >list.actual &&\n'
            span_id: 127
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp list.expect list.actual\n' span_id:128)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'create hidden inner tag' span_id:141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\ttest_commit commit &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tgit tag -m inner inner HEAD &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\tgit tag -m outer outer inner &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tgit tag -d inner\n' span_id:149)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack explicit outer tag' span_id:156))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'\tpackname=$(\n' span_id:161) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:162) 
          (Token id:Id.Lit_Chars val:'\t\t\techo HEAD &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\t\t\techo outer\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\t\t} |\n' span_id:165) (Token id:Id.Lit_Chars val:'\t\tgit pack-objects --revs test-hidden-explicit\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:167)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unpack objects' span_id:174))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) 
          (Token id:Id.Lit_Chars val:'\trm -rf clone.git &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\tgit init clone.git &&\n' span_id:180) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git unpack-objects <test-hidden-explicit-${packname}.pack\n'
            span_id: 181
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check unpacked result (have all objects)' span_id:188))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:192) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git rev-list --objects $(git rev-parse outer HEAD)\n'
            span_id: 193
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'pack implied outer tag' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\tpackname=$(\n' span_id:205) (Token id:Id.Lit_Chars val:'\t\techo HEAD |\n' span_id:206) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit pack-objects --revs --include-tag test-hidden-implied\n'
            span_id: 207
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:208)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'unpack objects' span_id:215))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:219) 
          (Token id:Id.Lit_Chars val:'\trm -rf clone.git &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\tgit init clone.git &&\n' span_id:221) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git unpack-objects <test-hidden-implied-${packname}.pack\n'
            span_id: 222
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'check unpacked result (have all objects)' span_id:229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -C clone.git rev-list --objects $(git rev-parse outer HEAD)\n'
            span_id: 234
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'single-branch clone can transfer tag' span_id:241))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) 
          (Token id:Id.Lit_Chars val:'\trm -rf clone.git &&\n' span_id:246) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit clone --no-local --single-branch -b master . clone.git &&\n'
            span_id: 247
          ) (Token id:Id.Lit_Chars val:'\tgit -C clone.git fsck\n' span_id:248)
        )
      }
    )
    (C {(test_done)})
  ]
)