(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:'Two way merge with read-tree -m -u $H $M\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This is identical to t1001, but uses -u to update the work tree as well.\n'
                  span_id: 17
                ) (Token id:Id.Lit_Chars val:'\n' span_id:18)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-read-tree.sh)})
    (command.ShFunction
      name: compare_change
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [
                {(sed)}
                {(-e)}
                {(SQ (Token id:Id.Lit_Chars val:'1{/^diff --git /d;}' span_id:51))}
                {(-e)}
                {(SQ (Token id:Id.Lit_Chars val:'2{/^index /d;}' span_id:59))}
                {(-e)}
                {(SQ (Token id:Id.Lit_Chars val:'/^--- /d; /^+++ /d; /^@@ /d;' span_id:67))}
                {(-e)}
                {
                  (SQ 
                    (Token
                      id: Id.Lit_Chars
                      val: 's/^\\(.[0-7][0-7][0-7][0-7][0-7][0-7]\\) '
                      span_id: 75
                    )
                  ) (DQ ($ Id.VSub_DollarName '$_x40')) (SQ (Token id:Id.Lit_Chars val:' /\\1 X /' span_id:81))
                }
                {(DQ ($ Id.VSub_Number '$1'))}
              ]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:43)
                  fd: -1
                  arg_word: {(current)}
                )
              ]
            )
            (C {(test_cmp)} {(expected)} {(current)})
          ]
        )
    )
    (command.ShFunction
      name: check_cache_at
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:clean_if_empty)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:107)
                        command_list: 
                          (command.CommandList
                            children: [(C {(git)} {(diff-files)} {(--)} {(DQ ($ Id.VSub_Number '$1'))})]
                          )
                      )
                    }
                  spids: [106]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_DollarName '$clean_if_empty'))}
              arms: [
                (case_arm
                  pat_list: [{(SQ )}]
                  action: [(C {(echo)} {(DQ ($ Id.VSub_Number '$1') (': clean'))})]
                  spids: [129 131 140 -1]
                )
                (case_arm
                  pat_list: [{(Id.Lit_QMark '?') (Id.Lit_Star '*')}]
                  action: [(C {(echo)} {(DQ ($ Id.VSub_Number '$1') (': dirty'))})]
                  spids: [143 145 154 -1]
                )
              ]
            )
            (command.Case
              to_match: {(DQ ($ Id.VSub_Number '$2') (',') ($ Id.VSub_DollarName '$clean_if_empty'))}
              arms: [
                (case_arm
                  pat_list: [{(clean) (Id.Lit_Comma ',')}]
                  action: [(C {(Id.Lit_Other ':')})]
                  spids: [171 173 177 -1]
                )
                (case_arm
                  pat_list: [{(clean) (Id.Lit_Comma ',') (Id.Lit_QMark '?') (Id.Lit_Star '*')}]
                  action: [(C {(false)})]
                  spids: [180 184 188 -1]
                )
                (case_arm
                  pat_list: [{(dirty) (Id.Lit_Comma ',')}]
                  action: [(C {(false)})]
                  spids: [191 193 197 -1]
                )
                (case_arm
                  pat_list: [{(dirty) (Id.Lit_Comma ',') (Id.Lit_QMark '?') (Id.Lit_Star '*')}]
                  action: [(C {(Id.Lit_Other ':')})]
                  spids: [200 204 208 -1]
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'echo frotz >frotz &&\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'     echo nitfol >nitfol &&\n' span_id:226) (Token id:Id.Lit_Chars val:'     echo bozbar >bozbar &&\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'     echo rezrov >rezrov &&\n' span_id:228) (Token id:Id.Lit_Chars val:'     git update-index --add nitfol bozbar rezrov &&\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'     treeH=$(git write-tree) &&\n' span_id:230) (Token id:Id.Lit_Chars val:'     echo treeH $treeH &&\n' span_id:231) 
          (Token id:Id.Lit_Chars val:'     git ls-tree $treeH &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\n' span_id:233) 
          (Token id:Id.Lit_Chars val:'     echo gnusto >bozbar &&\n' span_id:234) 
          (Token
            id: Id.Lit_Chars
            val: '     git update-index --add frotz bozbar --force-remove rezrov &&\n'
            span_id: 235
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >M.out &&\n' span_id:236) 
          (Token id:Id.Lit_Chars val:'     treeM=$(git write-tree) &&\n' span_id:237) (Token id:Id.Lit_Chars val:'     echo treeM $treeM &&\n' span_id:238) 
          (Token id:Id.Lit_Chars val:'     git ls-tree $treeM &&\n' span_id:239) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >M.sum &&\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'     git diff-tree $treeH $treeM' span_id:241)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'1, 2, 3 - no carry forward' span_id:250))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 256
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:257) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 258
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >1-3.out &&\n' span_id:259) 
          (Token id:Id.Lit_Chars val:'     cmp M.out 1-3.out &&\n' span_id:260) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual3.sum &&\n' span_id:261) 
          (Token id:Id.Lit_Chars val:'     cmp M.sum actual3.sum &&\n' span_id:262) (Token id:Id.Lit_Chars val:'     check_cache_at bozbar clean &&\n' span_id:263) 
          (Token id:Id.Lit_Chars val:'     check_cache_at frotz clean &&\n' span_id:264) (Token id:Id.Lit_Chars val:'     check_cache_at nitfol clean' span_id:265)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'4 - carry forward local addition.' span_id:274))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 280
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:281) 
          (Token
            id: Id.Lit_Chars
            val: '     echo "+100644 X 0\tyomin" >expected &&\n'
            span_id: 282
          ) (Token id:Id.Lit_Chars val:'     echo yomin >yomin &&\n' span_id:283) 
          (Token id:Id.Lit_Chars val:'     git update-index --add yomin &&\n' span_id:284) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n' span_id:285) 
          (Token id:Id.Lit_Chars val:'     git ls-files --stage >4.out &&\n' span_id:286) 
          (Token
            id: Id.Lit_Chars
            val: '     test_might_fail git diff -U0 --no-index M.out 4.out >4diff.out &&\n'
            span_id: 287
          ) (Token id:Id.Lit_Chars val:'     compare_change 4diff.out expected &&\n' span_id:288) 
          (Token id:Id.Lit_Chars val:'     check_cache_at yomin clean &&\n' span_id:289) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual4.sum &&\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'     cmp M.sum actual4.sum &&\n' span_id:291) (Token id:Id.Lit_Chars val:'     echo yomin >yomin1 &&\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'     diff yomin yomin1 &&\n' span_id:293) (Token id:Id.Lit_Chars val:'     rm -f yomin1' span_id:294)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'5 - carry forward local addition.' span_id:303))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 309
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:310) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH &&\n'
            span_id: 311
          ) (Token id:Id.Lit_Chars val:'     echo yomin >yomin &&\n' span_id:312) 
          (Token id:Id.Lit_Chars val:'     git update-index --add yomin &&\n' span_id:313) (Token id:Id.Lit_Chars val:'     echo yomin yomin >yomin &&\n' span_id:314) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 315
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >5.out &&\n' span_id:316) 
          (Token
            id: Id.Lit_Chars
            val: '     test_might_fail git diff -U0 --no-index M.out 5.out >5diff.out &&\n'
            span_id: 317
          ) (Token id:Id.Lit_Chars val:'     compare_change 5diff.out expected &&\n' span_id:318) 
          (Token id:Id.Lit_Chars val:'     check_cache_at yomin dirty &&\n' span_id:319) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual5.sum &&\n' span_id:320) 
          (Token id:Id.Lit_Chars val:'     cmp M.sum actual5.sum &&\n' span_id:321) 
          (Token
            id: Id.Lit_Chars
            val: '     : dirty index should have prevented -u from checking it out. &&\n'
            span_id: 322
          ) (Token id:Id.Lit_Chars val:'     echo yomin yomin >yomin1 &&\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'     diff yomin yomin1 &&\n' span_id:324) (Token id:Id.Lit_Chars val:'     rm -f yomin1' span_id:325)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'6 - local addition already has the same.' span_id:334))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 340
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:341) 
          (Token id:Id.Lit_Chars val:'     echo frotz >frotz &&\n' span_id:342) (Token id:Id.Lit_Chars val:'     git update-index --add frotz &&\n' span_id:343) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 344
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >6.out &&\n' span_id:345) 
          (Token id:Id.Lit_Chars val:'     test_cmp M.out 6.out &&\n' span_id:346) (Token id:Id.Lit_Chars val:'     check_cache_at frotz clean &&\n' span_id:347) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz nitfol >actual3.sum &&\n'
            span_id: 348
          ) (Token id:Id.Lit_Chars val:'     cmp M.sum actual3.sum &&\n' span_id:349) 
          (Token id:Id.Lit_Chars val:'     echo frotz >frotz1 &&\n' span_id:350) (Token id:Id.Lit_Chars val:'     diff frotz frotz1 &&\n' span_id:351) 
          (Token id:Id.Lit_Chars val:'     rm -f frotz1' span_id:352)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'7 - local addition already has the same.' span_id:361))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 367
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:368) 
          (Token id:Id.Lit_Chars val:'     echo frotz >frotz &&\n' span_id:369) (Token id:Id.Lit_Chars val:'     git update-index --add frotz &&\n' span_id:370) 
          (Token id:Id.Lit_Chars val:'     echo frotz frotz >frotz &&\n' span_id:371) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n' span_id:372) 
          (Token id:Id.Lit_Chars val:'     git ls-files --stage >7.out &&\n' span_id:373) (Token id:Id.Lit_Chars val:'     test_cmp M.out 7.out &&\n' span_id:374) 
          (Token id:Id.Lit_Chars val:'     check_cache_at frotz dirty &&\n' span_id:375) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual7.sum &&\n' span_id:376) 
          (Token
            id: Id.Lit_Chars
            val: '     if cmp M.sum actual7.sum; then false; else :; fi &&\n'
            span_id: 377
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     : dirty index should have prevented -u from checking it out. &&\n'
            span_id: 378
          ) (Token id:Id.Lit_Chars val:'     echo frotz frotz >frotz1 &&\n' span_id:379) 
          (Token id:Id.Lit_Chars val:'     diff frotz frotz1 &&\n' span_id:380) (Token id:Id.Lit_Chars val:'     rm -f frotz1' span_id:381)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'8 - conflicting addition.' span_id:390))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 396
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:397) 
          (Token id:Id.Lit_Chars val:'     echo frotz frotz >frotz &&\n' span_id:398) (Token id:Id.Lit_Chars val:'     git update-index --add frotz &&\n' span_id:399) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 400
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'9 - conflicting addition.' span_id:409))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 415
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:416) 
          (Token id:Id.Lit_Chars val:'     echo frotz frotz >frotz &&\n' span_id:417) (Token id:Id.Lit_Chars val:'     git update-index --add frotz &&\n' span_id:418) 
          (Token id:Id.Lit_Chars val:'     echo frotz >frotz &&\n' span_id:419) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 420
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'10 - path removed.' span_id:429))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 435
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:436) 
          (Token id:Id.Lit_Chars val:'     echo rezrov >rezrov &&\n' span_id:437) (Token id:Id.Lit_Chars val:'     git update-index --add rezrov &&\n' span_id:438) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 439
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >10.out &&\n' span_id:440) 
          (Token id:Id.Lit_Chars val:'     cmp M.out 10.out &&\n' span_id:441) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual10.sum &&\n' span_id:442) 
          (Token id:Id.Lit_Chars val:'     cmp M.sum actual10.sum' span_id:443)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'11 - dirty path removed.' span_id:452))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 458
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:459) 
          (Token id:Id.Lit_Chars val:'     echo rezrov >rezrov &&\n' span_id:460) (Token id:Id.Lit_Chars val:'     git update-index --add rezrov &&\n' span_id:461) 
          (Token id:Id.Lit_Chars val:'     echo rezrov rezrov >rezrov &&\n' span_id:462) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 463
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'12 - unmatching local changes being removed.' span_id:472))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 478
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:479) 
          (Token id:Id.Lit_Chars val:'     echo rezrov rezrov >rezrov &&\n' span_id:480) (Token id:Id.Lit_Chars val:'     git update-index --add rezrov &&\n' span_id:481) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 482
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'13 - unmatching local changes being removed.' span_id:491))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 497
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:498) 
          (Token id:Id.Lit_Chars val:'     echo rezrov rezrov >rezrov &&\n' span_id:499) (Token id:Id.Lit_Chars val:'     git update-index --add rezrov &&\n' span_id:500) 
          (Token id:Id.Lit_Chars val:'     echo rezrov >rezrov &&\n' span_id:501) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 502
          )
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:508)
          fd: -1
          arg_word: {(expected)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:511)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 517
          stdin_parts: [('-100644 X 0\tnitfol\n') ('+100644 X 0\tnitfol\n')]
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'14 - unchanged in two heads.' span_id:524))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 530
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:531) 
          (Token id:Id.Lit_Chars val:'     echo nitfol nitfol >nitfol &&\n' span_id:532) (Token id:Id.Lit_Chars val:'     git update-index --add nitfol &&\n' span_id:533) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 534
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >14.out &&\n' span_id:535) 
          (Token
            id: Id.Lit_Chars
            val: '     test_must_fail git diff -U0 --no-index M.out 14.out >14diff.out &&\n'
            span_id: 536
          ) (Token id:Id.Lit_Chars val:'     compare_change 14diff.out expected &&\n' span_id:537) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz >actual14.sum &&\n'
            span_id: 538
          ) (Token id:Id.Lit_Chars val:'     grep -v nitfol M.sum > expected14.sum &&\n' span_id:539) 
          (Token
            id: Id.Lit_Chars
            val: '     cmp expected14.sum actual14.sum &&\n'
            span_id: 540
          ) (Token id:Id.Lit_Chars val:'     sum bozbar frotz nitfol >actual14a.sum &&\n' span_id:541) 
          (Token
            id: Id.Lit_Chars
            val: '     if cmp M.sum actual14a.sum; then false; else :; fi &&\n'
            span_id: 542
          ) (Token id:Id.Lit_Chars val:'     check_cache_at nitfol clean &&\n' span_id:543) 
          (Token id:Id.Lit_Chars val:'     echo nitfol nitfol >nitfol1 &&\n' span_id:544) (Token id:Id.Lit_Chars val:'     diff nitfol nitfol1 &&\n' span_id:545) 
          (Token id:Id.Lit_Chars val:'     rm -f nitfol1' span_id:546)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'15 - unchanged in two heads.' span_id:555))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 561
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:562) 
          (Token id:Id.Lit_Chars val:'     echo nitfol nitfol >nitfol &&\n' span_id:563) (Token id:Id.Lit_Chars val:'     git update-index --add nitfol &&\n' span_id:564) 
          (Token
            id: Id.Lit_Chars
            val: '     echo nitfol nitfol nitfol >nitfol &&\n'
            span_id: 565
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n' span_id:566) 
          (Token id:Id.Lit_Chars val:'     git ls-files --stage >15.out &&\n' span_id:567) 
          (Token
            id: Id.Lit_Chars
            val: '     test_must_fail git diff -U0 --no-index M.out 15.out >15diff.out &&\n'
            span_id: 568
          ) (Token id:Id.Lit_Chars val:'     compare_change 15diff.out expected &&\n' span_id:569) 
          (Token id:Id.Lit_Chars val:'     check_cache_at nitfol dirty &&\n' span_id:570) (Token id:Id.Lit_Chars val:'     sum bozbar frotz >actual15.sum &&\n' span_id:571) 
          (Token
            id: Id.Lit_Chars
            val: '     grep -v nitfol M.sum > expected15.sum &&\n'
            span_id: 572
          ) (Token id:Id.Lit_Chars val:'     cmp expected15.sum actual15.sum &&\n' span_id:573) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz nitfol >actual15a.sum &&\n'
            span_id: 574
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     if cmp M.sum actual15a.sum; then false; else :; fi &&\n'
            span_id: 575
          ) (Token id:Id.Lit_Chars val:'     echo nitfol nitfol nitfol >nitfol1 &&\n' span_id:576) 
          (Token id:Id.Lit_Chars val:'     diff nitfol nitfol1 &&\n' span_id:577) (Token id:Id.Lit_Chars val:'     rm -f nitfol1' span_id:578)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'16 - conflicting local change.' span_id:587))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 593
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:594) 
          (Token id:Id.Lit_Chars val:'     echo bozbar bozbar >bozbar &&\n' span_id:595) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:596) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 597
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'17 - conflicting local change.' span_id:606))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 612
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:613) 
          (Token id:Id.Lit_Chars val:'     echo bozbar bozbar >bozbar &&\n' span_id:614) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:615) 
          (Token
            id: Id.Lit_Chars
            val: '     echo bozbar bozbar bozbar >bozbar &&\n'
            span_id: 616
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 617
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'18 - local change already having a good result.' span_id:626))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 632
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:633) 
          (Token id:Id.Lit_Chars val:'     echo gnusto >bozbar &&\n' span_id:634) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:635) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 636
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >18.out &&\n' span_id:637) 
          (Token id:Id.Lit_Chars val:'     test_cmp M.out 18.out &&\n' span_id:638) (Token id:Id.Lit_Chars val:'     check_cache_at bozbar clean &&\n' span_id:639) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz nitfol >actual18.sum &&\n'
            span_id: 640
          ) (Token id:Id.Lit_Chars val:'     cmp M.sum actual18.sum' span_id:641)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '19 - local change already having a good result, further modified.'
            span_id: 650
          )
        )
      } 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 656
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:657) 
          (Token id:Id.Lit_Chars val:'     echo gnusto >bozbar &&\n' span_id:658) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'     echo gnusto gnusto >bozbar &&\n' span_id:660) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed -m -u $treeH $treeM &&\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'     git ls-files --stage >19.out &&\n' span_id:662) (Token id:Id.Lit_Chars val:'     test_cmp M.out 19.out &&\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'     check_cache_at bozbar dirty &&\n' span_id:664) (Token id:Id.Lit_Chars val:'     sum frotz nitfol >actual19.sum &&\n' span_id:665) 
          (Token
            id: Id.Lit_Chars
            val: '     grep -v bozbar  M.sum > expected19.sum &&\n'
            span_id: 666
          ) (Token id:Id.Lit_Chars val:'     cmp expected19.sum actual19.sum &&\n' span_id:667) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz nitfol >actual19a.sum &&\n'
            span_id: 668
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     if cmp M.sum actual19a.sum; then false; else :; fi &&\n'
            span_id: 669
          ) (Token id:Id.Lit_Chars val:'     echo gnusto gnusto >bozbar1 &&\n' span_id:670) 
          (Token id:Id.Lit_Chars val:'     diff bozbar bozbar1 &&\n' span_id:671) (Token id:Id.Lit_Chars val:'     rm -f bozbar1' span_id:672)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'20 - no local change, use new tree.' span_id:681))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 687
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:688) 
          (Token id:Id.Lit_Chars val:'     echo bozbar >bozbar &&\n' span_id:689) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:690) 
          (Token
            id: Id.Lit_Chars
            val: '     read_tree_u_must_succeed -m -u $treeH $treeM &&\n'
            span_id: 691
          ) (Token id:Id.Lit_Chars val:'     git ls-files --stage >20.out &&\n' span_id:692) 
          (Token id:Id.Lit_Chars val:'     test_cmp M.out 20.out &&\n' span_id:693) (Token id:Id.Lit_Chars val:'     check_cache_at bozbar clean &&\n' span_id:694) 
          (Token
            id: Id.Lit_Chars
            val: '     sum bozbar frotz nitfol >actual20.sum &&\n'
            span_id: 695
          ) (Token id:Id.Lit_Chars val:'     cmp M.sum actual20.sum' span_id:696)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'21 - no local change, dirty cache.' span_id:705))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'rm -f .git/index nitfol bozbar rezrov frotz &&\n'
            span_id: 711
          ) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed --reset -u $treeH &&\n' span_id:712) 
          (Token id:Id.Lit_Chars val:'     echo bozbar >bozbar &&\n' span_id:713) (Token id:Id.Lit_Chars val:'     git update-index --add bozbar &&\n' span_id:714) 
          (Token id:Id.Lit_Chars val:'     echo gnusto gnusto >bozbar &&\n' span_id:715) 
          (Token
            id: Id.Lit_Chars
            val: '     if read_tree_u_must_succeed -m -u $treeH $treeM; then false; else :; fi'
            span_id: 716
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'DF vs DF/DF case setup.' span_id:728))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'rm -f .git/index &&\n' span_id:734) 
          (Token id:Id.Lit_Chars val:'     echo DF >DF &&\n' span_id:735) (Token id:Id.Lit_Chars val:'     git update-index --add DF &&\n' span_id:736) 
          (Token id:Id.Lit_Chars val:'     treeDF=$(git write-tree) &&\n' span_id:737) (Token id:Id.Lit_Chars val:'     echo treeDF $treeDF &&\n' span_id:738) 
          (Token id:Id.Lit_Chars val:'     git ls-tree $treeDF &&\n' span_id:739) (Token id:Id.Lit_Chars val:'\n' span_id:740) 
          (Token id:Id.Lit_Chars val:'     rm -f DF &&\n' span_id:741) (Token id:Id.Lit_Chars val:'     mkdir DF &&\n' span_id:742) 
          (Token id:Id.Lit_Chars val:'     echo DF/DF >DF/DF &&\n' span_id:743) (Token id:Id.Lit_Chars val:'     git update-index --add --remove DF DF/DF &&\n' span_id:744) 
          (Token id:Id.Lit_Chars val:'     treeDFDF=$(git write-tree) &&\n' span_id:745) (Token id:Id.Lit_Chars val:'     echo treeDFDF $treeDFDF &&\n' span_id:746) 
          (Token id:Id.Lit_Chars val:'     git ls-tree $treeDFDF &&\n' span_id:747) (Token id:Id.Lit_Chars val:'     git ls-files --stage >DFDF.out' span_id:748)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'DF vs DF/DF case test.' span_id:757))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'rm -f .git/index &&\n' span_id:763) 
          (Token id:Id.Lit_Chars val:'     rm -fr DF &&\n' span_id:764) (Token id:Id.Lit_Chars val:'     echo DF >DF &&\n' span_id:765) 
          (Token id:Id.Lit_Chars val:'     git update-index --add DF &&\n' span_id:766) (Token id:Id.Lit_Chars val:'     read_tree_u_must_succeed -m -u $treeDF $treeDFDF &&\n' span_id:767) 
          (Token
            id: Id.Lit_Chars
            val: '     git ls-files --stage >DFDFcheck.out &&\n'
            span_id: 768
          ) (Token id:Id.Lit_Chars val:'     test_cmp DFDF.out DFDFcheck.out &&\n' span_id:769) 
          (Token id:Id.Lit_Chars val:'     check_cache_at DF/DF clean' span_id:770)
        )
      }
    )
    (C {(test_done)})
  ]
)