(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'git-apply --ignore-whitespace.\n'> <'\n'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patch1.patch>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/main.c b/main.c\n'>
                <'new file mode 100644\n'>
                <'--- /dev/null\n'>
                <'+++ b/main.c\n'>
                <'@@ -0,0 +1,22 @@\n'>
                <'+#include <stdio.h>\n'>
                <'+\n'>
                <'+void print_int(int num);\n'>
                <'+int func(int num);\n'>
                <'+\n'>
                <'+int main() {\n'>
                <'+       int i;\n'>
                <'+\n'>
                <'+       for (i = 0; i < 10; i++) {\n'>
                <'+               print_int(func(i)); /* stuff */\n'>
                <'+       }\n'>
                <'+\n'>
                <'+       return 0;\n'>
                <'+}\n'>
                <'+\n'>
                <'+int func(int num) {\n'>
                <'+       return num * num;\n'>
                <'+}\n'>
                <'+\n'>
                <'+void print_int(int num) {\n'>
                <'+       printf("%d", num);\n'>
                <'+}\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/Z/ /g'>)}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patch2.patch>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/main.c b/main.c\n'>
                <'--- a/main.c\n'>
                <'+++ b/main.c\n'>
                <'@@ -10,6 +10,8 @@\n'>
                <'Z\t\tprint_int(func(i)); /* stuff */\n'>
                <'Z\t}\n'>
                <'Z\n'>
                <'+\tprintf("\\n");\n'>
                <'+\n'>
                <'Z\treturn 0;\n'>
                <'Z}\n'>
                <'Z\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/Z/ /g'>)}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patch3.patch>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/main.c b/main.c\n'>
                <'--- a/main.c\n'>
                <'+++ b/main.c\n'>
                <'@@ -10,3 +10,4 @@\n'>
                <'Z\tfor (i = 0; i < 10; i++) {\n'>
                <'Z\t\tprint_int(func(i));Z\n'>
                <'+\t\t/* stuff */\n'>
                <'Z\t}\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/Z/ /g'>)}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patch4.patch>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/main.c b/main.c\n'>
                <'--- a/main.c\n'>
                <'+++ b/main.c\n'>
                <'@@ -21,1 +21,1 @@\n'>
                <'-\t};Z\n'>
                <'\\ No newline at end of file\n'>
                <'+\t};\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/Z/ /g'>)}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<patch5.patch>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/main.c b/main.c\n'>
                <'--- a/main.c\n'>
                <'+++ b/main.c\n'>
                <'@@ -2,2 +2,3 @@\n'>
                <'Z\tvoid print_int(int num);\n'>
                <'+\t/* a comment */\n'>
                <'Z\tint func(int num);\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/T/\t/g'>)}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<main.c.final>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'#include <stdio.h>\n'>
                <'\n'>
                <'void print_int(int num);\n'>
                <'int func(int num);\n'>
                <'\n'>
                <'int main() {\n'>
                <'       int i;\n'>
                <'\n'>
                <'       for (i = 0; i < 10; i++) {\n'>
                <'               print_int(func(i)); /* stuff */\n'>
                <'       }\n'>
                <'\n'>
                <'Tprintf("\\n");\n'>
                <'\n'>
                <'       return 0;\n'>
                <'}\n'>
                <'\n'>
                <'int func(int num) {\n'>
                <'       return num * num;\n'>
                <'}\n'>
                <'\n'>
                <'void print_int(int num) {\n'>
                <'       printf("%d", num);\n'>
                <'}\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'file creation'>)}
        {(SQ <'\n'> <'\tgit apply patch1.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch2 fails (retab)'>)}
        {(SQ <'\n'> <'\ttest_must_fail git apply patch2.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch2 applies with --ignore-whitespace'>)}
        {(SQ <'\n'> <'\tgit apply --ignore-whitespace patch2.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch2 reverse applies with --ignore-space-change'>)}
        {(SQ <'\n'> <'\tgit apply -R --ignore-space-change patch2.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <git>
      more_env: []
      words: [{<git>} {<config>} {<apply.ignorewhitespace>} {<change>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch2 applies (apply.ignorewhitespace = change)'>)}
        {(SQ <'\n'> <'\tgit apply patch2.patch &&\n'> <'\ttest_cmp main.c.final main.c\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch3 fails (missing string at EOL)'>)}
        {(SQ <'\n'> <'\ttest_must_fail git apply patch3.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch4 fails (missing EOL at EOF)'>)}
        {(SQ <'\n'> <'\ttest_must_fail git apply patch4.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch5 fails (leading whitespace differences matter)'>)}
        {(SQ <'\n'> <'\ttest_must_fail git apply patch5.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'re-create file (with --ignore-whitespace)'>)}
        {(SQ <'\n'> <'\trm -f main.c &&\n'> <'\tgit apply patch1.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'patch5 fails (--no-ignore-whitespace)'>)}
        {(SQ <'\n'> <'\ttest_must_fail git apply --no-ignore-whitespace patch5.patch\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)