(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:'test untracked cache' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: sync_mtime
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(find)} {(.)} {(-type)} {(d)} {(-ls)}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:61)
                  fd: -1
                  arg_word: {(/dev/null)}
                )
              ]
            )
          ]
        )
    )
    (command.ShFunction name:avoid_racy body:(command.BraceGroup children:[(C {(sleep)} {(1)})]))
    (C {(test_lazy_prereq)} {(UNTRACKED_CACHE)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\t{ git update-index --test-untracked-cache; ret=$?; } &&\n'
            span_id: 87
          ) (Token id:Id.Lit_Chars val:'\ttest $ret -ne 1\n' span_id:88)
        )
      }
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.Pipeline
                  children: [(C {(test_have_prereq)} {(UNTRACKED_CACHE)})]
                  negated: T
                )
              terminator: (Token id:Id.Op_Semi val:';' span_id:99)
            )
          ]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:skip_all)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (SQ 
                        (Token
                          id: Id.Lit_Chars
                          val: 'This system does not support untracked cache'
                          span_id: 106
                        )
                      )
                    }
                  spids: [104]
                )
              ]
            )
            (C {(test_done)})
          ]
          spids: [92 101]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'core.untrackedCache is unset' span_id:118))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git config --get core.untrackedCache\n'
            span_id: 123
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:130))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tgit init worktree &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tcd worktree &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\tmkdir done dtwo dthree &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttouch one two three done/one dtwo/two dthree/three &&\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\tgit add one two done/one &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\t: >.git/info/exclude &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache\n' span_id:141)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'untracked cache is empty' span_id:148))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:152) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 153
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect-empty <<EOF &&\n' span_id:154) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 0000000000000000000000000000000000000000\n'
            span_id: 155
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 156
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:157) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:158) (Token id:Id.Lit_Chars val:'EOF\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:160)
        )
      }
    )
    (command.AndOr
      ops: [Id.Op_DAmp Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{(cat)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:166)
              fd: -1
              arg_word: {(../status.expect)}
            )
            (redir.HereDoc
              op: (Token id:Id.Redir_DLess val:'<<' span_id:169)
              fd: -1
              here_begin: {(EOF)}
              here_end_span_id: 181
              stdin_parts: [
                ('A  done/one\n')
                ('A  one\n')
                ('A  two\n')
                ('?? dthree/\n')
                ('?? dtwo/\n')
                ('?? three\n')
              ]
            )
          ]
        )
        (command.Simple
          words: [{(cat)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:185)
              fd: -1
              arg_word: {(../dump.expect)}
            )
            (redir.HereDoc
              op: (Token id:Id.Redir_DLess val:'<<' span_id:188)
              fd: -1
              here_begin: {(EOF)}
              here_end_span_id: 209
              stdin_parts: [
                ('info/exclude ')
                ($ Id.VSub_DollarName '$EMPTY_BLOB')
                ('\n')
                ('core.excludesfile 0000000000000000000000000000000000000000\n')
                ('exclude_per_dir .gitignore\n')
                ('flags 00000006\n')
                ('/ 0000000000000000000000000000000000000000 recurse valid\n')
                ('dthree/\n')
                ('dtwo/\n')
                ('three\n')
                ('/done/ 0000000000000000000000000000000000000000 recurse valid\n')
                ('/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n')
                ('three\n')
                ('/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n')
                ('two\n')
              ]
            )
          ]
        )
        (C {(test_expect_success)} 
          {(SQ (Token id:Id.Lit_Chars val:'status first time (empty cache)' span_id:214))} 
          {
            (SQ (Token id:Id.Lit_Chars val:'\n' span_id:218) 
              (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:220) 
              (Token
                id: Id.Lit_Chars
                val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
                span_id: 221
              ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../actual &&\n' span_id:222) 
              (Token
                id: Id.Lit_Chars
                val: '\ttest_cmp ../status.expect ../actual &&\n'
                span_id: 223
              ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:224) 
              (Token id:Id.Lit_Chars val:'node creation: 3\n' span_id:225) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:226) 
              (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:227) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:228) (Token id:Id.Lit_Chars val:'EOF\n' span_id:229) 
              (Token
                id: Id.Lit_Chars
                val: '\ttest_cmp ../trace.expect ../trace\n'
                span_id: 230
              )
            )
          }
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'untracked cache after first status' span_id:237))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 242
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../dump.expect ../actual\n' span_id:243)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'status second time (fully populated cache)' span_id:250))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:256) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
            span_id: 257
          ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../actual &&\n' span_id:258) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 259
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:260) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:261) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:263) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:264) (Token id:Id.Lit_Chars val:'EOF\n' span_id:265) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:266)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'untracked cache after second status' span_id:273))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:277) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 278
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../dump.expect ../actual\n' span_id:279)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'modify in root directory, one dir invalidation' span_id:286))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\t: >four &&\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:294) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 295
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:296) 
          (Token id:Id.Lit_Chars val:'A  done/one\n' span_id:297) (Token id:Id.Lit_Chars val:'A  one\n' span_id:298) (Token id:Id.Lit_Chars val:'A  two\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'?? dthree/\n' span_id:300) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:301) 
          (Token id:Id.Lit_Chars val:'?? four\n' span_id:302) (Token id:Id.Lit_Chars val:'?? three\n' span_id:303) (Token id:Id.Lit_Chars val:'EOF\n' span_id:304) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 305
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:306) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:307) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:308) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:309) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:310) (Token id:Id.Lit_Chars val:'EOF\n' span_id:311) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:312) (Token id:Id.Lit_Chars val:'\n' span_id:313)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:320))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:324) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 325
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:326) 
          (Token id:Id.Lit_Chars val:'info/exclude $EMPTY_BLOB\n' span_id:327) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 328
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:329) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:330) (Token id:Id.Lit_Chars val:'/ 0000000000000000000000000000000000000000 recurse valid\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'dthree/\n' span_id:332) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:333) (Token id:Id.Lit_Chars val:'four\n' span_id:334) 
          (Token id:Id.Lit_Chars val:'three\n' span_id:335) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 336
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 337
          ) (Token id:Id.Lit_Chars val:'three\n' span_id:338) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 339
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:340) (Token id:Id.Lit_Chars val:'EOF\n' span_id:341) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:342)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'new .gitignore invalidates recursively' span_id:349))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:353) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:354) (Token id:Id.Lit_Chars val:'\techo four >.gitignore &&\n' span_id:355) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:357) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 358
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:359) 
          (Token id:Id.Lit_Chars val:'A  done/one\n' span_id:360) (Token id:Id.Lit_Chars val:'A  one\n' span_id:361) (Token id:Id.Lit_Chars val:'A  two\n' span_id:362) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:363) (Token id:Id.Lit_Chars val:'?? dthree/\n' span_id:364) 
          (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:365) (Token id:Id.Lit_Chars val:'?? three\n' span_id:366) (Token id:Id.Lit_Chars val:'EOF\n' span_id:367) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 368
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:369) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:370) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:371) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:372) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:373) (Token id:Id.Lit_Chars val:'EOF\n' span_id:374) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:375) (Token id:Id.Lit_Chars val:'\n' span_id:376)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:383))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:387) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 388
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:389) 
          (Token id:Id.Lit_Chars val:'info/exclude $EMPTY_BLOB\n' span_id:390) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 391
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:392) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:393) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:394) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:395) (Token id:Id.Lit_Chars val:'dthree/\n' span_id:396) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:397) 
          (Token id:Id.Lit_Chars val:'three\n' span_id:398) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 399
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 400
          ) (Token id:Id.Lit_Chars val:'three\n' span_id:401) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 402
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:403) (Token id:Id.Lit_Chars val:'EOF\n' span_id:404) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:405)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'new info/exclude invalidates everything' span_id:412))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:416) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:417) (Token id:Id.Lit_Chars val:'\techo three >>.git/info/exclude &&\n' span_id:418) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:419) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:420) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 421
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:422) 
          (Token id:Id.Lit_Chars val:'A  done/one\n' span_id:423) (Token id:Id.Lit_Chars val:'A  one\n' span_id:424) (Token id:Id.Lit_Chars val:'A  two\n' span_id:425) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:426) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:427) (Token id:Id.Lit_Chars val:'EOF\n' span_id:428) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 429
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:430) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:431) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:432) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:433) (Token id:Id.Lit_Chars val:'opendir: 4\n' span_id:434) (Token id:Id.Lit_Chars val:'EOF\n' span_id:435) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:436)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:443))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:447) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 448
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:449) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 450
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 451
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:452) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:453) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:454) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:455) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:456) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 457
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 458
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 459
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:460) (Token id:Id.Lit_Chars val:'EOF\n' span_id:461) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:462)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'move two from tracked to untracked' span_id:469))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:473) 
          (Token id:Id.Lit_Chars val:'\tgit rm --cached two &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:475) 
          (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:476) (Token id:Id.Lit_Chars val:'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id:477) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 478
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:479) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:480) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse\n' span_id:481) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 482
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 483
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 484
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:485) (Token id:Id.Lit_Chars val:'EOF\n' span_id:486) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:487)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after the move' span_id:494))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:498) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:499) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:500) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 501
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:502) 
          (Token id:Id.Lit_Chars val:'A  done/one\n' span_id:503) (Token id:Id.Lit_Chars val:'A  one\n' span_id:504) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:505) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:506) 
          (Token id:Id.Lit_Chars val:'?? two\n' span_id:507) (Token id:Id.Lit_Chars val:'EOF\n' span_id:508) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 509
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:510) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:511) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:512) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:513) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:514) (Token id:Id.Lit_Chars val:'EOF\n' span_id:515) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:516)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:523))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 528
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:529) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 530
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 531
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:532) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:533) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:534) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:535) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:536) (Token id:Id.Lit_Chars val:'two\n' span_id:537) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 538
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 539
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 540
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:541) (Token id:Id.Lit_Chars val:'EOF\n' span_id:542) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:543)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'move two from untracked to tracked' span_id:550))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:554) 
          (Token id:Id.Lit_Chars val:'\tgit add two &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:556) 
          (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:557) (Token id:Id.Lit_Chars val:'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n' span_id:558) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 559
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:560) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:561) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse\n' span_id:562) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 563
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 564
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 565
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:566) (Token id:Id.Lit_Chars val:'EOF\n' span_id:567) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:568)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after the move' span_id:575))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:579) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:580) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:581) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 582
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:583) 
          (Token id:Id.Lit_Chars val:'A  done/one\n' span_id:584) (Token id:Id.Lit_Chars val:'A  one\n' span_id:585) (Token id:Id.Lit_Chars val:'A  two\n' span_id:586) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:587) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:588) (Token id:Id.Lit_Chars val:'EOF\n' span_id:589) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 590
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:591) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:592) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:593) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:594) (Token id:Id.Lit_Chars val:'opendir: 1\n' span_id:595) (Token id:Id.Lit_Chars val:'EOF\n' span_id:596) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:597)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump' span_id:604))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:608) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 609
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:610) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 611
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 612
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:613) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:614) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:615) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:616) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:617) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 618
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 619
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 620
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:621) (Token id:Id.Lit_Chars val:'EOF\n' span_id:622) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:623)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'set up for sparse checkout testing' span_id:630))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:634) 
          (Token id:Id.Lit_Chars val:'\techo two >done/.gitignore &&\n' span_id:635) (Token id:Id.Lit_Chars val:'\techo three >>done/.gitignore &&\n' span_id:636) 
          (Token id:Id.Lit_Chars val:'\techo two >done/two &&\n' span_id:637) (Token id:Id.Lit_Chars val:'\tgit add -f done/two done/.gitignore &&\n' span_id:638) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "first commit"\n' span_id:639)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status after commit' span_id:646))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:650) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:651) (Token id:Id.Lit_Chars val:'\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n' span_id:652) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >../actual &&\n'
            span_id: 653
          ) (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:654) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:655) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:656) (Token id:Id.Lit_Chars val:'EOF\n' span_id:657) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../actual &&\n'
            span_id: 658
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:660) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:662) (Token id:Id.Lit_Chars val:'opendir: 2\n' span_id:663) (Token id:Id.Lit_Chars val:'EOF\n' span_id:664) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:665)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'untracked cache correct after commit' span_id:672))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:676) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 677
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:678) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 679
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 680
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:681) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:682) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:683) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:684) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:685) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 0000000000000000000000000000000000000000 recurse valid\n'
            span_id: 686
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 687
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 688
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:689) (Token id:Id.Lit_Chars val:'EOF\n' span_id:690) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:691)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'set up sparse checkout' span_id:698))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:702) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "done/[a-z]*" >.git/info/sparse-checkout &&\n'
            span_id: 703
          ) (Token id:Id.Lit_Chars val:'\ttest_config core.sparsecheckout true &&\n' span_id:704) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:705) (Token id:Id.Lit_Chars val:'\tgit update-index --force-untracked-cache &&\n' span_id:706) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain >/dev/null && # prime the cache\n'
            span_id: 707
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing done/.gitignore &&\n' span_id:708) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file done/one\n' span_id:709)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'create/modify files, some of which are gitignored'
            span_id: 716
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:720) 
          (Token id:Id.Lit_Chars val:'\techo two bis >done/two &&\n' span_id:721) (Token id:Id.Lit_Chars val:'\techo three >done/three && # three is gitignored\n' span_id:722) 
          (Token
            id: Id.Lit_Chars
            val: '\techo four >done/four && # four is gitignored at a higher level\n'
            span_id: 723
          ) (Token id:Id.Lit_Chars val:'\techo five >done/five && # five is not gitignored\n' span_id:724) 
          (Token
            id: Id.Lit_Chars
            val: '\techo test >base && #we need to ensure that the root dir is touched\n'
            span_id: 725
          ) (Token id:Id.Lit_Chars val:'\trm base &&\n' span_id:726) 
          (Token id:Id.Lit_Chars val:'\tsync_mtime\n' span_id:727)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test sparse status with untracked cache' span_id:734))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:738) 
          (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:739) (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:740) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
            span_id: 741
          ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:742) 
          (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:743) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:744) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:745) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:746) 
          (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:747) (Token id:Id.Lit_Chars val:'EOF\n' span_id:748) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../status.actual &&\n'
            span_id: 749
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:750) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:751) (Token id:Id.Lit_Chars val:'gitignore invalidation: 1\n' span_id:752) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 2\n' span_id:753) (Token id:Id.Lit_Chars val:'opendir: 2\n' span_id:754) (Token id:Id.Lit_Chars val:'EOF\n' span_id:755) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:756)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'untracked cache correct after status' span_id:763))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:767) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 768
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect <<EOF &&\n' span_id:769) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 770
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 771
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:772) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:773) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:774) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:775) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:776) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 1946f0437f90c5005533cbe1736a6451ca301714 recurse valid\n'
            span_id: 777
          ) (Token id:Id.Lit_Chars val:'five\n' span_id:778) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 779
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 780
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:781) (Token id:Id.Lit_Chars val:'EOF\n' span_id:782) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect ../actual\n' span_id:783)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test sparse status again with untracked cache' span_id:790))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:794) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:795) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:796) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
            span_id: 797
          ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:798) 
          (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:799) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:800) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:801) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:802) 
          (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:803) (Token id:Id.Lit_Chars val:'EOF\n' span_id:804) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../status.actual &&\n'
            span_id: 805
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:806) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:807) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:808) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:809) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:810) (Token id:Id.Lit_Chars val:'EOF\n' span_id:811) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:812)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'set up for test of subdir and sparse checkouts' span_id:819))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:823) 
          (Token id:Id.Lit_Chars val:'\tmkdir done/sub &&\n' span_id:824) (Token id:Id.Lit_Chars val:'\tmkdir done/sub/sub &&\n' span_id:825) 
          (Token id:Id.Lit_Chars val:'\techo "sub" > done/sub/sub/file\n' span_id:826)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test sparse status with untracked cache and subdir'
            span_id: 833
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:837) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:838) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:839) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
            span_id: 840
          ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:841) 
          (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:842) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:843) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:844) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:845) 
          (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:846) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:847) (Token id:Id.Lit_Chars val:'EOF\n' span_id:848) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../status.actual &&\n'
            span_id: 849
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:850) 
          (Token id:Id.Lit_Chars val:'node creation: 2\n' span_id:851) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:852) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 1\n' span_id:853) (Token id:Id.Lit_Chars val:'opendir: 3\n' span_id:854) (Token id:Id.Lit_Chars val:'EOF\n' span_id:855) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:856)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'verify untracked cache dump (sparse/subdirs)' span_id:863))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:867) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 868
          ) (Token id:Id.Lit_Chars val:'\tcat >../expect-from-test-dump <<EOF &&\n' span_id:869) 
          (Token
            id: Id.Lit_Chars
            val: 'info/exclude 13263c0978fb9fad16b2d580fb800b6d811c3ff0\n'
            span_id: 870
          ) 
          (Token
            id: Id.Lit_Chars
            val: 'core.excludesfile 0000000000000000000000000000000000000000\n'
            span_id: 871
          ) (Token id:Id.Lit_Chars val:'exclude_per_dir .gitignore\n' span_id:872) 
          (Token id:Id.Lit_Chars val:'flags 00000006\n' span_id:873) (Token id:Id.Lit_Chars val:'/ e6fcc8f2ee31bae321d66afd183fcb7237afae6e recurse valid\n' span_id:874) 
          (Token id:Id.Lit_Chars val:'.gitignore\n' span_id:875) (Token id:Id.Lit_Chars val:'dtwo/\n' span_id:876) 
          (Token
            id: Id.Lit_Chars
            val: '/done/ 1946f0437f90c5005533cbe1736a6451ca301714 recurse valid\n'
            span_id: 877
          ) (Token id:Id.Lit_Chars val:'five\n' span_id:878) (Token id:Id.Lit_Chars val:'sub/\n' span_id:879) 
          (Token
            id: Id.Lit_Chars
            val: '/done/sub/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 880
          ) (Token id:Id.Lit_Chars val:'sub/\n' span_id:881) 
          (Token
            id: Id.Lit_Chars
            val: 
'/done/sub/sub/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 882
          ) (Token id:Id.Lit_Chars val:'file\n' span_id:883) 
          (Token
            id: Id.Lit_Chars
            val: '/dthree/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 884
          ) 
          (Token
            id: Id.Lit_Chars
            val: '/dtwo/ 0000000000000000000000000000000000000000 recurse check_only valid\n'
            span_id: 885
          ) (Token id:Id.Lit_Chars val:'two\n' span_id:886) (Token id:Id.Lit_Chars val:'EOF\n' span_id:887) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-from-test-dump ../actual\n'
            span_id: 888
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'test sparse status again with untracked cache and subdir'
            span_id: 895
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:899) 
          (Token id:Id.Lit_Chars val:'\tavoid_racy &&\n' span_id:900) (Token id:Id.Lit_Chars val:'\t: >../trace &&\n' span_id:901) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_TRACE_UNTRACKED_STATS="$TRASH_DIRECTORY/trace" \\\n'
            span_id: 902
          ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:903) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../status.actual &&\n'
            span_id: 904
          ) (Token id:Id.Lit_Chars val:'\tcat >../trace.expect <<EOF &&\n' span_id:905) 
          (Token id:Id.Lit_Chars val:'node creation: 0\n' span_id:906) (Token id:Id.Lit_Chars val:'gitignore invalidation: 0\n' span_id:907) 
          (Token id:Id.Lit_Chars val:'directory invalidation: 0\n' span_id:908) (Token id:Id.Lit_Chars val:'opendir: 0\n' span_id:909) (Token id:Id.Lit_Chars val:'EOF\n' span_id:910) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../trace.expect ../trace\n' span_id:911)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'move entry in subdir from untracked to cached' span_id:918))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:922) 
          (Token id:Id.Lit_Chars val:'\tgit add dtwo/two &&\n' span_id:923) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:924) 
          (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:925) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:926) 
          (Token id:Id.Lit_Chars val:'A  dtwo/two\n' span_id:927) (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:928) 
          (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:929) (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:930) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:931) (Token id:Id.Lit_Chars val:'\ttest_cmp ../status.expect ../status.actual\n' span_id:932)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'move entry in subdir from cached to untracked' span_id:939))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:943) 
          (Token id:Id.Lit_Chars val:'\tgit rm --cached dtwo/two &&\n' span_id:944) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >../status.actual &&\n' span_id:945) 
          (Token id:Id.Lit_Chars val:'\tcat >../status.expect <<EOF &&\n' span_id:946) (Token id:Id.Lit_Chars val:' M done/two\n' span_id:947) 
          (Token id:Id.Lit_Chars val:'?? .gitignore\n' span_id:948) (Token id:Id.Lit_Chars val:'?? done/five\n' span_id:949) 
          (Token id:Id.Lit_Chars val:'?? done/sub/\n' span_id:950) (Token id:Id.Lit_Chars val:'?? dtwo/\n' span_id:951) (Token id:Id.Lit_Chars val:'EOF\n' span_id:952) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../status.expect ../status.actual\n'
            span_id: 953
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--no-untracked-cache removes the cache' span_id:960))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:964) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --no-untracked-cache &&\n'
            span_id: 965
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:966) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "no untracked cache" >../expect-no-uc &&\n'
            span_id: 967
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:968)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git status does not change anything' span_id:975))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:979) 
          (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:980) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:981) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:982)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setting core.untrackedCache to true and using git status creates the cache'
            span_id: 989
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:993) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config core.untrackedCache true &&\n'
            span_id: 994
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:995) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-no-uc ../actual &&\n'
            span_id: 996
          ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:997) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 998
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-from-test-dump ../actual\n' span_id:999)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'using --no-untracked-cache does not fail when core.untrackedCache is true'
            span_id: 1006
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1010) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --no-untracked-cache &&\n'
            span_id: 1011
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1012) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-no-uc ../actual &&\n'
            span_id: 1013
          ) (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache &&\n' span_id:1014) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 1015
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:1016)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setting core.untrackedCache to false and using git status removes the cache'
            span_id: 1023
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1027) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config core.untrackedCache false &&\n'
            span_id: 1028
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1029) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-empty ../actual &&\n'
            span_id: 1030
          ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1031) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 1032
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual\n' span_id:1033)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'using --untracked-cache does not fail when core.untrackedCache is false'
            span_id: 1040
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1044) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --untracked-cache &&\n'
            span_id: 1045
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1046) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual\n' span_id:1047)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setting core.untrackedCache to keep' span_id:1054))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1058) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config core.untrackedCache keep &&\n'
            span_id: 1059
          ) (Token id:Id.Lit_Chars val:'\tgit update-index --untracked-cache &&\n' span_id:1060) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 1061
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-empty ../actual &&\n' span_id:1062) 
          (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1063) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1064) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-from-test-dump ../actual &&\n'
            span_id: 1065
          ) (Token id:Id.Lit_Chars val:'\tgit update-index --no-untracked-cache &&\n' span_id:1066) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 1067
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-no-uc ../actual &&\n' span_id:1068) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --force-untracked-cache &&\n'
            span_id: 1069
          ) (Token id:Id.Lit_Chars val:'\ttest-dump-untracked-cache >../actual &&\n' span_id:1070) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp ../expect-empty ../actual &&\n'
            span_id: 1071
          ) (Token id:Id.Lit_Chars val:'\tgit status &&\n' span_id:1072) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest-dump-untracked-cache >../actual &&\n'
            span_id: 1073
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp ../expect-from-test-dump ../actual\n' span_id:1074)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'test ident field is working' span_id:1081))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1085) 
          (Token id:Id.Lit_Chars val:'\tmkdir ../other_worktree &&\n' span_id:1086) (Token id:Id.Lit_Chars val:'\tcp -R done dthree dtwo four three ../other_worktree &&\n' span_id:1087) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_WORK_TREE=../other_worktree git status 2>../err &&\n'
            span_id: 1088
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\techo "warning: Untracked cache is disabled on this system or location." >../expect &&\n'
            span_id: 1089
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp ../expect ../err\n' span_id:1090)
        )
      }
    )
    (C {(test_done)})
  ]
)