(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: 'apply a patch that is larger than the preimage'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Simple
      words: [{(cat)}]
      redirects: [
        (redir.Redir op:(Token id:Id.Redir_Great val:'>' span_id:17) fd:-1 arg_word:{(F)})
        (redir.HereDoc
          op: (Token id:Id.Redir_DLess val:'<<' span_id:20)
          fd: -1
          here_begin: 
            {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:21)) (OF)}
          here_end_span_id: 44
          stdin_parts: [
            ('1\n')
            ('2\n')
            ('3\n')
            ('4\n')
            ('5\n')
            ('6\n')
            ('7\n')
            ('8\n')
            ('999999\n')
            ('A\n')
            ('B\n')
            ('C\n')
            ('D\n')
            ('E\n')
            ('F\n')
            ('G\n')
            ('H\n')
            ('I\n')
            ('J\n')
            ('\n')
          ]
        )
      ]
    )
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'\n' span_id:52) 
          (Token id:Id.Lit_Chars val:'\tgit add F &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tmv F G &&\n' span_id:54) 
          (Token
            id: Id.Lit_Chars
            val: '\tsed -e "s/1/11/" -e "s/999999/9/" -e "s/H/HH/" <G >F &&\n'
            span_id: 55
          ) (Token id:Id.Lit_Chars val:'\tgit diff >patch &&\n' span_id:56) 
          (Token id:Id.Lit_Chars val:'\tsed -e "/^\\$/d" <G >F &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\tgit add F\n' span_id:58) (Token id:Id.Lit_Chars val:'\n' span_id:59)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply should fail gracefully' span_id:66))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\n' span_id:71) 
          (Token id:Id.Lit_Chars val:'\tif git apply --index patch\n' span_id:72) (Token id:Id.Lit_Chars val:'\tthen\n' span_id:73) 
          (Token
            id: Id.Lit_Chars
            val: '\t\techo Oops, should not have succeeded\n'
            span_id: 74
          ) (Token id:Id.Lit_Chars val:'\t\tfalse\n' span_id:75) (Token id:Id.Lit_Chars val:'\telse\n' span_id:76) 
          (Token id:Id.Lit_Chars val:'\t\tstatus=$?\n' span_id:77) (Token id:Id.Lit_Chars val:'\t\techo "Status was $status"\n' span_id:78) 
          (Token id:Id.Lit_Chars val:'\t\tif test -f .git/index.lock\n' span_id:79) (Token id:Id.Lit_Chars val:'\t\tthen\n' span_id:80) 
          (Token
            id: Id.Lit_Chars
            val: '\t\t\techo Oops, should not have crashed\n'
            span_id: 81
          ) (Token id:Id.Lit_Chars val:'\t\t\tfalse\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\t\tfi\n' span_id:83) (Token id:Id.Lit_Chars val:'\tfi\n' span_id:84)
        )
      }
    )
    (C {(test_done)})
  ]
)