(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:'git merge-tree' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:28) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "initial" "initial-file" "initial"\n'
            span_id: 29
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file add A, !B' span_id:36))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:41) (Token id:Id.Lit_Chars val:'added in remote\n' span_id:42) 
          (Token
            id: Id.Lit_Chars
            val: '  their  100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 43
          ) (Token id:Id.Lit_Chars val:'@@ -0,0 +1 @@\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'+AAA\n' span_id:45) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:46) (Token id:Id.Lit_Chars val:'\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\ttest_commit "add-a-not-b" "ONE" "AAA" &&\n' span_id:49) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial initial add-a-not-b >actual &&\n'
            span_id: 50
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:51)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file add !A, B' span_id:58))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:63) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:64) (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\ttest_commit "add-not-a-b" "ONE" "AAA" &&\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial add-not-a-b initial >actual &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:69)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file add A, B (same)' span_id:76))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:81) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\ttest_commit "add-a-b-same-A" "ONE" "AAA" &&\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:86) (Token id:Id.Lit_Chars val:'\ttest_commit "add-a-b-same-B" "ONE" "AAA" &&\n' span_id:87) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial add-a-b-same-A add-a-b-same-B >actual &&\n'
            span_id: 88
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:89)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file add A, B (different)' span_id:96))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:101) (Token id:Id.Lit_Chars val:'added in both\n' span_id:102) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 103
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n'
            span_id: 104
          ) (Token id:Id.Lit_Chars val:'@@ -1 +1,5 @@\n' span_id:105) 
          (Token id:Id.Lit_Chars val:'+<<<<<<< .our\n' span_id:106) (Token id:Id.Lit_Chars val:' AAA\n' span_id:107) (Token id:Id.Lit_Chars val:'+=======\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'+BBB\n' span_id:109) (Token id:Id.Lit_Chars val:'+>>>>>>> .their\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:111) (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\ttest_commit "add-a-b-diff-A" "ONE" "AAA" &&\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\ttest_commit "add-a-b-diff-B" "ONE" "BBB" &&\n' span_id:116) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial add-a-b-diff-A add-a-b-diff-B >actual &&\n'
            span_id: 117
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:118)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file change A, !B' span_id:125))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:130) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:131) (Token id:Id.Lit_Chars val:'\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-not-b" "initial-file" "BBB" &&\n' span_id:134) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial change-a-not-b initial >actual &&\n'
            span_id: 135
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:136)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file change !A, B' span_id:143))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:148) (Token id:Id.Lit_Chars val:'merged\n' span_id:149) 
          (Token
            id: Id.Lit_Chars
            val: '  result 100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file\n'
            span_id: 150
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n'
            span_id: 151
          ) (Token id:Id.Lit_Chars val:'@@ -1 +1 @@\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'-initial\n' span_id:153) (Token id:Id.Lit_Chars val:'+BBB\n' span_id:154) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\n' span_id:156) (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:157) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "change-not-a-b" "initial-file" "BBB" &&\n'
            span_id: 158
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial initial change-not-a-b >actual &&\n'
            span_id: 159
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:160)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file change A, B (same)' span_id:167))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:172) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:173) (Token id:Id.Lit_Chars val:'\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-b-same-A" "initial-file" "AAA" &&\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-b-same-B" "initial-file" "AAA" &&\n' span_id:178) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial change-a-b-same-A change-a-b-same-B >actual &&\n'
            span_id: 179
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:180)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'file change A, B (different)' span_id:187))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:192) (Token id:Id.Lit_Chars val:'changed in both\n' span_id:193) 
          (Token
            id: Id.Lit_Chars
            val: '  base   100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n'
            span_id: 194
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d initial-file\n'
            span_id: 195
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 initial-file\n'
            span_id: 196
          ) (Token id:Id.Lit_Chars val:'@@ -1 +1,5 @@\n' span_id:197) 
          (Token id:Id.Lit_Chars val:'+<<<<<<< .our\n' span_id:198) (Token id:Id.Lit_Chars val:' AAA\n' span_id:199) (Token id:Id.Lit_Chars val:'+=======\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'+BBB\n' span_id:201) (Token id:Id.Lit_Chars val:'+>>>>>>> .their\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:203) (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-b-diff-A" "initial-file" "AAA" &&\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-b-diff-B" "initial-file" "BBB" &&\n' span_id:208) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial change-a-b-diff-A change-a-b-diff-B >actual &&\n'
            span_id: 209
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:210)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file change A, B (mixed)' span_id:217))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:221) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:222) (Token id:Id.Lit_Chars val:'changed in both\n' span_id:223) 
          (Token
            id: Id.Lit_Chars
            val: '  base   100644 f4f1f998c7776568c4ff38f516d77fef9399b5a7 ONE\n'
            span_id: 224
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 af14c2c3475337c73759d561ef70b59e5c731176 ONE\n'
            span_id: 225
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  their  100644 372d761493f524d44d59bd24700c3bdf914c973c ONE\n'
            span_id: 226
          ) (Token id:Id.Lit_Chars val:'@@ -7,7 +7,11 @@\n' span_id:227) 
          (Token id:Id.Lit_Chars val:' AAA\n' span_id:228) (Token id:Id.Lit_Chars val:' AAA\n' span_id:229) (Token id:Id.Lit_Chars val:' AAA\n' span_id:230) 
          (Token id:Id.Lit_Chars val:'+<<<<<<< .our\n' span_id:231) (Token id:Id.Lit_Chars val:' BBB\n' span_id:232) (Token id:Id.Lit_Chars val:'+=======\n' span_id:233) 
          (Token id:Id.Lit_Chars val:'+CCC\n' span_id:234) (Token id:Id.Lit_Chars val:'+>>>>>>> .their\n' span_id:235) 
          (Token id:Id.Lit_Chars val:' AAA\n' span_id:236) (Token id:Id.Lit_Chars val:' AAA\n' span_id:237) (Token id:Id.Lit_Chars val:' AAA\n' span_id:238) 
          (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:239) (Token id:Id.Lit_Chars val:'\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-b-mix-base" "ONE" "\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'AAA\n' span_id:243) (Token id:Id.Lit_Chars val:'AAA\n' span_id:244) (Token id:Id.Lit_Chars val:'AAA\n' span_id:245) 
          (Token id:Id.Lit_Chars val:'AAA\n' span_id:246) (Token id:Id.Lit_Chars val:'AAA\n' span_id:247) (Token id:Id.Lit_Chars val:'AAA\n' span_id:248) 
          (Token id:Id.Lit_Chars val:'AAA\n' span_id:249) (Token id:Id.Lit_Chars val:'AAA\n' span_id:250) (Token id:Id.Lit_Chars val:'AAA\n' span_id:251) 
          (Token id:Id.Lit_Chars val:'AAA\n' span_id:252) (Token id:Id.Lit_Chars val:'AAA\n' span_id:253) (Token id:Id.Lit_Chars val:'AAA\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'AAA\n' span_id:255) (Token id:Id.Lit_Chars val:'AAA\n' span_id:256) (Token id:Id.Lit_Chars val:'AAA" &&\n' span_id:257) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "change-a-b-mix-A" "ONE" \\\n'
            span_id: 258
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t"$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/BBB/;}" <ONE)" &&\n'
            span_id: 259
          ) (Token id:Id.Lit_Chars val:'\tgit reset --hard change-a-b-mix-base &&\n' span_id:260) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "change-a-b-mix-B" "ONE" \\\n'
            span_id: 261
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t"$(sed -e "1{s/AAA/BBB/;}" -e "10{s/AAA/CCC/;}" <ONE)" &&\n'
            span_id: 262
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree change-a-b-mix-base change-a-b-mix-A change-a-b-mix-B \\\n'
            span_id: 263
          ) (Token id:Id.Lit_Chars val:'\t\t>actual &&\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:265)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file remove A, !B' span_id:272))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:277) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:278) (Token id:Id.Lit_Chars val:'\n' span_id:279) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:280) (Token id:Id.Lit_Chars val:'\ttest_commit "rm-a-not-b-base" "ONE" "AAA" &&\n' span_id:281) 
          (Token id:Id.Lit_Chars val:'\tgit rm ONE &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tgit commit -m "rm-a-not-b" &&\n' span_id:283) 
          (Token id:Id.Lit_Chars val:'\tgit tag "rm-a-not-b" &&\n' span_id:284) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree rm-a-not-b-base rm-a-not-b rm-a-not-b-base >actual &&\n'
            span_id: 285
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:286)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file remove !A, B' span_id:293))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:298) (Token id:Id.Lit_Chars val:'removed in remote\n' span_id:299) 
          (Token
            id: Id.Lit_Chars
            val: '  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 300
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 301
          ) (Token id:Id.Lit_Chars val:'@@ -1 +0,0 @@\n' span_id:302) 
          (Token id:Id.Lit_Chars val:'-AAA\n' span_id:303) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:304) (Token id:Id.Lit_Chars val:'\n' span_id:305) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\ttest_commit "rm-not-a-b-base" "ONE" "AAA" &&\n' span_id:307) 
          (Token id:Id.Lit_Chars val:'\tgit rm ONE &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\tgit commit -m "rm-not-a-b" &&\n' span_id:309) 
          (Token id:Id.Lit_Chars val:'\tgit tag "rm-not-a-b" &&\n' span_id:310) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree rm-a-not-b-base rm-a-not-b-base rm-a-not-b >actual &&\n'
            span_id: 311
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:312)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file remove A, B (same)' span_id:319))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:323) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:324) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:325) (Token id:Id.Lit_Chars val:'\n' span_id:326) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\ttest_commit "rm-a-b-base" "ONE" "AAA" &&\n' span_id:328) 
          (Token id:Id.Lit_Chars val:'\tgit rm ONE &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\tgit commit -m "rm-a-b" &&\n' span_id:330) 
          (Token id:Id.Lit_Chars val:'\tgit tag "rm-a-b" &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\tgit merge-tree rm-a-b-base rm-a-b rm-a-b >actual &&\n' span_id:332) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:333)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file change A, remove B' span_id:340))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:344) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:345) (Token id:Id.Lit_Chars val:'removed in remote\n' span_id:346) 
          (Token
            id: Id.Lit_Chars
            val: '  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 347
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  our    100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n'
            span_id: 348
          ) (Token id:Id.Lit_Chars val:'@@ -1 +0,0 @@\n' span_id:349) 
          (Token id:Id.Lit_Chars val:'-BBB\n' span_id:350) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:351) (Token id:Id.Lit_Chars val:'\n' span_id:352) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:353) (Token id:Id.Lit_Chars val:'\ttest_commit "change-a-rm-b-base" "ONE" "AAA" &&\n' span_id:354) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "change-a-rm-b-A" "ONE" "BBB" &&\n'
            span_id: 355
          ) (Token id:Id.Lit_Chars val:'\tgit reset --hard change-a-rm-b-base &&\n' span_id:356) 
          (Token id:Id.Lit_Chars val:'\tgit rm ONE &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\tgit commit -m "change-a-rm-b-B" &&\n' span_id:358) 
          (Token id:Id.Lit_Chars val:'\tgit tag "change-a-rm-b-B" &&\n' span_id:359) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree change-a-rm-b-base change-a-rm-b-A change-a-rm-b-B \\\n'
            span_id: 360
          ) (Token id:Id.Lit_Chars val:'\t\t>actual &&\n' span_id:361) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:362)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'file remove A, change B' span_id:369))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:373) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<\\EXPECTED &&\n' span_id:374) (Token id:Id.Lit_Chars val:'removed in local\n' span_id:375) 
          (Token
            id: Id.Lit_Chars
            val: '  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d ONE\n'
            span_id: 376
          ) 
          (Token
            id: Id.Lit_Chars
            val: '  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 ONE\n'
            span_id: 377
          ) (Token id:Id.Lit_Chars val:'EXPECTED\n' span_id:378) (Token id:Id.Lit_Chars val:'\n' span_id:379) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\ttest_commit "rm-a-change-b-base" "ONE" "AAA" &&\n' span_id:381) 
          (Token id:Id.Lit_Chars val:'\n' span_id:382) (Token id:Id.Lit_Chars val:'\tgit rm ONE &&\n' span_id:383) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "rm-a-change-b-A" &&\n' span_id:384) (Token id:Id.Lit_Chars val:'\tgit tag "rm-a-change-b-A" &&\n' span_id:385) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit reset --hard rm-a-change-b-base &&\n'
            span_id: 386
          ) (Token id:Id.Lit_Chars val:'\ttest_commit "rm-a-change-b-B" "ONE" "BBB" &&\n' span_id:387) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree rm-a-change-b-base rm-a-change-b-A rm-a-change-b-B \\\n'
            span_id: 388
          ) (Token id:Id.Lit_Chars val:'\t\t>actual &&\n' span_id:389) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:390)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'tree add A, B (same)' span_id:397))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:401) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:402) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:403) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:404) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:405) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "add sub/file" "sub/file" "file" add-tree-A &&\n'
            span_id: 406
          ) (Token id:Id.Lit_Chars val:'\tgit merge-tree initial add-tree-A add-tree-A >actual &&\n' span_id:407) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:408)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'tree add A, B (different)' span_id:415))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:419) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\tadded in both\n' span_id:421) 
          (Token
            id: Id.Lit_Chars
            val: '\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n'
            span_id: 422
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t  their  100644 ba629238ca89489f2b350e196ca445e09d8bb834 sub/file\n'
            span_id: 423
          ) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,5 @@\n' span_id:424) 
          (Token id:Id.Lit_Chars val:'\t+<<<<<<< .our\n' span_id:425) (Token id:Id.Lit_Chars val:'\t AAA\n' span_id:426) 
          (Token id:Id.Lit_Chars val:'\t+=======\n' span_id:427) (Token id:Id.Lit_Chars val:'\t+BBB\n' span_id:428) 
          (Token id:Id.Lit_Chars val:'\t+>>>>>>> .their\n' span_id:429) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:430) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:431) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:432) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "add sub/file" "sub/file" "AAA" add-tree-a-b-A &&\n'
            span_id: 433
          ) (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:434) 
          (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:435) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "add sub/file" "sub/file" "BBB" add-tree-a-b-B &&\n'
            span_id: 436
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial add-tree-a-b-A add-tree-a-b-B >actual &&\n'
            span_id: 437
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:438)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'tree unchanged A, removed B' span_id:445))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:449) 
          (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:450) (Token id:Id.Lit_Chars val:'\tremoved in remote\n' span_id:451) 
          (Token
            id: Id.Lit_Chars
            val: '\t  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n'
            span_id: 452
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d sub/file\n'
            span_id: 453
          ) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:454) 
          (Token id:Id.Lit_Chars val:'\t-AAA\n' span_id:455) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:456) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:458) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "add sub/file" "sub/file" "AAA" tree-remove-b-initial &&\n'
            span_id: 459
          ) (Token id:Id.Lit_Chars val:'\tgit rm sub/file &&\n' span_id:460) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:461) (Token id:Id.Lit_Chars val:'\tgit commit -m "remove sub/file" &&\n' span_id:462) 
          (Token id:Id.Lit_Chars val:'\tgit tag tree-remove-b-B &&\n' span_id:463) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit merge-tree tree-remove-b-initial tree-remove-b-initial tree-remove-b-B >actual &&\n'
            span_id: 464
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:465)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'turn file to tree' span_id:472))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:476) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:477) (Token id:Id.Lit_Chars val:'\trm initial-file &&\n' span_id:478) 
          (Token id:Id.Lit_Chars val:'\tmkdir initial-file &&\n' span_id:479) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "turn-file-to-tree" "initial-file/ONE" "CCC" &&\n'
            span_id: 480
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree initial initial turn-file-to-tree >actual &&\n'
            span_id: 481
          ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:482) 
          (Token id:Id.Lit_Chars val:'\tadded in remote\n' span_id:483) 
          (Token
            id: Id.Lit_Chars
            val: '\t  their  100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 initial-file/ONE\n'
            span_id: 484
          ) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:485) 
          (Token id:Id.Lit_Chars val:'\t+CCC\n' span_id:486) (Token id:Id.Lit_Chars val:'\tremoved in remote\n' span_id:487) 
          (Token
            id: Id.Lit_Chars
            val: '\t  base   100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n'
            span_id: 488
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t  our    100644 e79c5e8f964493290a409888d5413a737e8e5dd5 initial-file\n'
            span_id: 489
          ) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:490) 
          (Token id:Id.Lit_Chars val:'\t-initial\n' span_id:491) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:492) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:493)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'turn tree to file' span_id:500))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:504) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard initial &&\n' span_id:505) (Token id:Id.Lit_Chars val:'\tmkdir dir &&\n' span_id:506) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_commit "add-tree" "dir/path" "AAA" &&\n'
            span_id: 507
          ) (Token id:Id.Lit_Chars val:'\ttest_commit "add-another-tree" "dir/another" "BBB" &&\n' span_id:508) 
          (Token id:Id.Lit_Chars val:'\trm -fr dir &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\ttest_commit "make-file" "dir" "CCC" &&\n' span_id:510) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit merge-tree add-tree add-another-tree make-file >actual &&\n'
            span_id: 511
          ) (Token id:Id.Lit_Chars val:'\tcat >expect <<-\\EOF &&\n' span_id:512) 
          (Token id:Id.Lit_Chars val:'\tremoved in remote\n' span_id:513) 
          (Token
            id: Id.Lit_Chars
            val: '\t  base   100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path\n'
            span_id: 514
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t  our    100644 43d5a8ed6ef6c00ff775008633f95787d088285d dir/path\n'
            span_id: 515
          ) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:516) 
          (Token id:Id.Lit_Chars val:'\t-AAA\n' span_id:517) (Token id:Id.Lit_Chars val:'\tadded in remote\n' span_id:518) 
          (Token
            id: Id.Lit_Chars
            val: '\t  their  100644 43aa4fdec31eb92e1fdc2f0ce6ea9ddb7c32bcf7 dir\n'
            span_id: 519
          ) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:520) 
          (Token id:Id.Lit_Chars val:'\t+CCC\n' span_id:521) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:522) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:523)
        )
      }
    )
    (C {(test_done)})
  ]
)