(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:'diff --dirstat tests' span_id:6))}
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:54))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\tmkdir unchanged &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\tmkdir changed &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\tmkdir rearranged &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\tmkdir src &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tmkdir src/copy &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\tmkdir src/copy/unchanged &&\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\tmkdir src/copy/changed &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tmkdir src/copy/rearranged &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tmkdir src/move &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\tmkdir src/move/unchanged &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\tmkdir src/move/changed &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\tmkdir src/move/rearranged &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >unchanged/text &&\n' span_id:71) (Token id:Id.Lit_Chars val:'unchanged       line #0\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'unchanged       line #1\n' span_id:73) (Token id:Id.Lit_Chars val:'unchanged       line #2\n' span_id:74) 
          (Token id:Id.Lit_Chars val:'unchanged       line #3\n' span_id:75) (Token id:Id.Lit_Chars val:'unchanged       line #4\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'unchanged       line #5\n' span_id:77) (Token id:Id.Lit_Chars val:'unchanged       line #6\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'unchanged       line #7\n' span_id:79) (Token id:Id.Lit_Chars val:'unchanged       line #8\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'unchanged       line #9\n' span_id:81) (Token id:Id.Lit_Chars val:'EOF\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >changed/text &&\n' span_id:83) (Token id:Id.Lit_Chars val:'changed         line #0\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'changed         line #1\n' span_id:85) (Token id:Id.Lit_Chars val:'changed         line #2\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'changed         line #3\n' span_id:87) (Token id:Id.Lit_Chars val:'changed         line #4\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'changed         line #5\n' span_id:89) (Token id:Id.Lit_Chars val:'changed         line #6\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'changed         line #7\n' span_id:91) (Token id:Id.Lit_Chars val:'changed         line #8\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'changed         line #9\n' span_id:93) (Token id:Id.Lit_Chars val:'EOF\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >rearranged/text &&\n' span_id:95) (Token id:Id.Lit_Chars val:'rearranged      line #0\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'rearranged      line #1\n' span_id:97) (Token id:Id.Lit_Chars val:'rearranged      line #2\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'rearranged      line #3\n' span_id:99) (Token id:Id.Lit_Chars val:'rearranged      line #4\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'rearranged      line #5\n' span_id:101) (Token id:Id.Lit_Chars val:'rearranged      line #6\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'rearranged      line #7\n' span_id:103) (Token id:Id.Lit_Chars val:'rearranged      line #8\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'rearranged      line #9\n' span_id:105) (Token id:Id.Lit_Chars val:'EOF\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat <<EOF >src/copy/unchanged/text &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'copy  unchanged line #0\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #1\n' span_id:109) (Token id:Id.Lit_Chars val:'copy  unchanged line #2\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #3\n' span_id:111) (Token id:Id.Lit_Chars val:'copy  unchanged line #4\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #5\n' span_id:113) (Token id:Id.Lit_Chars val:'copy  unchanged line #6\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #7\n' span_id:115) (Token id:Id.Lit_Chars val:'copy  unchanged line #8\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #9\n' span_id:117) (Token id:Id.Lit_Chars val:'EOF\n' span_id:118) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >src/copy/changed/text &&\n' span_id:119) (Token id:Id.Lit_Chars val:'copy    changed line #0\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'copy    changed line #1\n' span_id:121) (Token id:Id.Lit_Chars val:'copy    changed line #2\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'copy    changed line #3\n' span_id:123) (Token id:Id.Lit_Chars val:'copy    changed line #4\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'copy    changed line #5\n' span_id:125) (Token id:Id.Lit_Chars val:'copy    changed line #6\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'copy    changed line #7\n' span_id:127) (Token id:Id.Lit_Chars val:'copy    changed line #8\n' span_id:128) 
          (Token id:Id.Lit_Chars val:'copy    changed line #9\n' span_id:129) (Token id:Id.Lit_Chars val:'EOF\n' span_id:130) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat <<EOF >src/copy/rearranged/text &&\n'
            span_id: 131
          ) (Token id:Id.Lit_Chars val:'copy rearranged line #0\n' span_id:132) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #1\n' span_id:133) (Token id:Id.Lit_Chars val:'copy rearranged line #2\n' span_id:134) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #3\n' span_id:135) (Token id:Id.Lit_Chars val:'copy rearranged line #4\n' span_id:136) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #5\n' span_id:137) (Token id:Id.Lit_Chars val:'copy rearranged line #6\n' span_id:138) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #7\n' span_id:139) (Token id:Id.Lit_Chars val:'copy rearranged line #8\n' span_id:140) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #9\n' span_id:141) (Token id:Id.Lit_Chars val:'EOF\n' span_id:142) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat <<EOF >src/move/unchanged/text &&\n'
            span_id: 143
          ) (Token id:Id.Lit_Chars val:'move  unchanged line #0\n' span_id:144) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #1\n' span_id:145) (Token id:Id.Lit_Chars val:'move  unchanged line #2\n' span_id:146) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #3\n' span_id:147) (Token id:Id.Lit_Chars val:'move  unchanged line #4\n' span_id:148) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #5\n' span_id:149) (Token id:Id.Lit_Chars val:'move  unchanged line #6\n' span_id:150) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #7\n' span_id:151) (Token id:Id.Lit_Chars val:'move  unchanged line #8\n' span_id:152) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #9\n' span_id:153) (Token id:Id.Lit_Chars val:'EOF\n' span_id:154) 
          (Token id:Id.Lit_Chars val:'\tcat <<EOF >src/move/changed/text &&\n' span_id:155) (Token id:Id.Lit_Chars val:'move    changed line #0\n' span_id:156) 
          (Token id:Id.Lit_Chars val:'move    changed line #1\n' span_id:157) (Token id:Id.Lit_Chars val:'move    changed line #2\n' span_id:158) 
          (Token id:Id.Lit_Chars val:'move    changed line #3\n' span_id:159) (Token id:Id.Lit_Chars val:'move    changed line #4\n' span_id:160) 
          (Token id:Id.Lit_Chars val:'move    changed line #5\n' span_id:161) (Token id:Id.Lit_Chars val:'move    changed line #6\n' span_id:162) 
          (Token id:Id.Lit_Chars val:'move    changed line #7\n' span_id:163) (Token id:Id.Lit_Chars val:'move    changed line #8\n' span_id:164) 
          (Token id:Id.Lit_Chars val:'move    changed line #9\n' span_id:165) (Token id:Id.Lit_Chars val:'EOF\n' span_id:166) 
          (Token
            id: Id.Lit_Chars
            val: '\tcat <<EOF >src/move/rearranged/text &&\n'
            span_id: 167
          ) (Token id:Id.Lit_Chars val:'move rearranged line #0\n' span_id:168) 
          (Token id:Id.Lit_Chars val:'move rearranged line #1\n' span_id:169) (Token id:Id.Lit_Chars val:'move rearranged line #2\n' span_id:170) 
          (Token id:Id.Lit_Chars val:'move rearranged line #3\n' span_id:171) (Token id:Id.Lit_Chars val:'move rearranged line #4\n' span_id:172) 
          (Token id:Id.Lit_Chars val:'move rearranged line #5\n' span_id:173) (Token id:Id.Lit_Chars val:'move rearranged line #6\n' span_id:174) 
          (Token id:Id.Lit_Chars val:'move rearranged line #7\n' span_id:175) (Token id:Id.Lit_Chars val:'move rearranged line #8\n' span_id:176) 
          (Token id:Id.Lit_Chars val:'move rearranged line #9\n' span_id:177) (Token id:Id.Lit_Chars val:'EOF\n' span_id:178) 
          (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\tgit commit -m "initial" &&\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\tmkdir dst &&\n' span_id:181) (Token id:Id.Lit_Chars val:'\tmkdir dst/copy &&\n' span_id:182) 
          (Token id:Id.Lit_Chars val:'\tmkdir dst/copy/unchanged &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\tmkdir dst/copy/changed &&\n' span_id:184) 
          (Token id:Id.Lit_Chars val:'\tmkdir dst/copy/rearranged &&\n' span_id:185) (Token id:Id.Lit_Chars val:'\tmkdir dst/move &&\n' span_id:186) 
          (Token id:Id.Lit_Chars val:'\tmkdir dst/move/unchanged &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\tmkdir dst/move/changed &&\n' span_id:188) 
          (Token id:Id.Lit_Chars val:'\tmkdir dst/move/rearranged &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\tcat <<EOF >changed/text &&\n' span_id:190) 
          (Token id:Id.Lit_Chars val:'CHANGED XXXXXXX line #0\n' span_id:191) (Token id:Id.Lit_Chars val:'changed         line #1\n' span_id:192) 
          (Token id:Id.Lit_Chars val:'changed         line #2\n' span_id:193) (Token id:Id.Lit_Chars val:'changed         line #3\n' span_id:194) 
          (Token id:Id.Lit_Chars val:'changed         line #4\n' span_id:195) (Token id:Id.Lit_Chars val:'changed         line #5\n' span_id:196) 
          (Token id:Id.Lit_Chars val:'changed         line #6\n' span_id:197) (Token id:Id.Lit_Chars val:'changed         line #7\n' span_id:198) 
          (Token id:Id.Lit_Chars val:'changed         line #8\n' span_id:199) (Token id:Id.Lit_Chars val:'changed         line #9\n' span_id:200) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:201) (Token id:Id.Lit_Chars val:'\tcat <<EOF >rearranged/text &&\n' span_id:202) 
          (Token id:Id.Lit_Chars val:'rearranged      line #1\n' span_id:203) (Token id:Id.Lit_Chars val:'rearranged      line #0\n' span_id:204) 
          (Token id:Id.Lit_Chars val:'rearranged      line #2\n' span_id:205) (Token id:Id.Lit_Chars val:'rearranged      line #3\n' span_id:206) 
          (Token id:Id.Lit_Chars val:'rearranged      line #4\n' span_id:207) (Token id:Id.Lit_Chars val:'rearranged      line #5\n' span_id:208) 
          (Token id:Id.Lit_Chars val:'rearranged      line #6\n' span_id:209) (Token id:Id.Lit_Chars val:'rearranged      line #7\n' span_id:210) 
          (Token id:Id.Lit_Chars val:'rearranged      line #8\n' span_id:211) (Token id:Id.Lit_Chars val:'rearranged      line #9\n' span_id:212) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:213) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/copy/unchanged/text &&\n' span_id:214) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #0\n' span_id:215) (Token id:Id.Lit_Chars val:'copy  unchanged line #1\n' span_id:216) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #2\n' span_id:217) (Token id:Id.Lit_Chars val:'copy  unchanged line #3\n' span_id:218) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #4\n' span_id:219) (Token id:Id.Lit_Chars val:'copy  unchanged line #5\n' span_id:220) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #6\n' span_id:221) (Token id:Id.Lit_Chars val:'copy  unchanged line #7\n' span_id:222) 
          (Token id:Id.Lit_Chars val:'copy  unchanged line #8\n' span_id:223) (Token id:Id.Lit_Chars val:'copy  unchanged line #9\n' span_id:224) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:225) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/copy/changed/text &&\n' span_id:226) 
          (Token id:Id.Lit_Chars val:'copy XXXCHANGED line #0\n' span_id:227) (Token id:Id.Lit_Chars val:'copy    changed line #1\n' span_id:228) 
          (Token id:Id.Lit_Chars val:'copy    changed line #2\n' span_id:229) (Token id:Id.Lit_Chars val:'copy    changed line #3\n' span_id:230) 
          (Token id:Id.Lit_Chars val:'copy    changed line #4\n' span_id:231) (Token id:Id.Lit_Chars val:'copy    changed line #5\n' span_id:232) 
          (Token id:Id.Lit_Chars val:'copy    changed line #6\n' span_id:233) (Token id:Id.Lit_Chars val:'copy    changed line #7\n' span_id:234) 
          (Token id:Id.Lit_Chars val:'copy    changed line #8\n' span_id:235) (Token id:Id.Lit_Chars val:'copy    changed line #9\n' span_id:236) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:237) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/copy/rearranged/text &&\n' span_id:238) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #1\n' span_id:239) (Token id:Id.Lit_Chars val:'copy rearranged line #0\n' span_id:240) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #2\n' span_id:241) (Token id:Id.Lit_Chars val:'copy rearranged line #3\n' span_id:242) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #4\n' span_id:243) (Token id:Id.Lit_Chars val:'copy rearranged line #5\n' span_id:244) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #6\n' span_id:245) (Token id:Id.Lit_Chars val:'copy rearranged line #7\n' span_id:246) 
          (Token id:Id.Lit_Chars val:'copy rearranged line #8\n' span_id:247) (Token id:Id.Lit_Chars val:'copy rearranged line #9\n' span_id:248) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:249) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/move/unchanged/text &&\n' span_id:250) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #0\n' span_id:251) (Token id:Id.Lit_Chars val:'move  unchanged line #1\n' span_id:252) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #2\n' span_id:253) (Token id:Id.Lit_Chars val:'move  unchanged line #3\n' span_id:254) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #4\n' span_id:255) (Token id:Id.Lit_Chars val:'move  unchanged line #5\n' span_id:256) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #6\n' span_id:257) (Token id:Id.Lit_Chars val:'move  unchanged line #7\n' span_id:258) 
          (Token id:Id.Lit_Chars val:'move  unchanged line #8\n' span_id:259) (Token id:Id.Lit_Chars val:'move  unchanged line #9\n' span_id:260) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:261) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/move/changed/text &&\n' span_id:262) 
          (Token id:Id.Lit_Chars val:'move XXXCHANGED line #0\n' span_id:263) (Token id:Id.Lit_Chars val:'move    changed line #1\n' span_id:264) 
          (Token id:Id.Lit_Chars val:'move    changed line #2\n' span_id:265) (Token id:Id.Lit_Chars val:'move    changed line #3\n' span_id:266) 
          (Token id:Id.Lit_Chars val:'move    changed line #4\n' span_id:267) (Token id:Id.Lit_Chars val:'move    changed line #5\n' span_id:268) 
          (Token id:Id.Lit_Chars val:'move    changed line #6\n' span_id:269) (Token id:Id.Lit_Chars val:'move    changed line #7\n' span_id:270) 
          (Token id:Id.Lit_Chars val:'move    changed line #8\n' span_id:271) (Token id:Id.Lit_Chars val:'move    changed line #9\n' span_id:272) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:273) (Token id:Id.Lit_Chars val:'\tcat <<EOF >dst/move/rearranged/text &&\n' span_id:274) 
          (Token id:Id.Lit_Chars val:'move rearranged line #1\n' span_id:275) (Token id:Id.Lit_Chars val:'move rearranged line #0\n' span_id:276) 
          (Token id:Id.Lit_Chars val:'move rearranged line #2\n' span_id:277) (Token id:Id.Lit_Chars val:'move rearranged line #3\n' span_id:278) 
          (Token id:Id.Lit_Chars val:'move rearranged line #4\n' span_id:279) (Token id:Id.Lit_Chars val:'move rearranged line #5\n' span_id:280) 
          (Token id:Id.Lit_Chars val:'move rearranged line #6\n' span_id:281) (Token id:Id.Lit_Chars val:'move rearranged line #7\n' span_id:282) 
          (Token id:Id.Lit_Chars val:'move rearranged line #8\n' span_id:283) (Token id:Id.Lit_Chars val:'move rearranged line #9\n' span_id:284) 
          (Token id:Id.Lit_Chars val:'EOF\n' span_id:285) (Token id:Id.Lit_Chars val:'\tgit add . &&\n' span_id:286) 
          (Token id:Id.Lit_Chars val:'\tgit rm -r src/move/unchanged &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\tgit rm -r src/move/changed &&\n' span_id:288) 
          (Token id:Id.Lit_Chars val:'\tgit rm -r src/move/rearranged &&\n' span_id:289) (Token id:Id.Lit_Chars val:'\tgit commit -m "changes" &&\n' span_id:290) 
          (Token id:Id.Lit_Chars val:'\tgit config diff.renames false\n' span_id:291)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:297)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 315
          stdin_parts: [
            ('1\t1\tchanged/text\n')
            ('10\t0\tdst/copy/changed/text\n')
            ('10\t0\tdst/copy/rearranged/text\n')
            ('10\t0\tdst/copy/unchanged/text\n')
            ('10\t0\tdst/move/changed/text\n')
            ('10\t0\tdst/move/rearranged/text\n')
            ('10\t0\tdst/move/unchanged/text\n')
            ('1\t1\trearranged/text\n')
            ('0\t10\tsrc/move/changed/text\n')
            ('0\t10\tsrc/move/rearranged/text\n')
            ('0\t10\tsrc/move/unchanged/text\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:300)
          fd: -1
          arg_word: {(expect_diff_stat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:319)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 334
          stdin_parts: [
            ('1\t1\tchanged/text\n')
            ('10\t0\tdst/copy/changed/text\n')
            ('10\t0\tdst/copy/rearranged/text\n')
            ('10\t0\tdst/copy/unchanged/text\n')
            ('1\t1\t{src => dst}/move/changed/text\n')
            ('1\t1\t{src => dst}/move/rearranged/text\n')
            ('0\t0\t{src => dst}/move/unchanged/text\n')
            ('1\t1\trearranged/text\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:322)
          fd: -1
          arg_word: {(expect_diff_stat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:338)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 353
          stdin_parts: [
            ('1\t1\tchanged/text\n')
            ('1\t1\t{src => dst}/copy/changed/text\n')
            ('1\t1\t{src => dst}/copy/rearranged/text\n')
            ('0\t0\t{src => dst}/copy/unchanged/text\n')
            ('1\t1\t{src => dst}/move/changed/text\n')
            ('1\t1\t{src => dst}/move/rearranged/text\n')
            ('0\t0\t{src => dst}/move/unchanged/text\n')
            ('1\t1\trearranged/text\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:341)
          fd: -1
          arg_word: {(expect_diff_stat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'sanity check setup (--numstat)' span_id:358))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:362) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --numstat HEAD^..HEAD >actual_diff_stat &&\n'
            span_id: 363
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_stat actual_diff_stat &&\n' span_id:364) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --numstat -M HEAD^..HEAD >actual_diff_stat_M &&\n'
            span_id: 365
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_stat_M actual_diff_stat_M &&\n' span_id:366) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --numstat -C -C HEAD^..HEAD >actual_diff_stat_CC &&\n'
            span_id: 367
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_stat_CC actual_diff_stat_CC\n' span_id:368)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:377)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 393
          stdin_parts: [
            ('  10.8% dst/copy/changed/\n')
            ('  10.8% dst/copy/rearranged/\n')
            ('  10.8% dst/copy/unchanged/\n')
            ('  10.8% dst/move/changed/\n')
            ('  10.8% dst/move/rearranged/\n')
            ('  10.8% dst/move/unchanged/\n')
            ('  10.8% src/move/changed/\n')
            ('  10.8% src/move/rearranged/\n')
            ('  10.8% src/move/unchanged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:380)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:400)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 412
          stdin_parts: [
            ('   5.8% changed/\n')
            ('  29.3% dst/copy/changed/\n')
            ('  29.3% dst/copy/rearranged/\n')
            ('  29.3% dst/copy/unchanged/\n')
            ('   5.8% dst/move/changed/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:403)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:419)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 429
          stdin_parts: [
            ('  32.6% changed/\n')
            ('  32.6% dst/copy/changed/\n')
            ('  32.6% dst/move/changed/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:422)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'various ways to misspell --dirstat' span_id:434))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:438) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git show --dirstat10 &&\n'
            span_id: 439
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git show --dirstat10,files &&\n' span_id:440) 
          (Token id:Id.Lit_Chars val:'\ttest_must_fail git show -X=20 &&\n' span_id:441) (Token id:Id.Lit_Chars val:'\ttest_must_fail git show -X=20,cumulative\n' span_id:442)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'vanilla --dirstat' span_id:449))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:453) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 454
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:455) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 456
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:457) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 458
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:459)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'vanilla -X' span_id:466))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:470) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 471
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:472) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 473
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:474) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 475
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:476)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'explicit defaults: --dirstat=changes,noncumulative,3'
            span_id: 483
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:487) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 488
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:489) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 490
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:491) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 492
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:493)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'explicit defaults: -Xchanges,noncumulative,3' span_id:500))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:504) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -Xchanges,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 505
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:506) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -Xchanges,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 507
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:508) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff -Xchanges,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 509
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:510)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'later options override earlier options:' span_id:517))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:521) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,10,cumulative,changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 522
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:523) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,10,cumulative,changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 524
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:525) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,10,cumulative,changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 526
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC &&\n'
            span_id: 527
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 528
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:529) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 530
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:531) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files --dirstat=10 --dirstat=cumulative --dirstat=changes --dirstat=noncumulative -X3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 532
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:533)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'non-defaults in config overridden by explicit defaults on command line'
            span_id: 540
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:544) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 545
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:546) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 547
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:548) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=files,cumulative,50 diff --dirstat=changes,noncumulative,3 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 549
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:550)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:556)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 574
          stdin_parts: [
            ('   2.1% changed/\n')
            ('  10.8% dst/copy/changed/\n')
            ('  10.8% dst/copy/rearranged/\n')
            ('  10.8% dst/copy/unchanged/\n')
            ('  10.8% dst/move/changed/\n')
            ('  10.8% dst/move/rearranged/\n')
            ('  10.8% dst/move/unchanged/\n')
            ('   0.0% rearranged/\n')
            ('  10.8% src/move/changed/\n')
            ('  10.8% src/move/rearranged/\n')
            ('  10.8% src/move/unchanged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:559)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:578)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 592
          stdin_parts: [
            ('   5.8% changed/\n')
            ('  29.3% dst/copy/changed/\n')
            ('  29.3% dst/copy/rearranged/\n')
            ('  29.3% dst/copy/unchanged/\n')
            ('   5.8% dst/move/changed/\n')
            ('   0.1% dst/move/rearranged/\n')
            ('   0.1% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:581)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:596)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 609
          stdin_parts: [
            ('  32.6% changed/\n')
            ('  32.6% dst/copy/changed/\n')
            ('   0.6% dst/copy/rearranged/\n')
            ('  32.6% dst/move/changed/\n')
            ('   0.6% dst/move/rearranged/\n')
            ('   0.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:599)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=0' span_id:614))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:618) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 619
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:620) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 621
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:622) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 623
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:624)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:-X0 span_id:631))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:635) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 636
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:637) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 638
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:639) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 640
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:641)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=0' span_id:648))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:652) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c diff.dirstat=0 diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 653
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:654) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c diff.dirstat=0 diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 655
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:656) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0 diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 657
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:658)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:664)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 686
          stdin_parts: [
            ('   2.1% changed/\n')
            ('  10.8% dst/copy/changed/\n')
            ('  10.8% dst/copy/rearranged/\n')
            ('  10.8% dst/copy/unchanged/\n')
            ('  32.5% dst/copy/\n')
            ('  10.8% dst/move/changed/\n')
            ('  10.8% dst/move/rearranged/\n')
            ('  10.8% dst/move/unchanged/\n')
            ('  32.5% dst/move/\n')
            ('  65.1% dst/\n')
            ('   0.0% rearranged/\n')
            ('  10.8% src/move/changed/\n')
            ('  10.8% src/move/rearranged/\n')
            ('  10.8% src/move/unchanged/\n')
            ('  32.5% src/move/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:667)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:690)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 707
          stdin_parts: [
            ('   5.8% changed/\n')
            ('  29.3% dst/copy/changed/\n')
            ('  29.3% dst/copy/rearranged/\n')
            ('  29.3% dst/copy/unchanged/\n')
            ('  88.0% dst/copy/\n')
            ('   5.8% dst/move/changed/\n')
            ('   0.1% dst/move/rearranged/\n')
            ('   5.9% dst/move/\n')
            ('  94.0% dst/\n')
            ('   0.1% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:693)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:711)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 727
          stdin_parts: [
            ('  32.6% changed/\n')
            ('  32.6% dst/copy/changed/\n')
            ('   0.6% dst/copy/rearranged/\n')
            ('  33.3% dst/copy/\n')
            ('  32.6% dst/move/changed/\n')
            ('   0.6% dst/move/rearranged/\n')
            ('  33.3% dst/move/\n')
            ('  66.6% dst/\n')
            ('   0.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:714)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=0 --cumulative' span_id:732))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:736) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0 --cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 737
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:738) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0 --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 739
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:740) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=0 --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 741
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:742)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=0,cumulative' span_id:749))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:753) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0,cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 754
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:755) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 756
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:757) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 758
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:759)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'-X0,cumulative' span_id:766))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:770) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0,cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 771
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:772) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 773
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:774) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff -X0,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 775
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:776)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=0,cumulative' span_id:783))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:787) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,cumulative diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 788
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:789) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,cumulative diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 790
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:791) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,cumulative diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 792
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:793)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=0 & --dirstat=cumulative' span_id:800))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:804) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0 diff --dirstat=cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 805
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:806) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0 diff --dirstat=cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 807
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:808) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0 diff --dirstat=cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 809
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:810)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:816)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 834
          stdin_parts: [
            ('   9.0% changed/\n')
            ('   9.0% dst/copy/changed/\n')
            ('   9.0% dst/copy/rearranged/\n')
            ('   9.0% dst/copy/unchanged/\n')
            ('   9.0% dst/move/changed/\n')
            ('   9.0% dst/move/rearranged/\n')
            ('   9.0% dst/move/unchanged/\n')
            ('   9.0% rearranged/\n')
            ('   9.0% src/move/changed/\n')
            ('   9.0% src/move/rearranged/\n')
            ('   9.0% src/move/unchanged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:819)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:838)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 852
          stdin_parts: [
            ('  14.2% changed/\n')
            ('  14.2% dst/copy/changed/\n')
            ('  14.2% dst/copy/rearranged/\n')
            ('  14.2% dst/copy/unchanged/\n')
            ('  14.2% dst/move/changed/\n')
            ('  14.2% dst/move/rearranged/\n')
            ('  14.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:841)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:856)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 869
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:859)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:--dirstat-by-file span_id:874))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:878) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 879
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:880) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 881
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:882) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 883
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:884)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files' span_id:891))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:895) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 896
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:897) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 898
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:899) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 900
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:901)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=files' span_id:908))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:912) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c diff.dirstat=files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 913
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:914) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 915
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:916) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 917
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:918)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:924)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 934
          stdin_parts: [('  27.2% dst/copy/\n') ('  27.2% dst/move/\n') ('  27.2% src/move/\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:927)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:938)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 952
          stdin_parts: [
            ('  14.2% changed/\n')
            ('  14.2% dst/copy/changed/\n')
            ('  14.2% dst/copy/rearranged/\n')
            ('  14.2% dst/copy/unchanged/\n')
            ('  14.2% dst/move/changed/\n')
            ('  14.2% dst/move/rearranged/\n')
            ('  14.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:941)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:956)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 969
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:959)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat-by-file=10' span_id:974))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:978) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file=10 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 979
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:980) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file=10 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 981
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:982) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file=10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 983
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:984)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,10' span_id:991))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:995) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,10 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 996
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:997) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 998
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n' span_id:999) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1000
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1001)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=10,files' span_id:1008))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1012) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1013
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1014) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1015
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1016
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1017
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1018)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1024)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1046
          stdin_parts: [
            ('   9.0% changed/\n')
            ('   9.0% dst/copy/changed/\n')
            ('   9.0% dst/copy/rearranged/\n')
            ('   9.0% dst/copy/unchanged/\n')
            ('  27.2% dst/copy/\n')
            ('   9.0% dst/move/changed/\n')
            ('   9.0% dst/move/rearranged/\n')
            ('   9.0% dst/move/unchanged/\n')
            ('  27.2% dst/move/\n')
            ('  54.5% dst/\n')
            ('   9.0% rearranged/\n')
            ('   9.0% src/move/changed/\n')
            ('   9.0% src/move/rearranged/\n')
            ('   9.0% src/move/unchanged/\n')
            ('  27.2% src/move/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1027)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1050)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1067
          stdin_parts: [
            ('  14.2% changed/\n')
            ('  14.2% dst/copy/changed/\n')
            ('  14.2% dst/copy/rearranged/\n')
            ('  14.2% dst/copy/unchanged/\n')
            ('  42.8% dst/copy/\n')
            ('  14.2% dst/move/changed/\n')
            ('  14.2% dst/move/rearranged/\n')
            ('  28.5% dst/move/\n')
            ('  71.4% dst/\n')
            ('  14.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1053)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1071)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1087
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  33.3% dst/copy/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  33.3% dst/move/\n')
            ('  66.6% dst/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1074)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat-by-file --cumulative' span_id:1092))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1096) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat-by-file --cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1097
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1098) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat-by-file --cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1099
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1100
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat-by-file --cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1101
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1102)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,cumulative' span_id:1109))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1113) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1114
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1115) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1116
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1117
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1118
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1119)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=cumulative,files' span_id:1126))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1130) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1131
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1132) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1133
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1134
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1135
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1136)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1142)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1153
          stdin_parts: [
            ('  27.2% dst/copy/\n')
            ('  27.2% dst/move/\n')
            ('  54.5% dst/\n')
            ('  27.2% src/move/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1145)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1157)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1174
          stdin_parts: [
            ('  14.2% changed/\n')
            ('  14.2% dst/copy/changed/\n')
            ('  14.2% dst/copy/rearranged/\n')
            ('  14.2% dst/copy/unchanged/\n')
            ('  42.8% dst/copy/\n')
            ('  14.2% dst/move/changed/\n')
            ('  14.2% dst/move/rearranged/\n')
            ('  28.5% dst/move/\n')
            ('  71.4% dst/\n')
            ('  14.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1160)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1178)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1194
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  33.3% dst/copy/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  33.3% dst/move/\n')
            ('  66.6% dst/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1181)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,cumulative,10' span_id:1199))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1203) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative,10 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1204
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1205) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,10 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1206
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1207
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,10 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1208
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1209)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=10,cumulative,files' span_id:1216))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1220) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1221
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1222) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1223
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1224
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=10,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1225
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1226)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1232)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1243
          stdin_parts: [
            ('  27.2% dst/copy/\n')
            ('  27.2% dst/move/\n')
            ('  54.5% dst/\n')
            ('  27.2% src/move/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1235)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1247)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1257
          stdin_parts: [('  42.8% dst/copy/\n') ('  28.5% dst/move/\n') ('  71.4% dst/\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1250)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1261)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1271
          stdin_parts: [('  33.3% dst/copy/\n') ('  33.3% dst/move/\n') ('  66.6% dst/\n')]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1264)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,cumulative,16.7' span_id:1276))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1280) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative,16.7 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1281
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1282) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,16.7 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1283
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1284
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,16.7 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1285
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1286)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=16.7,cumulative,files' span_id:1293))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1297) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.7,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1298
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1299) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.7,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1300
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1301
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.7,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1302
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1303)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=16.70,cumulative,files' span_id:1310))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1314) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.70,cumulative,files diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1315
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1316) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.70,cumulative,files diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1317
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1318
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=16.70,cumulative,files diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1319
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1320)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,cumulative,27.2' span_id:1327))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1331) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative,27.2 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1332
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1333) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,27.2 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1334
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1335
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,27.2 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1336
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1337)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--dirstat=files,cumulative,27.09' span_id:1344))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1348) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=files,cumulative,27.09 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1349
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1350) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,27.09 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1351
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1352
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit diff --dirstat=files,cumulative,27.09 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1353
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1354)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1360)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1376
          stdin_parts: [
            ('  10.6% dst/copy/changed/\n')
            ('  10.6% dst/copy/rearranged/\n')
            ('  10.6% dst/copy/unchanged/\n')
            ('  10.6% dst/move/changed/\n')
            ('  10.6% dst/move/rearranged/\n')
            ('  10.6% dst/move/unchanged/\n')
            ('  10.6% src/move/changed/\n')
            ('  10.6% src/move/rearranged/\n')
            ('  10.6% src/move/unchanged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1363)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1380)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1394
          stdin_parts: [
            ('   5.2% changed/\n')
            ('  26.3% dst/copy/changed/\n')
            ('  26.3% dst/copy/rearranged/\n')
            ('  26.3% dst/copy/unchanged/\n')
            ('   5.2% dst/move/changed/\n')
            ('   5.2% dst/move/rearranged/\n')
            ('   5.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1383)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1398)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1411
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1401)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=lines' span_id:1416))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1420) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1421
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1422) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1423
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1424
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1425
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1426)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=lines' span_id:1433))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1437) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit -c diff.dirstat=lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1438
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1439) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1440
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1441
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1442
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1443)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1449)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1467
          stdin_parts: [
            ('   2.1% changed/\n')
            ('  10.6% dst/copy/changed/\n')
            ('  10.6% dst/copy/rearranged/\n')
            ('  10.6% dst/copy/unchanged/\n')
            ('  10.6% dst/move/changed/\n')
            ('  10.6% dst/move/rearranged/\n')
            ('  10.6% dst/move/unchanged/\n')
            ('   2.1% rearranged/\n')
            ('  10.6% src/move/changed/\n')
            ('  10.6% src/move/rearranged/\n')
            ('  10.6% src/move/unchanged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1452)
          fd: -1
          arg_word: {(expect_diff_dirstat)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1471)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1485
          stdin_parts: [
            ('   5.2% changed/\n')
            ('  26.3% dst/copy/changed/\n')
            ('  26.3% dst/copy/rearranged/\n')
            ('  26.3% dst/copy/unchanged/\n')
            ('   5.2% dst/move/changed/\n')
            ('   5.2% dst/move/rearranged/\n')
            ('   5.2% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1474)
          fd: -1
          arg_word: {(expect_diff_dirstat_M)}
        )
      ]
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:1489)
          fd: -1
          here_begin: {(EOF)}
          here_end_span_id: 1502
          stdin_parts: [
            ('  16.6% changed/\n')
            ('  16.6% dst/copy/changed/\n')
            ('  16.6% dst/copy/rearranged/\n')
            ('  16.6% dst/move/changed/\n')
            ('  16.6% dst/move/rearranged/\n')
            ('  16.6% rearranged/\n')
          ]
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:1492)
          fd: -1
          arg_word: {(expect_diff_dirstat_CC)}
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--dirstat=lines,0' span_id:1507))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1511) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines,0 HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1512
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1513) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines,0 -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1514
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1515
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --dirstat=lines,0 -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1516
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1517)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.dirstat=0,lines' span_id:1524))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1528) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat &&\n'
            span_id: 1529
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n' span_id:1530) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M &&\n'
            span_id: 1531
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1532
          ) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC &&\n'
            span_id: 1533
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC\n' span_id:1534)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--dirstat=future_param,lines,0 should fail loudly'
            span_id: 1541
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1545) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_must_fail git diff --dirstat=future_param,lines,0 HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&\n'
            span_id: 1546
          ) (Token id:Id.Lit_Chars val:'\ttest_debug "cat actual_error" &&\n' span_id:1547) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp /dev/null actual_diff_dirstat &&\n'
            span_id: 1548
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "future_param" actual_error &&\n' span_id:1549) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep -q "\\--dirstat" actual_error\n'
            span_id: 1550
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--dirstat=dummy1,cumulative,2dummy should report both unrecognized parameters'
            span_id: 1557
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1561) 
          (Token
            id: Id.Lit_Chars
            val: 
'\ttest_must_fail git diff --dirstat=dummy1,cumulative,2dummy HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&\n'
            span_id: 1562
          ) (Token id:Id.Lit_Chars val:'\ttest_debug "cat actual_error" &&\n' span_id:1563) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp /dev/null actual_diff_dirstat &&\n'
            span_id: 1564
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "dummy1" actual_error &&\n' span_id:1565) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep -q "2dummy" actual_error &&\n'
            span_id: 1566
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "\\--dirstat" actual_error\n' span_id:1567)
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'diff.dirstat=future_param,0,lines should warn, but still work'
            span_id: 1574
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1578) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=future_param,0,lines diff --dirstat HEAD^..HEAD >actual_diff_dirstat 2>actual_error &&\n'
            span_id: 1579
          ) (Token id:Id.Lit_Chars val:'\ttest_debug "cat actual_error" &&\n' span_id:1580) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat actual_diff_dirstat &&\n'
            span_id: 1581
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "future_param" actual_error &&\n' span_id:1582) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep -q "diff\\\\.dirstat" actual_error &&\n'
            span_id: 1583
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1584) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=future_param,0,lines diff --dirstat -M HEAD^..HEAD >actual_diff_dirstat_M 2>actual_error &&\n'
            span_id: 1585
          ) (Token id:Id.Lit_Chars val:'\ttest_debug "cat actual_error" &&\n' span_id:1586) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_M actual_diff_dirstat_M &&\n'
            span_id: 1587
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "future_param" actual_error &&\n' span_id:1588) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep -q "diff\\\\.dirstat" actual_error &&\n'
            span_id: 1589
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1590) 
          (Token
            id: Id.Lit_Chars
            val: 
'\tgit -c diff.dirstat=future_param,0,lines diff --dirstat -C -C HEAD^..HEAD >actual_diff_dirstat_CC 2>actual_error &&\n'
            span_id: 1591
          ) (Token id:Id.Lit_Chars val:'\ttest_debug "cat actual_error" &&\n' span_id:1592) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC &&\n'
            span_id: 1593
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep -q "future_param" actual_error &&\n' span_id:1594) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep -q "diff\\\\.dirstat" actual_error\n'
            span_id: 1595
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: '--shortstat --dirstat should output only one dirstat'
            span_id: 1602
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1606) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --shortstat --dirstat=changes HEAD^..HEAD >out &&\n'
            span_id: 1607
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_changes &&\n'
            span_id: 1608
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_line_count = 1 actual_diff_shortstat_dirstat_changes &&\n'
            span_id: 1609
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1610) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --shortstat --dirstat=lines HEAD^..HEAD >out &&\n'
            span_id: 1611
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_lines &&\n'
            span_id: 1612
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_line_count = 1 actual_diff_shortstat_dirstat_lines &&\n'
            span_id: 1613
          ) (Token id:Id.Lit_Chars val:'\n' span_id:1614) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit diff --shortstat --dirstat=files HEAD^..HEAD >out &&\n'
            span_id: 1615
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgrep " dst/copy/changed/$" out >actual_diff_shortstat_dirstat_files &&\n'
            span_id: 1616
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_line_count = 1 actual_diff_shortstat_dirstat_files\n'
            span_id: 1617
          )
        )
      }
    )
    (C {(test_done)})
  ]
)