(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 should handle files with incomplete lines.\n'
                  span_id: 15
                ) (Token id:Id.Lit_Chars val:'\n' span_id:16)
              )
            }
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(echo)} {(a)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:32)
            )
            (C {(echo)} {(b)})
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:39)
          fd: -1
          arg_word: {(frotz.0)}
        )
      ]
    )
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(echo)} {(a)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:46)
            )
            (command.Sentence
              child: (C {(echo)} {(b)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:51)
            )
            (C {(echo)} {(c)})
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:58)
          fd: -1
          arg_word: {(frotz.1)}
        )
      ]
    )
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(echo)} {(a)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:65)
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(b)})
                (C {(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\012' span_id:78))})
              ]
              negated: F
            )
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:82)
          fd: -1
          arg_word: {(frotz.2)}
        )
      ]
    )
    (command.Subshell
      command_list: 
        (command.CommandList
          children: [
            (command.Sentence
              child: (C {(echo)} {(a)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:89)
            )
            (command.Sentence
              child: (C {(echo)} {(c)})
              terminator: (Token id:Id.Op_Semi val:';' span_id:94)
            )
            (command.Pipeline
              children: [
                (C {(echo)} {(b)})
                (C {(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\012' span_id:107))})
              ]
              negated: F
            )
          ]
        )
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:111)
          fd: -1
          arg_word: {(frotz.3)}
        )
      ]
    )
    (command.ForEach
      iter_name: i
      iter_words: [{(0)} {(1)} {(2)} {(3)}]
      do_arg_iter: F
      body: 
        (command.DoGroup
          children: [
            (command.ForEach
              iter_name: j
              iter_words: [{(0)} {(1)} {(2)} {(3)}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {(test)} {($ Id.VSub_DollarName '$i')} {(-eq)} {($ Id.VSub_DollarName '$j')})
                        (command.ControlFlow
                          token: (Token id:Id.ControlFlow_Continue val:continue span_id:160)
                        )
                      ]
                    )
                    (command.Simple
                      words: [{(cat)} {(frotz.) ($ Id.VSub_DollarName '$i')}]
                      redirects: [
                        (redir.Redir
                          op: (Token id:Id.Redir_Great val:'>' span_id:168)
                          fd: -1
                          arg_word: {(frotz)}
                        )
                      ]
                    )
                    (C {(test_expect_success)} 
                      {
                        (DQ ('apply diff between ') ($ Id.VSub_DollarName '$i') (' and ') 
                          ($ Id.VSub_DollarName '$j')
                        )
                      } 
                      {
                        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:182) 
                          (Token
                            id: Id.Lit_Chars
                            val: '\tgit apply <"$TEST_DIRECTORY"/t4101/diff.$i-$j &&\n'
                            span_id: 183
                          ) (Token id:Id.Lit_Chars val:'\ttest_cmp frotz.$j frotz\n' span_id:184) 
                          (Token id:Id.Lit_Chars val:'    ' span_id:185)
                        )
                      }
                    )
                  ]
                )
            )
          ]
        )
    )
    (C {(test_done)})
  ]
)