(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: 'recursive merge corner cases involving criss-cross merges'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShFunction
      name: get_clean_checkout
      body: 
        (command.BraceGroup
          children: [
            (command.AndOr
              ops: [Id.Op_DAmp Id.Op_DAmp]
              children: [
                (C {(git)} {(reset)} {(--hard)})
                (C {(git)} {(clean)} {(-fdqx)})
                (C {(git)} {(checkout)} {(DQ ($ Id.VSub_Number '$1'))})
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup basic criss-cross + rename with no modifications'
            span_id: 83
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tten="0 1 2 3 4 5 6 7 8 9" &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\techo line $i in a sample file\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tdone >one &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:94) (Token id:Id.Lit_Chars val:'\t\techo line $i in another sample file\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tdone >two &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit add one two &&\n' span_id:97) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git commit -m initial &&\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\tgit branch L1 &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit checkout -b R1 &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\tgit mv one three &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m R1 &&\n' span_id:103) 
          (Token id:Id.Lit_Chars val:'\n' span_id:104) (Token id:Id.Lit_Chars val:'\tgit checkout L1 &&\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'\tgit mv two three &&\n' span_id:106) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m L1 &&\n' span_id:107) 
          (Token id:Id.Lit_Chars val:'\n' span_id:108) (Token id:Id.Lit_Chars val:'\tgit checkout L1^0 &&\n' span_id:109) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git merge -s ours R1 &&\n'
            span_id: 110
          ) (Token id:Id.Lit_Chars val:'\tgit tag L2 &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id:Id.Lit_Chars val:'\tgit checkout R1^0 &&\n' span_id:113) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git merge -s ours L1 &&\n'
            span_id: 114
          ) (Token id:Id.Lit_Chars val:'\tgit tag R2\n' span_id:115)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge simple rename+criss-cross with no modifications'
            span_id: 122
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\tgit checkout L2^0 &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\n' span_id:129) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive R2^0 &&\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -s | wc -l) &&\n' span_id:132) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 = $(git ls-files -u | wc -l) &&\n'
            span_id: 133
          ) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -o | wc -l) &&\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\n' span_id:135) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n'
            span_id: 136
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n'
            span_id: 137
          ) (Token id:Id.Lit_Chars val:'\n' span_id:138) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&\n'
            span_id: 139
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse R2:three) = $(git hash-object three~R2^0)\n'
            span_id: 140
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup criss-cross + rename merges with basic modification'
            span_id: 181
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:187) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'\tten="0 1 2 3 4 5 6 7 8 9" &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\techo line $i in a sample file\n' span_id:194) 
          (Token id:Id.Lit_Chars val:'\tdone >one &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\tfor i in $ten\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:197) (Token id:Id.Lit_Chars val:'\t\techo line $i in another sample file\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'\tdone >two &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\tgit add one two &&\n' span_id:200) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git commit -m initial &&\n'
            span_id: 201
          ) (Token id:Id.Lit_Chars val:'\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'\tgit branch L1 &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tgit checkout -b R1 &&\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\tgit mv one three &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\techo more >>two &&\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\tgit add two &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m R1 &&\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id:Id.Lit_Chars val:'\tgit checkout L1 &&\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'\tgit mv two three &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m L1 &&\n' span_id:212) 
          (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\tgit checkout L1^0 &&\n' span_id:214) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git merge -s ours R1 &&\n'
            span_id: 215
          ) (Token id:Id.Lit_Chars val:'\tgit tag L2 &&\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit checkout R1^0 &&\n' span_id:218) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_tick && git merge -s ours L1 &&\n'
            span_id: 219
          ) (Token id:Id.Lit_Chars val:'\tgit tag R2\n' span_id:220)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge criss-cross + rename merges with basic modification'
            span_id: 227
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\tgit checkout L2^0 &&\n' span_id:233) 
          (Token id:Id.Lit_Chars val:'\n' span_id:234) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive R2^0 &&\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -s | wc -l) &&\n' span_id:237) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 = $(git ls-files -u | wc -l) &&\n'
            span_id: 238
          ) (Token id:Id.Lit_Chars val:'\ttest 2 = $(git ls-files -o | wc -l) &&\n' span_id:239) 
          (Token id:Id.Lit_Chars val:'\n' span_id:240) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :2:three) = $(git rev-parse L2:three) &&\n'
            span_id: 241
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :3:three) = $(git rev-parse R2:three) &&\n'
            span_id: 242
          ) (Token id:Id.Lit_Chars val:'\n' span_id:243) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse L2:three) = $(git hash-object three~HEAD) &&\n'
            span_id: 244
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse R2:three) = $(git hash-object three~R2^0)\n'
            span_id: 245
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup differently handled merges of rename/add conflict'
            span_id: 310
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:314) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:315) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:316) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:317) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\n' span_id:319) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "0\\n1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n9\\n" >a &&\n'
            span_id: 320
          ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:321) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m A &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:324) (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:325) 
          (Token id:Id.Lit_Chars val:'\techo 10 >>a &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\techo "other content" >>new_a &&\n' span_id:327) 
          (Token id:Id.Lit_Chars val:'\tgit add a new_a &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m C &&\n' span_id:329) 
          (Token id:Id.Lit_Chars val:'\n' span_id:330) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\tgit mv a new_a &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m B &&\n' span_id:333) 
          (Token id:Id.Lit_Chars val:'\n' span_id:334) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:335) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:336) (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:337) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m D &&\n' span_id:338) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:339) 
          (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:341) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\trm new_a~HEAD new_a &&\n' span_id:343) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "Incorrectly merged content" >>new_a &&\n'
            span_id: 344
          ) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:345) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m E &&\n' span_id:346) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:347)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'git detects differently handled merges conflict' span_id:354))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:358) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:359) (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:360) 
          (Token id:Id.Lit_Chars val:'\n' span_id:361) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive E^0 &&\n' span_id:362) 
          (Token id:Id.Lit_Chars val:'\n' span_id:363) (Token id:Id.Lit_Chars val:'\ttest 3 = $(git ls-files -s | wc -l) &&\n' span_id:364) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 = $(git ls-files -u | wc -l) &&\n'
            span_id: 365
          ) (Token id:Id.Lit_Chars val:'\ttest 0 = $(git ls-files -o | wc -l) &&\n' span_id:366) 
          (Token id:Id.Lit_Chars val:'\n' span_id:367) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :2:new_a) = $(git rev-parse D:new_a) &&\n'
            span_id: 368
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :3:new_a) = $(git rev-parse E:new_a) &&\n'
            span_id: 369
          ) (Token id:Id.Lit_Chars val:'\n' span_id:370) 
          (Token id:Id.Lit_Chars val:'\tgit cat-file -p B:new_a >>merged &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit cat-file -p C:new_a >>merge-me &&\n' span_id:372) 
          (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:373) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge-file \\\n' span_id:374) 
          (Token id:Id.Lit_Chars val:'\t\t-L "Temporary merge branch 2" \\\n' span_id:375) (Token id:Id.Lit_Chars val:'\t\t-L "" \\\n' span_id:376) 
          (Token id:Id.Lit_Chars val:'\t\t-L "Temporary merge branch 1" \\\n' span_id:377) (Token id:Id.Lit_Chars val:'\t\tmerged empty merge-me &&\n' span_id:378) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/^\\([<=>]\\)/\\1\\1\\1/" merged >merged-internal &&\n'
            span_id: 379
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :1:new_a) = $(git hash-object merged-internal)\n'
            span_id: 380
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup criss-cross + modify/delete resolved differently'
            span_id: 442
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:446) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:447) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:448) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:450) (Token id:Id.Lit_Chars val:'\n' span_id:451) 
          (Token id:Id.Lit_Chars val:'\techo A >file &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:453) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:454) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:455) 
          (Token id:Id.Lit_Chars val:'\n' span_id:456) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:457) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:458) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:459) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:460) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:461) 
          (Token id:Id.Lit_Chars val:'\n' span_id:462) (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:463) 
          (Token id:Id.Lit_Chars val:'\techo B >file &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:467) 
          (Token id:Id.Lit_Chars val:'\n' span_id:468) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:469) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:470) (Token id:Id.Lit_Chars val:'\techo B >file &&\n' span_id:471) 
          (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:473) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m D &&\n' span_id:474) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:475) 
          (Token id:Id.Lit_Chars val:'\n' span_id:476) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:477) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\tgit rm file &&\n' span_id:479) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:480) (Token id:Id.Lit_Chars val:'\tgit commit -m E &&\n' span_id:481) 
          (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:482)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git detects conflict merging criss-cross+modify/delete'
            span_id: 489
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:493) 
          (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\n' span_id:495) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge -s recursive E^0 &&\n'
            span_id: 496
          ) (Token id:Id.Lit_Chars val:'\n' span_id:497) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 498
          ) (Token id:Id.Lit_Chars val:'\ttest 2 -eq $(git ls-files -u | wc -l) &&\n' span_id:499) 
          (Token id:Id.Lit_Chars val:'\n' span_id:500) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :1:file) = $(git rev-parse master:file) &&\n'
            span_id: 501
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :2:file) = $(git rev-parse B:file)\n' span_id:502)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git detects conflict merging criss-cross+modify/delete, reverse direction'
            span_id: 509
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:513) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\tgit checkout E^0 &&\n' span_id:515) 
          (Token id:Id.Lit_Chars val:'\n' span_id:516) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive D^0 &&\n' span_id:517) 
          (Token id:Id.Lit_Chars val:'\n' span_id:518) (Token id:Id.Lit_Chars val:'\ttest 2 -eq $(git ls-files -s | wc -l) &&\n' span_id:519) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -u | wc -l) &&\n'
            span_id: 520
          ) (Token id:Id.Lit_Chars val:'\n' span_id:521) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :1:file) = $(git rev-parse master:file) &&\n'
            span_id: 522
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :3:file) = $(git rev-parse B:file)\n' span_id:523)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup differently handled merges of directory/file conflict'
            span_id: 636
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:640) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:641) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:642) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:644) (Token id:Id.Lit_Chars val:'\n' span_id:645) 
          (Token id:Id.Lit_Chars val:'\t>ignore-me &&\n' span_id:646) (Token id:Id.Lit_Chars val:'\tgit add ignore-me &&\n' span_id:647) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:649) 
          (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:650) (Token id:Id.Lit_Chars val:'\n' span_id:651) 
          (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:652) (Token id:Id.Lit_Chars val:'\tgit checkout -b C &&\n' span_id:653) 
          (Token id:Id.Lit_Chars val:'\tmkdir a &&\n' span_id:654) (Token id:Id.Lit_Chars val:'\techo 10 >a/file &&\n' span_id:655) 
          (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:656) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:657) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:658) (Token id:Id.Lit_Chars val:'\n' span_id:659) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:660) (Token id:Id.Lit_Chars val:'\techo 5 >a &&\n' span_id:661) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:662) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\n' span_id:665) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:666) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C &&\n' span_id:667) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:668) (Token id:Id.Lit_Chars val:'\trm -rf a/ &&\n' span_id:669) 
          (Token id:Id.Lit_Chars val:'\techo 5 >a &&\n' span_id:670) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:671) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:672) (Token id:Id.Lit_Chars val:'\tgit commit -m D &&\n' span_id:673) 
          (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:674) (Token id:Id.Lit_Chars val:'\n' span_id:675) 
          (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:676) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:677) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:678) (Token id:Id.Lit_Chars val:'\tgit rm --cached a &&\n' span_id:679) 
          (Token id:Id.Lit_Chars val:'\techo 10 >a/file &&\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:681) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:682) (Token id:Id.Lit_Chars val:'\tgit commit -m E1 &&\n' span_id:683) 
          (Token id:Id.Lit_Chars val:'\tgit tag E1 &&\n' span_id:684) (Token id:Id.Lit_Chars val:'\n' span_id:685) 
          (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:686) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge B &&\n' span_id:687) 
          (Token id:Id.Lit_Chars val:'\tgit clean -f &&\n' span_id:688) (Token id:Id.Lit_Chars val:'\tgit rm --cached a &&\n' span_id:689) 
          (Token id:Id.Lit_Chars val:'\tprintf "10\\n11\\n" >a/file &&\n' span_id:690) (Token id:Id.Lit_Chars val:'\tgit add a/file &&\n' span_id:691) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:692) (Token id:Id.Lit_Chars val:'\tgit commit -m E2 &&\n' span_id:693) 
          (Token id:Id.Lit_Chars val:'\tgit tag E2\n' span_id:694)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge of D & E1 fails but has appropriate contents'
            span_id: 701
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:705) 
          (Token id:Id.Lit_Chars val:'\tget_clean_checkout D^0 &&\n' span_id:706) (Token id:Id.Lit_Chars val:'\n' span_id:707) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge -s recursive E1^0 &&\n'
            span_id: 708
          ) (Token id:Id.Lit_Chars val:'\n' span_id:709) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 710
          ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -u | wc -l) &&\n' span_id:711) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 712
          ) (Token id:Id.Lit_Chars val:'\n' span_id:713) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n'
            span_id: 714
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :2:a) = $(git rev-parse B:a)\n' span_id:715)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge of E1 & D fails but has appropriate contents'
            span_id: 722
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:726) 
          (Token id:Id.Lit_Chars val:'\tget_clean_checkout E1^0 &&\n' span_id:727) (Token id:Id.Lit_Chars val:'\n' span_id:728) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge -s recursive D^0 &&\n'
            span_id: 729
          ) (Token id:Id.Lit_Chars val:'\n' span_id:730) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 731
          ) (Token id:Id.Lit_Chars val:'\ttest 1 -eq $(git ls-files -u | wc -l) &&\n' span_id:732) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 733
          ) (Token id:Id.Lit_Chars val:'\n' span_id:734) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n'
            span_id: 735
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse :3:a) = $(git rev-parse B:a)\n' span_id:736)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge of D & E2 fails but has appropriate contents'
            span_id: 743
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:747) 
          (Token id:Id.Lit_Chars val:'\tget_clean_checkout D^0 &&\n' span_id:748) (Token id:Id.Lit_Chars val:'\n' span_id:749) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge -s recursive E2^0 &&\n'
            span_id: 750
          ) (Token id:Id.Lit_Chars val:'\n' span_id:751) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 4 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 752
          ) (Token id:Id.Lit_Chars val:'\ttest 3 -eq $(git ls-files -u | wc -l) &&\n' span_id:753) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 754
          ) (Token id:Id.Lit_Chars val:'\n' span_id:755) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :2:a) = $(git rev-parse B:a) &&\n'
            span_id: 756
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :3:a/file) = $(git rev-parse E2:a/file) &&\n'
            span_id: 757
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&\n'
            span_id: 758
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n'
            span_id: 759
          ) (Token id:Id.Lit_Chars val:'\n' span_id:760) 
          (Token id:Id.Lit_Chars val:'\ttest -f a~HEAD\n' span_id:761)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge of E2 & D fails but has appropriate contents'
            span_id: 768
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:772) 
          (Token id:Id.Lit_Chars val:'\tget_clean_checkout E2^0 &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\n' span_id:774) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge -s recursive D^0 &&\n'
            span_id: 775
          ) (Token id:Id.Lit_Chars val:'\n' span_id:776) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 4 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 777
          ) (Token id:Id.Lit_Chars val:'\ttest 3 -eq $(git ls-files -u | wc -l) &&\n' span_id:778) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 779
          ) (Token id:Id.Lit_Chars val:'\n' span_id:780) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :3:a) = $(git rev-parse B:a) &&\n'
            span_id: 781
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :2:a/file) = $(git rev-parse E2:a/file) &&\n'
            span_id: 782
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :1:a/file) = $(git rev-parse C:a/file) &&\n'
            span_id: 783
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse :0:ignore-me) = $(git rev-parse A:ignore-me) &&\n'
            span_id: 784
          ) (Token id:Id.Lit_Chars val:'\n' span_id:785) 
          (Token id:Id.Lit_Chars val:'\ttest -f a~D^0\n' span_id:786)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 
'setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify'
            span_id: 908
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:912) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:914) 
          (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:916) 
          (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:917) (Token id:Id.Lit_Chars val:'\n' span_id:918) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n" >a &&\n'
            span_id: 919
          ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:920) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:921) (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:922) 
          (Token id:Id.Lit_Chars val:'\n' span_id:923) (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:924) 
          (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:925) (Token id:Id.Lit_Chars val:'\techo 7 >>b &&\n' span_id:926) 
          (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:927) (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:928) 
          (Token id:Id.Lit_Chars val:'\n' span_id:929) (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:930) 
          (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:932) 
          (Token id:Id.Lit_Chars val:'\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit checkout -q B^0 &&\n' span_id:934) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge --no-commit -s ours C^0 &&\n'
            span_id: 935
          ) (Token id:Id.Lit_Chars val:'\tgit mv b newname &&\n' span_id:936) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Merge commit C^0 into HEAD" &&\n'
            span_id: 937
          ) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:938) 
          (Token id:Id.Lit_Chars val:'\n' span_id:939) (Token id:Id.Lit_Chars val:'\tgit checkout -q C^0 &&\n' span_id:940) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge --no-commit -s ours B^0 &&\n'
            span_id: 941
          ) (Token id:Id.Lit_Chars val:'\tgit mv c newname &&\n' span_id:942) 
          (Token id:Id.Lit_Chars val:'\tprintf "7\\n8\\n" >>newname &&\n' span_id:943) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:944) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Merge commit B^0 into HEAD" &&\n'
            span_id: 945
          ) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:946)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 
'handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify'
            span_id: 953
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:957) 
          (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:958) (Token id:Id.Lit_Chars val:'\n' span_id:959) 
          (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:960) (Token id:Id.Lit_Chars val:'\n' span_id:961) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 1 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 962
          ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:963) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 964
          ) (Token id:Id.Lit_Chars val:'\n' span_id:965) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse HEAD:newname) = $(git rev-parse E:newname)\n'
            span_id: 966
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup criss-cross + rename/rename/add + modify/modify'
            span_id: 1037
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1041) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:1042) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:1043) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:1044) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:1045) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1046) (Token id:Id.Lit_Chars val:'\tprintf "lots\\nof\\nwords\\nand\\ncontent\\n" >a &&\n' span_id:1047) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1048) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:1049) 
          (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:1050) (Token id:Id.Lit_Chars val:'\n' span_id:1051) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:1052) (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:1053) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:1054) (Token id:Id.Lit_Chars val:'\n' span_id:1055) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:1057) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "2\\n3\\n4\\n5\\n6\\n7\\n" >a &&\n'
            span_id: 1058
          ) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1059) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:1060) (Token id:Id.Lit_Chars val:'\n' span_id:1061) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1062) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1063) 
          (Token id:Id.Lit_Chars val:'\tgit checkout C -- a c &&\n' span_id:1064) (Token id:Id.Lit_Chars val:'\tmv a old_a &&\n' span_id:1065) 
          (Token id:Id.Lit_Chars val:'\techo 1 >a &&\n' span_id:1066) (Token id:Id.Lit_Chars val:'\tcat old_a >>a &&\n' span_id:1067) 
          (Token id:Id.Lit_Chars val:'\trm old_a &&\n' span_id:1068) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:1069) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Merge commit C^0 into HEAD" &&\n'
            span_id: 1070
          ) (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:1071) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1072) (Token id:Id.Lit_Chars val:'\tgit checkout C^0 &&\n' span_id:1073) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge --no-commit -s ours B^0 &&\n'
            span_id: 1074
          ) (Token id:Id.Lit_Chars val:'\tgit checkout B -- b &&\n' span_id:1075) 
          (Token id:Id.Lit_Chars val:'\techo 8 >>a &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:1077) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Merge commit B^0 into HEAD" &&\n'
            span_id: 1078
          ) (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:1079)
        )
      }
    )
    (C {(test_expect_failure)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'detect rename/rename/add-source for virtual merge-base'
            span_id: 1086
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1090) 
          (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:1091) (Token id:Id.Lit_Chars val:'\n' span_id:1092) 
          (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:1093) (Token id:Id.Lit_Chars val:'\n' span_id:1094) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 3 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 1095
          ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:1096) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 1097
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1098) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse HEAD:b) = $(git rev-parse A:a) &&\n'
            span_id: 1099
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse HEAD:c) = $(git rev-parse A:a) &&\n' span_id:1100) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(cat a)" = "$(printf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n8\\n")"\n'
            span_id: 1101
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'setup criss-cross+rename/rename/add-dest + simple modify'
            span_id: 1166
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1170) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:1171) (Token id:Id.Lit_Chars val:'\tgit clean -fdqx &&\n' span_id:1172) 
          (Token id:Id.Lit_Chars val:'\trm -rf .git &&\n' span_id:1173) (Token id:Id.Lit_Chars val:'\tgit init &&\n' span_id:1174) 
          (Token id:Id.Lit_Chars val:'\n' span_id:1175) (Token id:Id.Lit_Chars val:'\t>a &&\n' span_id:1176) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:1177) (Token id:Id.Lit_Chars val:'\tgit commit -m A &&\n' span_id:1178) 
          (Token id:Id.Lit_Chars val:'\tgit tag A &&\n' span_id:1179) (Token id:Id.Lit_Chars val:'\n' span_id:1180) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b B A &&\n' span_id:1181) (Token id:Id.Lit_Chars val:'\tgit mv a b &&\n' span_id:1182) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "1\\n2\\n3\\n4\\n5\\n6\\n7\\n" >c &&\n'
            span_id: 1183
          ) (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:1184) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m B &&\n' span_id:1185) (Token id:Id.Lit_Chars val:'\n' span_id:1186) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b C A &&\n' span_id:1187) (Token id:Id.Lit_Chars val:'\tgit mv a c &&\n' span_id:1188) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m C &&\n' span_id:1189) (Token id:Id.Lit_Chars val:'\n' span_id:1190) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1191) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1192) 
          (Token id:Id.Lit_Chars val:'\tgit mv b a &&\n' span_id:1193) (Token id:Id.Lit_Chars val:'\tgit commit -m "D is like B but renames b back to a" &&\n' span_id:1194) 
          (Token id:Id.Lit_Chars val:'\tgit tag D &&\n' span_id:1195) (Token id:Id.Lit_Chars val:'\n' span_id:1196) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:1197) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit -s ours C^0 &&\n' span_id:1198) 
          (Token id:Id.Lit_Chars val:'\tgit mv b a &&\n' span_id:1199) (Token id:Id.Lit_Chars val:'\techo 8 >>c &&\n' span_id:1200) 
          (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:1201) (Token id:Id.Lit_Chars val:'\tgit commit -m "E like D but has mod in c" &&\n' span_id:1202) 
          (Token id:Id.Lit_Chars val:'\tgit tag E\n' span_id:1203)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'virtual merge base handles rename/rename(1to2)/add-dest'
            span_id: 1210
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1214) 
          (Token id:Id.Lit_Chars val:'\tgit checkout D^0 &&\n' span_id:1215) (Token id:Id.Lit_Chars val:'\n' span_id:1216) 
          (Token id:Id.Lit_Chars val:'\tgit merge -s recursive E^0 &&\n' span_id:1217) (Token id:Id.Lit_Chars val:'\n' span_id:1218) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 2 -eq $(git ls-files -s | wc -l) &&\n'
            span_id: 1219
          ) (Token id:Id.Lit_Chars val:'\ttest 0 -eq $(git ls-files -u | wc -l) &&\n' span_id:1220) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest 0 -eq $(git ls-files -o | wc -l) &&\n'
            span_id: 1221
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1222) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git rev-parse HEAD:a) = $(git rev-parse A:a) &&\n'
            span_id: 1223
          ) (Token id:Id.Lit_Chars val:'\ttest $(git rev-parse HEAD:c) = $(git rev-parse E:c)\n' span_id:1224)
        )
      }
    )
    (C {(test_done)})
  ]
)