(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 apply test patches with whitespace expansion.'
                  span_id: 15
                )
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:29) (Token id:Id.Lit_Chars val:'\t#\n' span_id:30) 
          (Token
            id: Id.Lit_Chars
            val: '\t## create test-N, patchN.patch, expect-N files\n'
            span_id: 31
          ) (Token id:Id.Lit_Chars val:'\t#\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\t# test 1\n' span_id:34) (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" 1 2 3 4 5 6 >before &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" 1 2 3 >after &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c >>after &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" 4 5 6 >>after &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit diff --no-index before after |\n' span_id:39) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsed -e "s/before/test-1/" -e "s/after/test-1/" >patch1.patch &&\n'
            span_id: 40
          ) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" 1 2 3 4 5 6 >test-1 &&\n' span_id:41) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "%64s\\n" 1 2 3 a b c 4 5 6 >expect-1 &&\n'
            span_id: 42
          ) (Token id:Id.Lit_Chars val:'\n' span_id:43) (Token id:Id.Lit_Chars val:'\t# test 2\n' span_id:44) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "\\t%s\\n" a b c d e f >before &&\n'
            span_id: 45
          ) (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" a b c >after &&\n' span_id:46) 
          (Token id:Id.Lit_Chars val:'\tn=10 &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\tx=1 &&\n' span_id:48) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt $n\n' span_id:49) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:50) 
          (Token id:Id.Lit_Chars val:'\t\tprintf "%63s%d\\n" "" $x >>after\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" d e f >>after &&\n' span_id:54) 
          (Token id:Id.Lit_Chars val:'\tgit diff --no-index before after |\n' span_id:55) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tsed -e "s/before/test-2/" -e "s/after/test-2/" >patch2.patch &&\n'
            span_id: 56
          ) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c d e f >test-2 &&\n' span_id:57) 
          (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c >expect-2 &&\n' span_id:58) (Token id:Id.Lit_Chars val:'\tx=1 &&\n' span_id:59) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt $n\n' span_id:60) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:61) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "%63s%d\\n" "" $x >>expect-2\n'
            span_id: 62
          ) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:63) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:64) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" d e f >>expect-2 &&\n' span_id:65) 
          (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id:Id.Lit_Chars val:'\t# test 3\n' span_id:67) 
          (Token
            id: Id.Lit_Chars
            val: '\tprintf "\\t%s\\n" a b c d e f >before &&\n'
            span_id: 68
          ) (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" a b c >after &&\n' span_id:69) 
          (Token id:Id.Lit_Chars val:'\tn=100 &&\n' span_id:70) (Token id:Id.Lit_Chars val:'\tx=0 &&\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt $n\n' span_id:72) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:73) 
          (Token id:Id.Lit_Chars val:'\t\tprintf "%63s%02d\\n" "" $x >>after\n' span_id:74) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:75) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tprintf "\\t%s\\n" d e f >>after &&\n' span_id:77) 
          (Token id:Id.Lit_Chars val:'\tgit diff --no-index before after |\n' span_id:78) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/before/test-3/" -e "s/after/test-3/" >patch3.patch &&\n'
            span_id: 79
          ) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c d e f >test-3 &&\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c >expect-3 &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tx=0 &&\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt $n\n' span_id:83) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:84) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "%63s%02d\\n" "" $x >>expect-3\n'
            span_id: 85
          ) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" d e f >>expect-3 &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\t# test 4\n' span_id:90) 
          (Token id:Id.Lit_Chars val:'\t>before &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\tx=0 &&\n' span_id:92) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt 50\n' span_id:93) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\t\tprintf "\\t%02d\\n" $x >>before\n' span_id:95) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:96) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:97) (Token id:Id.Lit_Chars val:'\tcat before >after &&\n' span_id:98) 
          (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c >>after &&\n' span_id:99) (Token id:Id.Lit_Chars val:'\twhile test $x -lt 100\n' span_id:100) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:101) (Token id:Id.Lit_Chars val:'\t\tprintf "\\t%02d\\n" $x >>before\n' span_id:102) 
          (Token id:Id.Lit_Chars val:'\t\tprintf "\\t%02d\\n" $x >>after\n' span_id:103) (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:105) (Token id:Id.Lit_Chars val:'\tgit diff --no-index before after |\n' span_id:106) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/before/test-4/" -e "s/after/test-4/" >patch4.patch &&\n'
            span_id: 107
          ) (Token id:Id.Lit_Chars val:'\t>test-4 &&\n' span_id:108) 
          (Token id:Id.Lit_Chars val:'\tx=0 &&\n' span_id:109) (Token id:Id.Lit_Chars val:'\twhile test $x -lt 50\n' span_id:110) 
          (Token id:Id.Lit_Chars val:'\tdo\n' span_id:111) (Token id:Id.Lit_Chars val:'\t\tprintf "%63s%02d\\n" "" $x >>test-4\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:113) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\tcat test-4 >expect-4 &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\tprintf "%64s\\n" a b c >>expect-4 &&\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\twhile test $x -lt 100\n' span_id:117) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:118) 
          (Token
            id: Id.Lit_Chars
            val: '\t\tprintf "%63s%02d\\n" "" $x >>test-4\n'
            span_id: 119
          ) (Token id:Id.Lit_Chars val:'\t\tprintf "%63s%02d\\n" "" $x >>expect-4\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\t\tx=$(( $x + 1 ))\n' span_id:121) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\n' span_id:123) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit config core.whitespace tab-in-indent,tabwidth=63 &&\n'
            span_id: 124
          ) (Token id:Id.Lit_Chars val:'\tgit config apply.whitespace fix\n' span_id:125) 
          (Token id:Id.Lit_Chars val:'\n' span_id:126)
        )
      }
    )
    (command.ForEach
      iter_name: t
      iter_words: [{(1)} {(2)} {(3)} {(4)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (C {(test_expect_success)} 
              {(SQ (Token id:Id.Lit_Chars val:'apply with ws expansion (t=$t)' span_id:157))} 
              {
                (SQ (Token id:Id.Lit_Chars val:'\n' span_id:161) 
                  (Token
                    id: Id.Lit_Chars
                    val: '\t\tgit apply patch$t.patch &&\n'
                    span_id: 162
                  ) (Token id:Id.Lit_Chars val:'\t\ttest_cmp test-$t expect-$t\n' span_id:163) 
                  (Token id:Id.Lit_Chars val:'\t' span_id:164)
                )
              }
            )
          ]
        )
    )
    (C {(test_done)})
  ]
)