(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:'merge-recursive backend test' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 1' span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\techo hello >a &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\to0=$(git hash-object a) &&\n' span_id:25) 
          (Token id:Id.Lit_Chars val:'\tcp a b &&\n' span_id:26) (Token id:Id.Lit_Chars val:'\tcp a c &&\n' span_id:27) 
          (Token id:Id.Lit_Chars val:'\tmkdir d &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\tcp a d/e &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\tgit add a b c d/e &&\n' span_id:32) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m initial &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\tc0=$(git rev-parse --verify HEAD) &&\n' span_id:34) 
          (Token id:Id.Lit_Chars val:'\tgit branch side &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit branch df-1 &&\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\tgit branch df-2 &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit branch df-3 &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\tgit branch remove &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit branch submod &&\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\tgit branch copy &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit branch rename &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tgit branch rename-ln &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\techo hello >>a &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\tcp a d/e &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\to1=$(git hash-object a) &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\tgit add a d/e &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:51) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "master modifies a and d/e" &&\n'
            span_id: 52
          ) (Token id:Id.Lit_Chars val:'\tc1=$(git rev-parse --verify HEAD) &&\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o1\ta"\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:58) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o1\td/e"\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:65)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 2' span_id:72))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:76) (Token id:Id.Lit_Chars val:'\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit checkout side &&\n' span_id:79) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 80
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:82) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:86) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:88) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\techo goodbye >>a &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\to2=$(git hash-object a) &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\n' span_id:95) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\n' span_id:97) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "side modifies a" &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\tc2=$(git rev-parse --verify HEAD) &&\n' span_id:100) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 101
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o2\ta"\n' span_id:103) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:105) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 0\ta"\n' span_id:107) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:109) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:112)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 3' span_id:119))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id:Id.Lit_Chars val:'\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit checkout df-1 &&\n' span_id:126) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 127
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:133) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:135) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\trm -f b && mkdir b && echo df-1 >b/c && git add b/c &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\to3=$(git hash-object b/c) &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-1 makes b/c" &&\n' span_id:144) 
          (Token
            id: Id.Lit_Chars
            val: '\tc3=$(git rev-parse --verify HEAD) &&\n'
            span_id: 145
          ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o3\tb/c"\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o3 0\tb/c"\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:155) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:157)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 4' span_id:164))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\tgit checkout df-2 &&\n' span_id:171) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 172
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:175) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:176) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:177) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:178) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:179) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:181) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:183) 
          (Token id:Id.Lit_Chars val:'\n' span_id:184) (Token id:Id.Lit_Chars val:'\trm -f a && mkdir a && echo df-2 >a/c && git add a/c &&\n' span_id:185) 
          (Token id:Id.Lit_Chars val:'\to4=$(git hash-object a/c) &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\n' span_id:187) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-2 makes a/c" &&\n' span_id:189) 
          (Token
            id: Id.Lit_Chars
            val: '\tc4=$(git rev-parse --verify HEAD) &&\n'
            span_id: 190
          ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:191) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o4\ta/c"\n' span_id:193) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:194) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:196) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:198) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:199) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:200) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:202)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 5' span_id:209))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\tgit checkout remove &&\n' span_id:216) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 217
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:219) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:220) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:221) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:222) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:223) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:224) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:225) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:226) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:227) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:228) 
          (Token id:Id.Lit_Chars val:'\n' span_id:229) (Token id:Id.Lit_Chars val:'\trm -f b &&\n' span_id:230) 
          (Token id:Id.Lit_Chars val:'\techo remove-conflict >a &&\n' span_id:231) (Token id:Id.Lit_Chars val:'\n' span_id:232) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\tgit rm b &&\n' span_id:234) 
          (Token id:Id.Lit_Chars val:'\to5=$(git hash-object a) &&\n' span_id:235) (Token id:Id.Lit_Chars val:'\n' span_id:236) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\tgit commit -m "remove removes b and modifies a" &&\n' span_id:238) 
          (Token
            id: Id.Lit_Chars
            val: '\tc5=$(git rev-parse --verify HEAD) &&\n'
            span_id: 239
          ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:241) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o5\ta"\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:243) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:244) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 0\ta"\n' span_id:245) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:246) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:247) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:248) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:249) (Token id:Id.Lit_Chars val:'\n' span_id:250)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 6' span_id:257))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:261) (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\trm -rf [abcd] &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tgit checkout df-3 &&\n' span_id:264) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 265
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:267) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:269) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:271) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:273) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:275) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\n' span_id:277) (Token id:Id.Lit_Chars val:'\trm -fr d && echo df-3 >d && git add d &&\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'\to6=$(git hash-object d) &&\n' span_id:279) (Token id:Id.Lit_Chars val:'\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:281) (Token id:Id.Lit_Chars val:'\tgit commit -m "df-3 makes d" &&\n' span_id:282) 
          (Token
            id: Id.Lit_Chars
            val: '\tc6=$(git rev-parse --verify HEAD) &&\n'
            span_id: 283
          ) (Token id:Id.Lit_Chars val:'\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n' span_id:284) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:285) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\ta"\n' span_id:286) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:288) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o6\td"\n' span_id:289) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta"\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:291) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:292) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 0\td"\n' span_id:293) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:294) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:295)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 7' span_id:302))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:306) (Token id:Id.Lit_Chars val:'\n' span_id:307) 
          (Token id:Id.Lit_Chars val:'\tgit checkout submod &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\tgit rm d/e &&\n' span_id:309) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\tgit commit -m "remove d/e" &&\n' span_id:311) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit update-index --add --cacheinfo 160000 $c1 d &&\n'
            span_id: 312
          ) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:313) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "make d/ a submodule"\n' span_id:314)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 8' span_id:321))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) 
          (Token id:Id.Lit_Chars val:'\tgit checkout rename &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\tgit mv a e &&\n' span_id:327) 
          (Token id:Id.Lit_Chars val:'\tgit add e &&\n' span_id:328) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:329) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "rename a->e" &&\n' span_id:330) (Token id:Id.Lit_Chars val:'\tc7=$(git rev-parse --verify HEAD) &&\n' span_id:331) 
          (Token id:Id.Lit_Chars val:'\tgit checkout rename-ln &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\tgit mv a e &&\n' span_id:333) 
          (Token id:Id.Lit_Chars val:'\ttest_ln_s_add e a &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:335) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "rename a->e, symlink a->e" &&\n'
            span_id: 336
          ) (Token id:Id.Lit_Chars val:'\toln=$(printf e | git hash-object --stdin)\n' span_id:337)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup 9' span_id:344))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:348) 
          (Token id:Id.Lit_Chars val:'\tgit checkout copy &&\n' span_id:349) (Token id:Id.Lit_Chars val:'\tcp a e &&\n' span_id:350) 
          (Token id:Id.Lit_Chars val:'\tgit add e &&\n' span_id:351) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:352) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "copy a->e"\n' span_id:353)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple' span_id:360))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) (Token id:Id.Lit_Chars val:'\n' span_id:365) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c2" &&\n' span_id:367) 
          (Token id:Id.Lit_Chars val:'\n' span_id:368) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c2" "$c1"\n'
            span_id: 369
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive result' span_id:376))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:380) (Token id:Id.Lit_Chars val:'\n' span_id:381) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:382) (Token id:Id.Lit_Chars val:'\t(\n' span_id:383) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:384) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o2 2\ta"\n' span_id:385) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\ta"\n' span_id:386) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:387) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:388) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:389) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:391) 
          (Token id:Id.Lit_Chars val:'\n' span_id:392)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'fail if the index has unresolved entries' span_id:399))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:403) (Token id:Id.Lit_Chars val:'\n' span_id:404) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:405) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:406) 
          (Token id:Id.Lit_Chars val:'\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge "$c5" &&\n' span_id:408) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge "$c5" 2> out &&\n'
            span_id: 409
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "not possible because you have unmerged files" out &&\n'
            span_id: 410
          ) (Token id:Id.Lit_Chars val:'\tgit add -u &&\n' span_id:411) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge "$c5" 2> out &&\n'
            span_id: 412
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "You have not concluded your merge" out &&\n'
            span_id: 413
          ) (Token id:Id.Lit_Chars val:'\trm -f .git/MERGE_HEAD &&\n' span_id:414) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git merge "$c5" 2> out &&\n'
            span_id: 415
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_i18ngrep "Your local changes to the following files would be overwritten by merge:" out\n'
            span_id: 416
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive remove conflict' span_id:423))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:427) (Token id:Id.Lit_Chars val:'\n' span_id:428) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:430) 
          (Token id:Id.Lit_Chars val:'\n' span_id:431) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c5"\n'
            span_id: 432
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive remove conflict' span_id:439))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:443) (Token id:Id.Lit_Chars val:'\n' span_id:444) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\t(\n' span_id:446) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:447) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\ta"\n' span_id:448) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 3\ta"\n' span_id:449) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:450) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:451) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:452) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:453) (Token id:Id.Lit_Chars val:'\n' span_id:454)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f simple' span_id:461))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:465) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:467) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:468) (Token id:Id.Lit_Chars val:'\n' span_id:469) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-recursive "$c0" -- "$c1" "$c3"\n'
            span_id: 470
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-recursive result' span_id:477))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:481) (Token id:Id.Lit_Chars val:'\n' span_id:482) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\t(\n' span_id:484) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:485) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o3 0\tb/c"\n' span_id:486) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:487) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:488) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:490) 
          (Token id:Id.Lit_Chars val:'\n' span_id:491)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:498))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:502) (Token id:Id.Lit_Chars val:'\n' span_id:503) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:505) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:506) (Token id:Id.Lit_Chars val:'\n' span_id:507) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c4"\n'
            span_id: 508
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:515))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:519) (Token id:Id.Lit_Chars val:'\n' span_id:520) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:521) (Token id:Id.Lit_Chars val:'\t(\n' span_id:522) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:523) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\ta"\n' span_id:524) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:525) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:526) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:527) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:528) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:529) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:530) 
          (Token id:Id.Lit_Chars val:'\n' span_id:531)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict the other way' span_id:538))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:542) (Token id:Id.Lit_Chars val:'\n' span_id:543) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:545) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c4" &&\n' span_id:546) (Token id:Id.Lit_Chars val:'\n' span_id:547) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c4" "$c1"\n'
            span_id: 548
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge-recursive d/f conflict result the other way'
            span_id: 555
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:559) (Token id:Id.Lit_Chars val:'\n' span_id:560) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:561) (Token id:Id.Lit_Chars val:'\t(\n' span_id:562) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\ta"\n' span_id:563) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\ta"\n' span_id:564) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o4 0\ta/c"\n' span_id:565) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:566) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:567) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:568) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:569) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:570) 
          (Token id:Id.Lit_Chars val:'\n' span_id:571)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:578))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:582) (Token id:Id.Lit_Chars val:'\n' span_id:583) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:585) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c1" &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\n' span_id:587) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c1" "$c6"\n'
            span_id: 588
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:595))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:599) (Token id:Id.Lit_Chars val:'\n' span_id:600) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:601) (Token id:Id.Lit_Chars val:'\t(\n' span_id:602) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:603) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:604) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:605) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 3\td"\n' span_id:606) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\td/e"\n' span_id:607) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 2\td/e"\n' span_id:608) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:609) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:610) 
          (Token id:Id.Lit_Chars val:'\n' span_id:611)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict' span_id:618))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:622) (Token id:Id.Lit_Chars val:'\n' span_id:623) 
          (Token id:Id.Lit_Chars val:'\trm -fr [abcd] &&\n' span_id:624) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:625) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f "$c6" &&\n' span_id:626) (Token id:Id.Lit_Chars val:'\n' span_id:627) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_expect_code 1 git merge-recursive "$c0" -- "$c6" "$c1"\n'
            span_id: 628
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive d/f conflict result' span_id:635))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:639) (Token id:Id.Lit_Chars val:'\n' span_id:640) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:641) (Token id:Id.Lit_Chars val:'\t(\n' span_id:642) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:643) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:644) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:645) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o6 2\td"\n' span_id:646) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 1\td/e"\n' span_id:647) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 3\td/e"\n' span_id:648) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:650) 
          (Token id:Id.Lit_Chars val:'\n' span_id:651)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reset and 3-way merge' span_id:658))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:662) (Token id:Id.Lit_Chars val:'\n' span_id:663) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard "$c2" &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\tgit read-tree -m "$c0" "$c2" "$c1"\n' span_id:665) 
          (Token id:Id.Lit_Chars val:'\n' span_id:666)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reset and bind merge' span_id:673))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:677) (Token id:Id.Lit_Chars val:'\n' span_id:678) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard master &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=M/ master &&\n' span_id:680) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:681) (Token id:Id.Lit_Chars val:'\t(\n' span_id:682) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:683) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:684) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:685) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:686) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:687) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:688) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:689) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:690) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:691) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:692) 
          (Token id:Id.Lit_Chars val:'\n' span_id:693) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=a1/ master &&\n' span_id:694) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:695) (Token id:Id.Lit_Chars val:'\t(\n' span_id:696) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:697) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:698) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:699) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:700) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:701) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/a"\n' span_id:702) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/b"\n' span_id:703) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/c"\n' span_id:704) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/d/e"\n' span_id:705) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:706) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:707) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:708) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:709) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:710) 
          (Token id:Id.Lit_Chars val:'\n' span_id:711) (Token id:Id.Lit_Chars val:'\tgit read-tree --prefix=z/ master &&\n' span_id:712) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:713) (Token id:Id.Lit_Chars val:'\t(\n' span_id:714) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/a"\n' span_id:715) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/b"\n' span_id:716) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tM/c"\n' span_id:717) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tM/d/e"\n' span_id:718) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta"\n' span_id:719) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/a"\n' span_id:720) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/b"\n' span_id:721) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\ta1/c"\n' span_id:722) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\ta1/d/e"\n' span_id:723) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:724) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:725) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\td/e"\n' span_id:726) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tz/a"\n' span_id:727) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tz/b"\n' span_id:728) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tz/c"\n' span_id:729) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o1 0\tz/d/e"\n' span_id:730) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:731) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:732) 
          (Token id:Id.Lit_Chars val:'\n' span_id:733)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge-recursive w/ empty work tree - ours has rename'
            span_id: 740
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:744) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:745) (Token id:Id.Lit_Chars val:'\t\tGIT_WORK_TREE="$PWD/ours-has-rename-work" &&\n' span_id:746) 
          (Token id:Id.Lit_Chars val:'\t\texport GIT_WORK_TREE &&\n' span_id:747) (Token id:Id.Lit_Chars val:'\t\tGIT_INDEX_FILE="$PWD/ours-has-rename-index" &&\n' span_id:748) 
          (Token id:Id.Lit_Chars val:'\t\texport GIT_INDEX_FILE &&\n' span_id:749) (Token id:Id.Lit_Chars val:'\t\tmkdir "$GIT_WORK_TREE" &&\n' span_id:750) 
          (Token id:Id.Lit_Chars val:'\t\tgit read-tree -i -m $c7 &&\n' span_id:751) (Token id:Id.Lit_Chars val:'\t\tgit update-index --ignore-missing --refresh &&\n' span_id:752) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit merge-recursive $c0 -- $c7 $c3 &&\n'
            span_id: 753
          ) (Token id:Id.Lit_Chars val:'\t\tgit ls-files -s >actual-files\n' span_id:754) 
          (Token id:Id.Lit_Chars val:'\t) 2>actual-err &&\n' span_id:755) (Token id:Id.Lit_Chars val:'\t>expected-err &&\n' span_id:756) 
          (Token id:Id.Lit_Chars val:'\tcat >expected-files <<-EOF &&\n' span_id:757) (Token id:Id.Lit_Chars val:'\t100644 $o3 0\tb/c\n' span_id:758) 
          (Token id:Id.Lit_Chars val:'\t100644 $o0 0\tc\n' span_id:759) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\td/e\n' span_id:760) 
          (Token id:Id.Lit_Chars val:'\t100644 $o0 0\te\n' span_id:761) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:762) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected-files actual-files &&\n'
            span_id: 763
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected-err actual-err\n' span_id:764)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge-recursive w/ empty work tree - theirs has rename'
            span_id: 771
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:775) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:776) (Token id:Id.Lit_Chars val:'\t\tGIT_WORK_TREE="$PWD/theirs-has-rename-work" &&\n' span_id:777) 
          (Token id:Id.Lit_Chars val:'\t\texport GIT_WORK_TREE &&\n' span_id:778) (Token id:Id.Lit_Chars val:'\t\tGIT_INDEX_FILE="$PWD/theirs-has-rename-index" &&\n' span_id:779) 
          (Token id:Id.Lit_Chars val:'\t\texport GIT_INDEX_FILE &&\n' span_id:780) (Token id:Id.Lit_Chars val:'\t\tmkdir "$GIT_WORK_TREE" &&\n' span_id:781) 
          (Token id:Id.Lit_Chars val:'\t\tgit read-tree -i -m $c3 &&\n' span_id:782) (Token id:Id.Lit_Chars val:'\t\tgit update-index --ignore-missing --refresh &&\n' span_id:783) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit merge-recursive $c0 -- $c3 $c7 &&\n'
            span_id: 784
          ) (Token id:Id.Lit_Chars val:'\t\tgit ls-files -s >actual-files\n' span_id:785) 
          (Token id:Id.Lit_Chars val:'\t) 2>actual-err &&\n' span_id:786) (Token id:Id.Lit_Chars val:'\t>expected-err &&\n' span_id:787) 
          (Token id:Id.Lit_Chars val:'\tcat >expected-files <<-EOF &&\n' span_id:788) (Token id:Id.Lit_Chars val:'\t100644 $o3 0\tb/c\n' span_id:789) 
          (Token id:Id.Lit_Chars val:'\t100644 $o0 0\tc\n' span_id:790) (Token id:Id.Lit_Chars val:'\t100644 $o0 0\td/e\n' span_id:791) 
          (Token id:Id.Lit_Chars val:'\t100644 $o0 0\te\n' span_id:792) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:793) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected-files actual-files &&\n'
            span_id: 794
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected-err actual-err\n' span_id:795)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge removes empty directories' span_id:802))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:806) (Token id:Id.Lit_Chars val:'\n' span_id:807) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard master &&\n' span_id:808) (Token id:Id.Lit_Chars val:'\tgit checkout -b rm &&\n' span_id:809) 
          (Token id:Id.Lit_Chars val:'\tgit rm d/e &&\n' span_id:810) (Token id:Id.Lit_Chars val:'\tgit commit -mremoved-d/e &&\n' span_id:811) 
          (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:812) (Token id:Id.Lit_Chars val:'\tgit merge -s recursive rm &&\n' span_id:813) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail test -d d\n' span_id:814)
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple w/submodule' span_id:821))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:825) (Token id:Id.Lit_Chars val:'\n' span_id:826) 
          (Token id:Id.Lit_Chars val:'\tgit checkout submod &&\n' span_id:827) (Token id:Id.Lit_Chars val:'\tgit merge remove\n' span_id:828)
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive simple w/submodule result' span_id:835))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:839) (Token id:Id.Lit_Chars val:'\n' span_id:840) 
          (Token id:Id.Lit_Chars val:'\tgit ls-files -s >actual &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\t(\n' span_id:842) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o5 0\ta"\n' span_id:843) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:844) 
          (Token id:Id.Lit_Chars val:'\t\techo "160000 $c1 0\td"\n' span_id:845) (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:846) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:847)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive copy vs. rename' span_id:854))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:858) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f copy &&\n' span_id:859) (Token id:Id.Lit_Chars val:'\tgit merge rename &&\n' span_id:860) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD && git ls-files -s ) >actual &&\n'
            span_id: 861
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:862) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:863) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:864) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:865) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\te"\n' span_id:866) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:867) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:868) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:869) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\te"\n' span_id:870) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:871) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:872)
        )
      }
    )
    (C {(test_expect_failure)} 
      {(SQ (Token id:Id.Lit_Chars val:'merge-recursive rename vs. rename/symlink' span_id:879))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:883) (Token id:Id.Lit_Chars val:'\n' span_id:884) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -f rename &&\n' span_id:885) (Token id:Id.Lit_Chars val:'\tgit merge rename-ln &&\n' span_id:886) 
          (Token
            id: Id.Lit_Chars
            val: '\t( git ls-tree -r HEAD ; git ls-files -s ) >actual &&\n'
            span_id: 887
          ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:888) 
          (Token id:Id.Lit_Chars val:'\t\techo "120000 blob $oln\ta"\n' span_id:889) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tb"\n' span_id:890) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\tc"\n' span_id:891) (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\td/e"\n' span_id:892) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 blob $o0\te"\n' span_id:893) (Token id:Id.Lit_Chars val:'\t\techo "120000 $oln 0\ta"\n' span_id:894) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tb"\n' span_id:895) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\tc"\n' span_id:896) 
          (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\td/e"\n' span_id:897) (Token id:Id.Lit_Chars val:'\t\techo "100644 $o0 0\te"\n' span_id:898) 
          (Token id:Id.Lit_Chars val:'\t) >expected &&\n' span_id:899) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:900)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'merging with triple rename across D/F conflict' span_id:907))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:911) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\tgit checkout -b main &&\n' span_id:913) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:914) (Token id:Id.Lit_Chars val:'\n' span_id:915) 
          (Token id:Id.Lit_Chars val:'\techo "just a file" >sub1 &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\tmkdir -p sub2 &&\n' span_id:917) 
          (Token id:Id.Lit_Chars val:'\techo content1 >sub2/file1 &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\techo content2 >sub2/file2 &&\n' span_id:919) 
          (Token id:Id.Lit_Chars val:'\techo content3 >sub2/file3 &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\tmkdir simple &&\n' span_id:921) 
          (Token id:Id.Lit_Chars val:'\techo base >simple/bar &&\n' span_id:922) (Token id:Id.Lit_Chars val:'\tgit add -A &&\n' span_id:923) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:924) (Token id:Id.Lit_Chars val:'\tgit commit -m base &&\n' span_id:925) 
          (Token id:Id.Lit_Chars val:'\n' span_id:926) (Token id:Id.Lit_Chars val:'\tgit checkout -b other &&\n' span_id:927) 
          (Token id:Id.Lit_Chars val:'\techo more >>simple/bar &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:929) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -a -m changesimplefile &&\n'
            span_id: 930
          ) (Token id:Id.Lit_Chars val:'\n' span_id:931) 
          (Token id:Id.Lit_Chars val:'\tgit checkout main &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\tgit rm sub1 &&\n' span_id:933) 
          (Token id:Id.Lit_Chars val:'\tgit mv sub2 sub1 &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:935) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m changefiletodir &&\n' span_id:936) (Token id:Id.Lit_Chars val:'\n' span_id:937) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:938) (Token id:Id.Lit_Chars val:'\tgit merge other\n' span_id:939)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'merge-recursive remembers the names of all base trees'
            span_id: 946
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:950) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\n' span_id:952) 
          (Token
            id: Id.Lit_Chars
            val: '\t# more trees than static slots used by oid_to_hex()\n'
            span_id: 953
          ) (Token id:Id.Lit_Chars val:'\tfor commit in $c0 $c2 $c4 $c5 $c6 $c7\n' span_id:954) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:955) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse "$commit^{tree}"\n' span_id:956) 
          (Token id:Id.Lit_Chars val:'\tdone >trees &&\n' span_id:957) (Token id:Id.Lit_Chars val:'\n' span_id:958) 
          (Token
            id: Id.Lit_Chars
            val: '\t# ignore the return code -- it only fails because the input is weird\n'
            span_id: 959
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&\n'
            span_id: 960
          ) (Token id:Id.Lit_Chars val:'\n' span_id:961) 
          (Token
            id: Id.Lit_Chars
            val: '\t# merge-recursive prints in reverse order, but we do not care\n'
            span_id: 962
          ) (Token id:Id.Lit_Chars val:'\tsort <trees >expect &&\n' span_id:963) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -n "s/^virtual //p" out | sort >actual &&\n'
            span_id: 964
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:965)
        )
      }
    )
    (C {(test_done)})
  ]
)