(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(DQ ('merges with unrelated index changes'))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup trivial merges' span_id:61))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\ttest_seq 1 10 >a &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:67) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m A &&\n' span_id:68) (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tgit branch A &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit branch B &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tgit branch C &&\n' span_id:72) (Token id:Id.Lit_Chars val:'\tgit branch D &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\tgit branch E &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tgit checkout B &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\techo b >b &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\techo 11 >>a &&\n' span_id:78) (Token id:Id.Lit_Chars val:'\tgit add a b &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m B &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\tgit checkout C &&\n' span_id:82) (Token id:Id.Lit_Chars val:'\techo c >c &&\n' span_id:83) 
          (Token id:Id.Lit_Chars val:'\tgit add c &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m C &&\n' span_id:85) 
          (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit checkout D &&\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\ttest_seq 2 10 >a &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\techo d >d &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\tgit add a d &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m D &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\tgit checkout E &&\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit mv a subdir/a &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\techo e >subdir/e &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\tgit add subdir &&\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'\ttest_tick && git commit -m E\n' span_id:98)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'ff update' span_id:105))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:110) (Token id:Id.Lit_Chars val:'\tgit checkout A^0 &&\n' span_id:111) 
          (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:113) 
          (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit merge E^0 &&\n' span_id:115) 
          (Token id:Id.Lit_Chars val:'\n' span_id:116) (Token id:Id.Lit_Chars val:'\ttest_must_fail git rev-parse HEAD:random_file &&\n' span_id:117) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest "$(git diff --name-only --cached E)" = "random_file"\n'
            span_id: 118
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'ff update, important file modified' span_id:125))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\tgit checkout A^0 &&\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:133) 
          (Token id:Id.Lit_Chars val:'\ttouch subdir/e &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\tgit add subdir/e &&\n' span_id:135) 
          (Token id:Id.Lit_Chars val:'\n' span_id:136) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge E^0\n' span_id:137)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'resolve, trivial' span_id:144))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\n' span_id:153) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s resolve C^0\n' span_id:154)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'resolve, non-trivial' span_id:161))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:167) 
          (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s resolve D^0\n' span_id:171)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:recursive span_id:178))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\n' span_id:185) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:186) 
          (Token id:Id.Lit_Chars val:'\n' span_id:187) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s recursive C^0\n' span_id:188)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'octopus, unrelated file touched' span_id:195))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:199) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:200) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:201) 
          (Token id:Id.Lit_Chars val:'\n' span_id:202) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:203) 
          (Token id:Id.Lit_Chars val:'\n' span_id:204) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C^0 D^0\n' span_id:205)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'octopus, related file removed' span_id:212))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'\n' span_id:219) (Token id:Id.Lit_Chars val:'\tgit rm b &&\n' span_id:220) (Token id:Id.Lit_Chars val:'\n' span_id:221) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C^0 D^0\n' span_id:222)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'octopus, related file modified' span_id:229))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:233) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\techo 12 >>a && git add a &&\n' span_id:237) 
          (Token id:Id.Lit_Chars val:'\n' span_id:238) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge C^0 D^0\n' span_id:239)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:ours span_id:246))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:250) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:252) 
          (Token id:Id.Lit_Chars val:'\n' span_id:253) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'\n' span_id:255) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s ours C^0\n' span_id:256)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:subtree span_id:263))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:267) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\tgit checkout B^0 &&\n' span_id:269) 
          (Token id:Id.Lit_Chars val:'\n' span_id:270) (Token id:Id.Lit_Chars val:'\ttouch random_file && git add random_file &&\n' span_id:271) 
          (Token id:Id.Lit_Chars val:'\n' span_id:272) (Token id:Id.Lit_Chars val:'\ttest_must_fail git merge -s subtree E^0\n' span_id:273)
        )
      }
    )
    (C {(test_done)})
  ]
)