(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 handling copy/rename patch.\n' span_id:15) 
                (Token id:Id.Lit_Chars val:'\n' span_id:16)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:30)
          fd: -1
          arg_word: {(test-patch)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:33)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:34)) (OF)}
          here_end_span_id: 46
          stdin_parts: [
            ('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')
          ]
        )
      ]
    )
    (command.Simple
      words: [{(echo)} {(SQ (Token id:Id.Lit_Chars val:'This is foo' span_id:51))}]
      redirects: [(redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:54) fd:-1 arg_word:{(foo)})]
    )
    (C {(chmod)} {(Id.Lit_Other '+') (x)} {(foo)})
    (C {(test_expect_success)} {(setup)} 
      {(SQ (Token id:Id.Lit_Chars val:'git update-index --add foo' span_id:72))}
    )
    (C {(test_expect_success)} {(apply)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git apply --index --stat --summary --apply test-patch'
            span_id: 83
          )
        )
      }
    )
    (C {(test_expect_success)} {(FILEMODE)} {(validate)} 
      {(SQ (Token id:Id.Lit_Chars val:'test -f bar && ls -l bar | grep "^-..x......"' span_id:96))}
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply reverse' span_id:103))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git apply -R --index --stat --summary --apply test-patch &&\n'
            span_id: 109
          ) (Token id:Id.Lit_Chars val:'     test "$(cat foo)" = "This is foo"' span_id:110)
        )
      }
    )
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:116)
          fd: -1
          arg_word: {(test-patch)}
        )
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:119)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:120)) 
              (OF)
            }
          here_end_span_id: 132
          stdin_parts: [
            ('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')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply copy' span_id:137))} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'git apply --index --stat --summary --apply test-patch &&\n'
            span_id: 143
          ) 
          (Token
            id: Id.Lit_Chars
            val: '     test "$(cat bar)" = "This is bar" && test "$(cat foo)" = "This is foo"'
            span_id: 144
          )
        )
      }
    )
    (C {(test_done)})
  ]
)