(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 blame corner cases' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pick_fc)
          op: assign_op.Equal
          rhs: 
            {
              (SQ 
                (Token
                  id: Id.Lit_Chars
                  val: 's/^[0-9a-f^]* *\\([^ ]*\\) *(\\([^ ]*\\) .*/\\1-\\2/'
                  span_id: 16
                )
              )
            }
          spids: [14]
        )
      ]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:25) (Token id:Id.Lit_Chars val:'\n' span_id:26) 
          (Token id:Id.Lit_Chars val:'\techo A A A A A >one &&\n' span_id:27) (Token id:Id.Lit_Chars val:'\techo B B B B B >two &&\n' span_id:28) 
          (Token id:Id.Lit_Chars val:'\techo C C C C C >tres &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\techo ABC >mouse &&\n' span_id:30) 
          (Token id:Id.Lit_Chars val:'\tfor i in 1 2 3 4 5 6 7 8 9\n' span_id:31) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:32) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\tdone >nine_lines &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tfor i in 1 2 3 4 5 6 7 8 9 a\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:36) (Token id:Id.Lit_Chars val:'\t\techo $i\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tdone >ten_lines &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit add one two tres mouse nine_lines ten_lines &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME=Initial git commit -m Initial &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tcat one >uno &&\n' span_id:43) 
          (Token id:Id.Lit_Chars val:'\tmv two dos &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\tcat one >>tres &&\n' span_id:45) 
          (Token id:Id.Lit_Chars val:'\techo DEF >>mouse &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit add uno dos tres mouse &&\n' span_id:47) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:48) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME=Second git commit -a -m Second &&\n' span_id:49) 
          (Token id:Id.Lit_Chars val:'\n' span_id:50) (Token id:Id.Lit_Chars val:'\techo GHIJK >>mouse &&\n' span_id:51) 
          (Token id:Id.Lit_Chars val:'\tgit add mouse &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:53) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_NAME=Third git commit -m Third &&\n'
            span_id: 54
          ) (Token id:Id.Lit_Chars val:'\n' span_id:55) 
          (Token id:Id.Lit_Chars val:'\tcat mouse >cow &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\tgit add cow &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME=Fourth git commit -m Fourth &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\n' span_id:60) (Token id:Id.Lit_Chars val:'\tcat >cow <<-\\EOF &&\n' span_id:61) 
          (Token id:Id.Lit_Chars val:'\tABC\n' span_id:62) (Token id:Id.Lit_Chars val:'\tDEF\n' span_id:63) (Token id:Id.Lit_Chars val:'\tXXXX\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\tGHIJK\n' span_id:65) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tgit add cow &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:68) 
          (Token
            id: Id.Lit_Chars
            val: '\tGIT_AUTHOR_NAME=Fifth git commit -m Fifth\n'
            span_id: 69
          )
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight copy without -C' span_id:76))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) (Token id:Id.Lit_Chars val:'\n' span_id:81) 
          (Token id:Id.Lit_Chars val:'\tgit blame uno | grep Second\n' span_id:82) (Token id:Id.Lit_Chars val:'\n' span_id:83)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight move without -C' span_id:90))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:94) (Token id:Id.Lit_Chars val:'\n' span_id:95) 
          (Token id:Id.Lit_Chars val:'\tgit blame dos | grep Initial\n' span_id:96) (Token id:Id.Lit_Chars val:'\n' span_id:97)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight copy with -C' span_id:104))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:108) (Token id:Id.Lit_Chars val:'\n' span_id:109) 
          (Token id:Id.Lit_Chars val:'\tgit blame -C1 uno | grep Second\n' span_id:110) (Token id:Id.Lit_Chars val:'\n' span_id:111)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight move with -C' span_id:118))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:122) (Token id:Id.Lit_Chars val:'\n' span_id:123) 
          (Token id:Id.Lit_Chars val:'\tgit blame -C1 dos | grep Initial\n' span_id:124) (Token id:Id.Lit_Chars val:'\n' span_id:125)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight copy with -C -C' span_id:132))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:136) (Token id:Id.Lit_Chars val:'\n' span_id:137) 
          (Token id:Id.Lit_Chars val:'\tgit blame -C -C1 uno | grep Initial\n' span_id:138) (Token id:Id.Lit_Chars val:'\n' span_id:139)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'straight move with -C -C' span_id:146))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:150) (Token id:Id.Lit_Chars val:'\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\tgit blame -C -C1 dos | grep Initial\n' span_id:152) (Token id:Id.Lit_Chars val:'\n' span_id:153)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'append without -C' span_id:160))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:'\n' span_id:165) 
          (Token id:Id.Lit_Chars val:'\tgit blame -L2 tres | grep Second\n' span_id:166) (Token id:Id.Lit_Chars val:'\n' span_id:167)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'append with -C' span_id:174))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:178) (Token id:Id.Lit_Chars val:'\n' span_id:179) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -L2 -C1 tres | grep Second\n'
            span_id: 180
          ) (Token id:Id.Lit_Chars val:'\n' span_id:181)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'append with -C -C' span_id:188))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:192) (Token id:Id.Lit_Chars val:'\n' span_id:193) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -L2 -C -C1 tres | grep Second\n'
            span_id: 194
          ) (Token id:Id.Lit_Chars val:'\n' span_id:195)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'append with -C -C -C' span_id:202))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\n' span_id:207) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -L2 -C -C -C1 tres | grep Initial\n'
            span_id: 208
          ) (Token id:Id.Lit_Chars val:'\n' span_id:209)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'blame wholesale copy' span_id:216))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:220) (Token id:Id.Lit_Chars val:'\n' span_id:221) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -f -C -C1 HEAD^ -- cow | sed -e "$pick_fc" >current &&\n'
            span_id: 222
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:223) 
          (Token id:Id.Lit_Chars val:'\tmouse-Initial\n' span_id:224) (Token id:Id.Lit_Chars val:'\tmouse-Second\n' span_id:225) 
          (Token id:Id.Lit_Chars val:'\tmouse-Third\n' span_id:226) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:227) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:228) (Token id:Id.Lit_Chars val:'\n' span_id:229)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame wholesale copy and more' span_id:236))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:240) (Token id:Id.Lit_Chars val:'\n' span_id:241) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -f -C -C1 HEAD -- cow | sed -e "$pick_fc" >current &&\n'
            span_id: 242
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:243) 
          (Token id:Id.Lit_Chars val:'\tmouse-Initial\n' span_id:244) (Token id:Id.Lit_Chars val:'\tmouse-Second\n' span_id:245) 
          (Token id:Id.Lit_Chars val:'\tcow-Fifth\n' span_id:246) (Token id:Id.Lit_Chars val:'\tmouse-Third\n' span_id:247) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:248) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:249) 
          (Token id:Id.Lit_Chars val:'\n' span_id:250)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame wholesale copy and more in the index' span_id:257))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:261) (Token id:Id.Lit_Chars val:'\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'\tcat >horse <<-\\EOF &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tABC\n' span_id:264) (Token id:Id.Lit_Chars val:'\tDEF\n' span_id:265) 
          (Token id:Id.Lit_Chars val:'\tXXXX\n' span_id:266) (Token id:Id.Lit_Chars val:'\tYYYY\n' span_id:267) (Token id:Id.Lit_Chars val:'\tGHIJK\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:269) (Token id:Id.Lit_Chars val:'\tgit add horse &&\n' span_id:270) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "git rm -f horse" &&\n'
            span_id: 271
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -f -C -C1 -- horse | sed -e "$pick_fc" >current &&\n'
            span_id: 272
          ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:273) 
          (Token id:Id.Lit_Chars val:'\tmouse-Initial\n' span_id:274) (Token id:Id.Lit_Chars val:'\tmouse-Second\n' span_id:275) 
          (Token id:Id.Lit_Chars val:'\tcow-Fifth\n' span_id:276) (Token id:Id.Lit_Chars val:'\thorse-Not\n' span_id:277) 
          (Token id:Id.Lit_Chars val:'\tmouse-Third\n' span_id:278) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:279) 
          (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:280) (Token id:Id.Lit_Chars val:'\n' span_id:281)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'blame during cherry-pick with file rename conflict'
            span_id: 288
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:292) (Token id:Id.Lit_Chars val:'\n' span_id:293) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_when_finished "git reset --hard && git checkout master" &&\n'
            span_id: 294
          ) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD~3 &&\n' span_id:295) 
          (Token id:Id.Lit_Chars val:'\techo MOUSE >> mouse &&\n' span_id:296) (Token id:Id.Lit_Chars val:'\tgit mv mouse rodent &&\n' span_id:297) 
          (Token id:Id.Lit_Chars val:'\tgit add rodent &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME=Rodent git commit -m "rodent" &&\n' span_id:299) 
          (Token id:Id.Lit_Chars val:'\tgit checkout --detach master &&\n' span_id:300) (Token id:Id.Lit_Chars val:'\t(git cherry-pick HEAD@{1} || test $? -eq 1) &&\n' span_id:301) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit show HEAD@{1}:rodent > rodent &&\n'
            span_id: 302
          ) (Token id:Id.Lit_Chars val:'\tgit add rodent &&\n' span_id:303) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit blame -f -C -C1 rodent | sed -e "$pick_fc" >current &&\n'
            span_id: 304
          ) (Token id:Id.Lit_Chars val:'\tcat current &&\n' span_id:305) 
          (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\tmouse-Initial\n' span_id:307) 
          (Token id:Id.Lit_Chars val:'\tmouse-Second\n' span_id:308) (Token id:Id.Lit_Chars val:'\trodent-Not\n' span_id:309) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:310) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:311)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame path that used to be a directory' span_id:318))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:322) 
          (Token id:Id.Lit_Chars val:'\tmkdir path &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\techo A A A A A >path/file &&\n' span_id:324) 
          (Token id:Id.Lit_Chars val:'\techo B B B B B >path/elif &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit add path &&\n' span_id:326) 
          (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:327) (Token id:Id.Lit_Chars val:'\tgit commit -m "path was a directory" &&\n' span_id:328) 
          (Token id:Id.Lit_Chars val:'\trm -fr path &&\n' span_id:329) (Token id:Id.Lit_Chars val:'\techo A A A A A >path &&\n' span_id:330) 
          (Token id:Id.Lit_Chars val:'\tgit add path &&\n' span_id:331) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:332) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit commit -m "path is a regular file" &&\n'
            span_id: 333
          ) (Token id:Id.Lit_Chars val:'\tgit blame HEAD^.. -- path\n' span_id:334)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame to a commit with no author name' span_id:341))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:345) 
          (Token id:Id.Lit_Chars val:'  TREE=$(git rev-parse HEAD:) &&\n' span_id:346) (Token id:Id.Lit_Chars val:'  cat >badcommit <<EOF &&\n' span_id:347) 
          (Token id:Id.Lit_Chars val:'tree $TREE\n' span_id:348) (Token id:Id.Lit_Chars val:'author <noname> 1234567890 +0000\n' span_id:349) 
          (Token
            id: Id.Lit_Chars
            val: 'committer David Reiss <dreiss@facebook.com> 1234567890 +0000\n'
            span_id: 350
          ) (Token id:Id.Lit_Chars val:'\n' span_id:351) (Token id:Id.Lit_Chars val:'some message\n' span_id:352) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:353) (Token id:Id.Lit_Chars val:'  COMMIT=$(git hash-object -t commit -w badcommit) &&\n' span_id:354) 
          (Token
            id: Id.Lit_Chars
            val: '  git --no-pager blame $COMMIT -- uno >/dev/null\n'
            span_id: 355
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame -L with invalid start' span_id:362))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:366) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git blame -L5 tres 2>errors &&\n'
            span_id: 367
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "has only 2 lines" errors\n' span_id:368)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame -L with invalid end' span_id:375))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:379) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git blame -L1,5 tres 2>errors &&\n'
            span_id: 380
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "has only 2 lines" errors\n' span_id:381)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame parses <end> part of -L' span_id:388))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:392) 
          (Token id:Id.Lit_Chars val:'\tgit blame -L1,1 tres >out &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tcat out &&\n' span_id:394) 
          (Token id:Id.Lit_Chars val:'\ttest $(wc -l < out) -eq 1\n' span_id:395)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'indent of line numbers, nine lines' span_id:402))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:406) 
          (Token id:Id.Lit_Chars val:'\tgit blame nine_lines >actual &&\n' span_id:407) (Token id:Id.Lit_Chars val:'\ttest $(grep -c "  " actual) = 0\n' span_id:408)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'indent of line numbers, ten lines' span_id:415))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:419) 
          (Token id:Id.Lit_Chars val:'\tgit blame ten_lines >actual &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\ttest $(grep -c "  " actual) = 9\n' span_id:421)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'setup file with CRLF newlines' span_id:428))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:432) 
          (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf false &&\n' span_id:433) (Token id:Id.Lit_Chars val:'\tprintf "testcase\\n" >crlffile &&\n' span_id:434) 
          (Token id:Id.Lit_Chars val:'\tgit add crlffile &&\n' span_id:435) (Token id:Id.Lit_Chars val:'\tgit commit -m testcase &&\n' span_id:436) 
          (Token id:Id.Lit_Chars val:'\tprintf "testcase\\r\\n" >crlffile\n' span_id:437)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame file with CRLF core.autocrlf true' span_id:444))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:448) 
          (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\tgit blame crlffile >actual &&\n' span_id:450) 
          (Token id:Id.Lit_Chars val:'\tgrep "A U Thor" actual\n' span_id:451)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame file with CRLF attributes text' span_id:458))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:462) 
          (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf false &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\techo "crlffile text" >.gitattributes &&\n' span_id:464) 
          (Token id:Id.Lit_Chars val:'\tgit blame crlffile >actual &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\tgrep "A U Thor" actual\n' span_id:466)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'blame file with CRLF core.autocrlf=true' span_id:473))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:477) 
          (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf false &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\tprintf "testcase\\r\\n" >crlfinrepo &&\n' span_id:479) 
          (Token id:Id.Lit_Chars val:'\t>.gitattributes &&\n' span_id:480) (Token id:Id.Lit_Chars val:'\tgit add crlfinrepo &&\n' span_id:481) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m "add crlfinrepo" &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\tgit config core.autocrlf true &&\n' span_id:483) 
          (Token id:Id.Lit_Chars val:'\tmv crlfinrepo tmp &&\n' span_id:484) (Token id:Id.Lit_Chars val:'\tgit checkout crlfinrepo &&\n' span_id:485) 
          (Token id:Id.Lit_Chars val:'\trm tmp &&\n' span_id:486) (Token id:Id.Lit_Chars val:'\tgit blame crlfinrepo >actual &&\n' span_id:487) 
          (Token id:Id.Lit_Chars val:'\tgrep "A U Thor" actual\n' span_id:488)
        )
      }
    )
    (C {(test_done)})
  ]
)