(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 checkout-index --prefix test.\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16) 
                (Token
                  id: Id.Lit_Chars
                  val: 'This test makes sure that --prefix option works as advertised, and\n'
                  span_id: 17
                ) 
                (Token
                  id: Id.Lit_Chars
                  val: 'also verifies that such leading path may contain symlinks, unlike\n'
                  span_id: 18
                ) (Token id:Id.Lit_Chars val:'the GIT controlled paths.\n' span_id:19)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:31))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo frotz >path0 &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\techo rezrov >path1/file1 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit update-index --add path0 path1/file1\n' span_id:39)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'have symlink in place where dir is expected.' span_id:48))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tmkdir path2 &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\tln -s path2 path1 &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\tgit checkout-index -f -a &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\ttest ! -h path1 && test -d path1 &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\ttest -f path1/file1 && test ! -f path2/file1\n' span_id:58)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=path2/' span_id:65))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tmkdir path2 &&\n' span_id:71) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit checkout-index --prefix=path2/ -f -a &&\n'
            span_id: 72
          ) (Token id:Id.Lit_Chars val:'\ttest -f path2/path0 &&\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\ttest -f path2/path1/file1 &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:76)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp-' span_id:83))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:90) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1 &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:93)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'use --prefix=tmp- but with a conflicting file and dir'
            span_id: 100
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\techo nitfol >tmp-path1 &&\n' span_id:106) 
          (Token id:Id.Lit_Chars val:'\tmkdir tmp-path0 &&\n' span_id:107) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1 &&\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\ttest ! -f path0 &&\n' span_id:111) (Token id:Id.Lit_Chars val:'\ttest ! -f path1/file1\n' span_id:112)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp/orary/ where tmp is a symlink' span_id:121))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 tmp1/orary &&\n' span_id:127) 
          (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/orary/ -f -a &&\n' span_id:129) 
          (Token id:Id.Lit_Chars val:'\ttest -d tmp1/orary &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary/path0 &&\n' span_id:131) 
          (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary/path1/file1 &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\ttest -h tmp\n' span_id:133)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp/orary- where tmp is a symlink' span_id:142))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:147) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 &&\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/orary- -f -a &&\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary-path0 &&\n' span_id:151) (Token id:Id.Lit_Chars val:'\ttest -f tmp1/orary-path1/file1 &&\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'\ttest -h tmp\n' span_id:153)
        )
      }
    )
    (C {(test_expect_success)} {(SYMLINKS)} 
      {(SQ (Token id:Id.Lit_Chars val:'use --prefix=tmp- where tmp-path1 is a symlink' span_id:162))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:166) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\tmkdir tmp1 &&\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'\tln -s tmp1 tmp-path1 &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp- -f -a &&\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'\ttest -f tmp-path0 &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\ttest ! -h tmp-path1 &&\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'\ttest -d tmp-path1 &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\ttest -f tmp-path1/file1\n' span_id:174)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'apply filter from working tree .gitattributes with --prefix'
            span_id: 181
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:185) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:186) (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:187) 
          (Token id:Id.Lit_Chars val:'\tmkdir tmp &&\n' span_id:188) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config filter.replace-all.smudge "sed -e s/./,/g" &&\n'
            span_id: 189
          ) (Token id:Id.Lit_Chars val:'\tgit config filter.replace-all.clean cat &&\n' span_id:190) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config filter.replace-all.required true &&\n'
            span_id: 191
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "file1 filter=replace-all" >path1/.gitattributes &&\n'
            span_id: 192
          ) (Token id:Id.Lit_Chars val:'\tgit checkout-index --prefix=tmp/ -f -a &&\n' span_id:193) 
          (Token id:Id.Lit_Chars val:'\techo frotz >expected &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\ttest_cmp expected tmp/path0 &&\n' span_id:195) 
          (Token id:Id.Lit_Chars val:'\techo ,,,,,, >expected &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\ttest_cmp expected tmp/path1/file1\n' span_id:197)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'apply CRLF filter from working tree .gitattributes with --prefix'
            span_id: 204
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'\trm -fr path0 path1 path2 tmp* &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\tmkdir path1 &&\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'\tmkdir tmp &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\techo "file1 eol=crlf" >path1/.gitattributes &&\n' span_id:212) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit checkout-index --prefix=tmp/ -f -a &&\n'
            span_id: 213
          ) (Token id:Id.Lit_Chars val:'\techo rezrovQ >expected &&\n' span_id:214) 
          (Token
            id: Id.Lit_Chars
            val: '\ttr \\\\015 Q <tmp/path1/file1 >actual &&\n'
            span_id: 215
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:216)
        )
      }
    )
    (C {(test_done)})
  ]
)