(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:'Intent to add' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'intent to add' span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\ttest_commit 1 &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit rm 1.t &&\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\techo hello >1.t &&\n' span_id:25) (Token id:Id.Lit_Chars val:'\techo hello >file &&\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\techo hello >elif &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\tgit add -N file &&\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\tgit add elif &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\tgit add -N 1.t\n' span_id:30)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git status' span_id:37))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit status --porcelain | grep -v actual >actual &&\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\tDA 1.t\n' span_id:44) (Token id:Id.Lit_Chars val:'\tA  elif\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\t A file\n' span_id:46) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:48)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check result of "add -N"' span_id:55))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s file >actual &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tempty=$(git hash-object --stdin </dev/null) &&\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "100644 $empty 0\tfile" >expect &&\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:63)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'intent to add is just an ordinary empty blob' span_id:70))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit ls-files -s file >actual &&\n' span_id:76) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit ls-files -s elif | sed -e "s/elif/file/" >expect &&\n'
            span_id: 77
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:78)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'intent to add does not clobber existing paths' span_id:85))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\tgit add -N file elif &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\tempty=$(git hash-object --stdin </dev/null) &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\t! grep "$empty" actual\n' span_id:93)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'i-t-a entry is simply ignored' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit commit -a -m initial &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\techo xyzzy >rezrov &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\techo frotz >nitfol &&\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\tgit add rezrov &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\tgit add -N nitfol &&\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m second &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\ttest $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&\n' span_id:114) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git diff --name-only HEAD -- nitfol | wc -l) = 1 &&\n'
            span_id: 115
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest $(git diff --name-only --ita-invisible-in-index HEAD -- nitfol | wc -l) = 0 &&\n'
            span_id: 116
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git diff --name-only --ita-invisible-in-index -- nitfol | wc -l) = 1\n'
            span_id: 117
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'can commit with an unrelated i-t-a entry in index'
            span_id: 124
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:129) (Token id:Id.Lit_Chars val:'\techo bozbar >rezrov &&\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\techo frotz >nitfol &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgit add rezrov &&\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\tgit add -N nitfol &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit commit -m partial rezrov\n' span_id:134)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'can "commit -a" with an i-t-a entry' span_id:141))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\t: >nitfol &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\tgit add -N nitfol &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\tgit commit -a -m all\n' span_id:149)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cache-tree invalidates i-t-a paths' span_id:156))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:162) 
          (Token id:Id.Lit_Chars val:'\t: >dir/foo &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\tgit add dir/foo &&\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m foo &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\t: >dir/bar &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tgit add -N dir/bar &&\n' span_id:168) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --cached --name-only >actual &&\n'
            span_id: 169
          ) (Token id:Id.Lit_Chars val:'\techo dir/bar >expect &&\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\tgit write-tree >/dev/null &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\n' span_id:174) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --cached --name-only >actual &&\n'
            span_id: 175
          ) (Token id:Id.Lit_Chars val:'\techo dir/bar >expect &&\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:177)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'cache-tree does not ignore dir that has i-t-a entries'
            span_id: 184
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\tgit init ita-in-dir &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t(\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\t\tcd ita-in-dir &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\t\tmkdir 2 &&\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\t\tfor f in 1 2/1 2/2 3\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:194) 
          (Token id:Id.Lit_Chars val:'\t\t\techo "$f" >"$f"\n' span_id:195) (Token id:Id.Lit_Chars val:'\t\tdone &&\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'\t\tgit add 1 2/2 3 &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\tgit add -N 2/1 &&\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'\t\tgit commit -m committed &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\t\tgit ls-tree -r HEAD >actual &&\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'\t\tgrep 2/2 actual\n' span_id:201) (Token id:Id.Lit_Chars val:'\t)\n' span_id:202)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'cache-tree does skip dir that becomes empty' span_id:209))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) 
          (Token id:Id.Lit_Chars val:'\trm -fr ita-in-dir &&\n' span_id:214) (Token id:Id.Lit_Chars val:'\tgit init ita-in-dir &&\n' span_id:215) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:216) (Token id:Id.Lit_Chars val:'\t\tcd ita-in-dir &&\n' span_id:217) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p 1/2/3 &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\t\techo 4 >1/2/3/4 &&\n' span_id:219) 
          (Token id:Id.Lit_Chars val:'\t\tgit add -N 1/2/3/4 &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\t\tgit write-tree >actual &&\n' span_id:221) 
          (Token id:Id.Lit_Chars val:'\t\techo $EMPTY_TREE >expected &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\t\ttest_cmp expected actual\n' span_id:223) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:224)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'commit: ita entries ignored in empty intial commit check'
            span_id: 231
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\tgit init empty-intial-commit &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\t(\n' span_id:237) 
          (Token id:Id.Lit_Chars val:'\t\tcd empty-intial-commit &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\t\t: >one &&\n' span_id:239) 
          (Token id:Id.Lit_Chars val:'\t\tgit add -N one &&\n' span_id:240) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git commit -m nothing-new-here\n' span_id:241) 
          (Token id:Id.Lit_Chars val:'\t)\n' span_id:242)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'commit: ita entries ignored in empty commit check'
            span_id: 249
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:253) 
          (Token id:Id.Lit_Chars val:'\tgit init empty-subsequent-commit &&\n' span_id:254) (Token id:Id.Lit_Chars val:'\t(\n' span_id:255) 
          (Token id:Id.Lit_Chars val:'\t\tcd empty-subsequent-commit &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t\ttest_commit one &&\n' span_id:257) 
          (Token id:Id.Lit_Chars val:'\t\t: >two &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tgit add -N two &&\n' span_id:259) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git commit -m nothing-new-here\n'
            span_id: 260
          ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:261)
        )
      }
    )
    (C {(test_done)})
  ]
)