(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git apply handling copy/rename patch.\n'> <'\n'>)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(test-patch)} spids:[30])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('diff --git a/foo b/bar\n') ('similarity index 47%\n') ('rename from foo\n') 
              ('rename to bar\n') ('--- a/foo\n') ('+++ b/bar\n') ('@@ -1 +1 @@\n') ('-This is foo\n') ('+This is bar\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [33]
        )
      ]
    )
    (SimpleCommand
      words: [{(echo)} {(SQ <'This is foo'>)}]
      redirects: [(Redir op_id:Redir_Great fd:16777215 arg_word:{(foo)} spids:[44])]
    )
    (C {(chmod)} {(Lit_Other '+') (x)} {(foo)})
    (C {(test_expect_success)} {(setup)} {(SQ <'git update-index --add foo'>)})
    (C {(test_expect_success)} {(apply)} {(SQ <'git apply --index --stat --summary --apply test-patch'>)})
    (C {(test_expect_success)} {(FILEMODE)} {(validate)} 
      {(SQ <'test -f bar && ls -l bar | grep "^-..x......"'>)}
    )
    (C {(test_expect_success)} {(SQ <'apply reverse'>)} 
      {
        (SQ <'git apply -R --index --stat --summary --apply test-patch &&\n'> 
          <'     test "$(cat foo)" = "This is foo"'>
        )
      }
    )
    (SimpleCommand
      words: [{(cat)}]
      redirects: [
        (Redir op_id:Redir_Great fd:16777215 arg_word:{(test-patch)} spids:[106])
        (HereDoc
          op_id: Redir_DLess
          fd: 16777215
          body: 
            {('diff --git a/foo b/bar\n') ('similarity index 47%\n') ('copy from foo\n') 
              ('copy to bar\n') ('--- a/foo\n') ('+++ b/bar\n') ('@@ -1 +1 @@\n') ('-This is foo\n') ('+This is bar\n')
            }
          do_expansion: False
          here_end: EOF
          was_filled: T
          spids: [109]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ <'apply copy'>)} 
      {
        (SQ <'git apply --index --stat --summary --apply test-patch &&\n'> 
          <'     test "$(cat bar)" = "This is bar" && test "$(cat foo)" = "This is foo"'>
        )
      }
    )
    (C {(test_done)})
  ]
)