(command.CommandList
  children: [
    (C {(Id.Lit_Other ':')} 
      {
        (braced_var_sub
          token: (Token id:Id.VSub_Name val:srcdir span_id:6)
          suffix_op: (suffix_op.Unary op_id:Id.VTest_Equals arg_word:{(.)})
        )
      }
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: (C {(.)} {(DQ ($ Id.VSub_DollarName '$srcdir') (/init.sh))})
          terminator: (Token id:Id.Op_Semi val:';' span_id:17)
        )
        (C {(path_prepend_)} {(.)})
      ]
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{(test-perror)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:29)
              fd: 2
              arg_word: {(1)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:32)
              fd: -1
              arg_word: {(/dev/null)}
            )
          ]
        )
        (command.Simple
          words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:45))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:48)
              fd: -1
              arg_word: {(t-perror.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[37])]
        )
      ]
      negated: F
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [
        (command.Simple
          words: [{(grep)} {(SQ (Token id:Id.Lit_Chars val:'[0-9]' span_id:55))} {(t-perror.tmp)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:60)
              fd: -1
              arg_word: {(/dev/null)}
            )
          ]
        )
        (C {(fail_)} {(DQ ('result should not contain a number'))})
      ]
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{(test-perror)} {(SQ )}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:83)
              fd: 2
              arg_word: {(1)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:86)
              fd: -1
              arg_word: {(/dev/null)}
            )
          ]
        )
        (command.Simple
          words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:99))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:102)
              fd: -1
              arg_word: {(t-perror1.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[91])]
        )
      ]
      negated: F
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(diff)} {(t-perror.tmp)} {(t-perror1.tmp)})
        (C {(fail_)} {(DQ ('empty prefix should behave like NULL argument'))})
      ]
    )
    (command.Pipeline
      children: [
        (command.Simple
          words: [{(test-perror)} {(foo)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:130)
              fd: 2
              arg_word: {(1)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:133)
              fd: -1
              arg_word: {(/dev/null)}
            )
          ]
        )
        (command.Simple
          words: [{(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'\\r' span_id:146))}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:149)
              fd: -1
              arg_word: {(t-perror3.tmp)}
            )
          ]
          more_env: [(env_pair name:LC_ALL val:{(C)} spids:[138])]
        )
      ]
      negated: F
    )
    (command.Simple
      words: [{(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/^/foo: /' span_id:158))}]
      redirects: [
        (redir.Redir
          op: (Token id:Id.Redir_Less val:'<' span_id:161)
          fd: -1
          arg_word: {(t-perror.tmp)}
        )
        (redir.Redir
          op: (Token id:Id.Redir_Great val:'>' span_id:165)
          fd: -1
          arg_word: {(t-perror2.tmp)}
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {(diff)} {(t-perror2.tmp)} {(t-perror3.tmp)})
        (C {(fail_)} {(DQ ('prefix applied incorrectly'))})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Simple
          words: [{(test-perror)}]
          redirects: [
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'>' span_id:189)
              fd: -1
              arg_word: {(out)}
            )
            (redir.Redir
              op: (Token id:Id.Redir_Great val:'2>' span_id:192)
              fd: 2
              arg_word: {(/dev/null)}
            )
          ]
        )
        (C {(fail_)} {(DQ ('unexpected exit status'))})
      ]
    )
    (command.AndOr
      ops: [Id.Op_DAmp]
      children: [(C {(test)} {(-s)} {(out)}) (C {(fail_)} {(DQ ('unexpected output'))})]
    )
    (C {(Exit)} {(0)})
  ]
)