(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: 'Test cherry-pick with directory/file conflicts'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'Initialize repository' span_id:17))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) 
          (Token id:Id.Lit_Chars val:'\tmkdir a &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\t>a/f &&\n' span_id:23) 
          (Token id:Id.Lit_Chars val:'\tgit add a &&\n' span_id:24) (Token id:Id.Lit_Chars val:'\tgit commit -m a\n' span_id:25)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Setup rename across paths each below D/F conflicts'
            span_id: 32
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:36) 
          (Token id:Id.Lit_Chars val:'\tmkdir b &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add ../a b/a &&\n' span_id:38) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m b &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\n' span_id:40) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -b branch &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\trm b/a &&\n' span_id:42) 
          (Token id:Id.Lit_Chars val:'\tgit mv a b/a &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\ttest_ln_s_add b/a a &&\n' span_id:44) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m swap &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\n' span_id:46) (Token id:Id.Lit_Chars val:'\t>f1 &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\tgit add f1 &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tgit commit -m f1\n' span_id:49)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Cherry-pick succeeds with rename across D/F conflicts'
            span_id: 56
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit cherry-pick branch\n' span_id:63)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Setup rename with file on one side matching directory name on other'
            span_id: 70
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit checkout --orphan nick-testcase &&\n'
            span_id: 75
          ) (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\n' span_id:77) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\tgit add empty &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\tgit commit -m "Empty file" &&\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'\tgit checkout -b simple &&\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\tmv empty file &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\tmkdir empty &&\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\tmv file empty &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\tgit add empty/file &&\n' span_id:86) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Empty file under empty dir" &&\n'
            span_id: 87
          ) (Token id:Id.Lit_Chars val:'\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\techo content >newfile &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\tgit add newfile &&\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "New file"\n' span_id:91)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (resolve)'
            span_id: 98
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:103) (Token id:Id.Lit_Chars val:'\tgit checkout -q nick-testcase^0 &&\n' span_id:104) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cherry-pick --strategy=resolve simple\n'
            span_id: 105
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Cherry-pick succeeds with was_a_dir/file -> was_a_dir (recursive)'
            span_id: 112
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgit checkout -q nick-testcase^0 &&\n' span_id:118) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cherry-pick --strategy=recursive simple\n'
            span_id: 119
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Setup rename with file on one side matching different dirname on other'
            span_id: 126
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\tgit checkout --orphan mergeme &&\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\tgit rm -rf . &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\tmkdir othersub &&\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'\techo content > sub/file &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\techo foo > othersub/whatever &&\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'\tgit add -A &&\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit commit -m "Common commit" &&\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'\n' span_id:141) (Token id:Id.Lit_Chars val:'\tgit rm -rf othersub &&\n' span_id:142) 
          (Token id:Id.Lit_Chars val:'\tgit mv sub/file othersub &&\n' span_id:143) (Token id:Id.Lit_Chars val:'\tgit commit -m "Commit to merge" &&\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\n' span_id:145) (Token id:Id.Lit_Chars val:'\tgit checkout -b newhead mergeme~1 &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t>independent-change &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\tgit add independent-change &&\n' span_id:148) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "Completely unrelated change"\n'
            span_id: 149
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Cherry-pick with rename to different D/F conflict succeeds (resolve)'
            span_id: 156
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\tgit checkout -q newhead^0 &&\n' span_id:162) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cherry-pick --strategy=resolve mergeme\n'
            span_id: 163
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'Cherry-pick with rename to different D/F conflict succeeds (recursive)'
            span_id: 170
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\tgit checkout -q newhead^0 &&\n' span_id:176) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cherry-pick --strategy=recursive mergeme\n'
            span_id: 177
          )
        )
      }
    )
    (C {(test_done)})
  ]
)