(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:'patching from inconvenient places' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:18))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) 
          (Token id:Id.Lit_Chars val:'\tcat >patch <<-\\EOF &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tdiff file.orig file\n' span_id:24) 
          (Token id:Id.Lit_Chars val:'\t--- a/file.orig\n' span_id:25) (Token id:Id.Lit_Chars val:'\t+++ b/file\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\t@@ -1 +1,2 @@\n' span_id:27) (Token id:Id.Lit_Chars val:'\t 1\n' span_id:28) (Token id:Id.Lit_Chars val:'\t+2\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:30) (Token id:Id.Lit_Chars val:'\tpatch="$(pwd)/patch" &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\n' span_id:32) (Token id:Id.Lit_Chars val:'\techo 1 >preimage &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" 1 2 >postimage &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\techo 3 >other &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m basis\n' span_id:38)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: subdir' span_id:45))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\treset_subdir() {\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tgit reset &&\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\t\tmkdir -p sub/dir/b &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\t\tmkdir -p objects &&\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\t\tcp "$1" file &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tcp "$1" objects/file &&\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\t\tcp "$1" sub/dir/file &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tcp "$1" sub/dir/b/file &&\n' span_id:57) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tgit add file sub/dir/file sub/dir/b/file objects/file &&\n'
            span_id: 58
          ) (Token id:Id.Lit_Chars val:'\t\tcp "$2" file &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\t\tcp "$2" sub/dir/file &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\tcp "$2" sub/dir/b/file &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\t\tcp "$2" objects/file &&\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\ttest_might_fail git update-index --refresh -q\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\t}\n' span_id:64)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply from subdir of toplevel' span_id:71))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\treset_subdir other preimage &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:78) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:79) 
          (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:80) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected sub/dir/file\n' span_id:82)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply --cached from subdir of toplevel' span_id:89))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:93) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:94) (Token id:Id.Lit_Chars val:'\tcp other expected.working &&\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:96) (Token id:Id.Lit_Chars val:'\t(\n' span_id:97) 
          (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:98) (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:99) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:100) (Token id:Id.Lit_Chars val:'\tgit show :sub/dir/file >actual &&\n' span_id:101) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:102) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working sub/dir/file\n' span_id:103)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply --index from subdir of toplevel' span_id:110))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:117) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:118) 
          (Token
            id: Id.Lit_Chars
            val: '\t\ttest_must_fail git apply --index "$patch"\n'
            span_id: 119
          ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\treset_subdir other preimage &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\t(\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git apply --index "$patch"\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\treset_subdir preimage preimage &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:127) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'\t\tgit apply --index "$patch"\n' span_id:129) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:130) 
          (Token id:Id.Lit_Chars val:'\tgit show :sub/dir/file >actual &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected sub/dir/file\n' span_id:133)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply half-broken patch from subdir of toplevel' span_id:140))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:145) (Token id:Id.Lit_Chars val:'\t\tcd sub/dir &&\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\t\ttest_must_fail git apply <<-EOF\n' span_id:147) (Token id:Id.Lit_Chars val:'\t\t--- sub/dir/file\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\t\t+++ sub/dir/file\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\t@@ -1,0 +1,0 @@\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\t\t--- file_in_root\n' span_id:151) (Token id:Id.Lit_Chars val:'\t\t+++ file_in_root\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\t\t@@ -1,0 +1,0 @@\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:154) (Token id:Id.Lit_Chars val:'\t)\n' span_id:155)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply from .git dir' span_id:162))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tcp preimage .git/file &&\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\tcp preimage .git/objects/file &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t(\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\t\tcd .git &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\ttest_cmp expected .git/file\n' span_id:174)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply from subdir of .git dir' span_id:181))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tcp preimage .git/file &&\n' span_id:187) 
          (Token id:Id.Lit_Chars val:'\tcp preimage .git/objects/file &&\n' span_id:188) (Token id:Id.Lit_Chars val:'\t(\n' span_id:189) 
          (Token id:Id.Lit_Chars val:'\t\tcd .git/objects &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tgit apply "$patch"\n' span_id:191) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:192) (Token id:Id.Lit_Chars val:'\ttest_cmp expected .git/objects/file\n' span_id:193)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply --cached from .git dir' span_id:200))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\tcp other expected.working &&\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'\tcp other .git/file &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\t(\n' span_id:209) (Token id:Id.Lit_Chars val:'\t\tcd .git &&\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:211) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:212) 
          (Token id:Id.Lit_Chars val:'\tgit show :file >actual &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working file &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.working .git/file\n' span_id:216)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply --cached from subdir of .git dir' span_id:223))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\tcp postimage expected &&\n' span_id:228) (Token id:Id.Lit_Chars val:'\tcp preimage expected.subdir &&\n' span_id:229) 
          (Token id:Id.Lit_Chars val:'\tcp other .git/file &&\n' span_id:230) (Token id:Id.Lit_Chars val:'\tcp other .git/objects/file &&\n' span_id:231) 
          (Token id:Id.Lit_Chars val:'\treset_subdir preimage other &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\t(\n' span_id:233) 
          (Token id:Id.Lit_Chars val:'\t\tcd .git/objects &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\t\tgit apply --cached "$patch"\n' span_id:235) 
          (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tgit show :file >actual &&\n' span_id:237) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show :objects/file >actual.subdir &&\n'
            span_id: 238
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:239) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expected.subdir actual.subdir\n'
            span_id: 240
          )
        )
      }
    )
    (C {(test_done)})
  ]
)