(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:common_objpfx)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [64]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:test_program_prefix_before_env)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [70]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:run_program_env)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [76]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.CommandList
      children: [
        (command.Sentence
          child: 
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:test_program_prefix_after_env)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_Number '$1')}
                  spids: [82]
                )
              ]
            )
          terminator: <Id.Op_Semi _>
        )
        (C {<shift>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:logfile)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name common_objpfx) <posix/wordexp-tst.out>}
          spids: [88]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:testout)
          op: assign_op.Equal
          rhs: {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test-result>}
          spids: [94]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:result)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [101]
        )
      ]
    )
    (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$logfile')})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:IFS)
          op: assign_op.Equal
          rhs: {(DQ <' \t'> <'\n'>)}
          spids: [116]
        )
      ]
    )
    (C {<export>} {<IFS>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [128]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'$*'>)}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <1>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 195
                  stdin_parts: [<'wordexp returned 0\n'> <'we_wordv[0] = "$*"\n'>]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <1>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [190]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$* test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [217]
                )
              ]
            )
          ]
          spids: [196 207]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [223]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'${*}'>)}
        {<unquoted>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <2>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 293
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = "${*}"\n'>
                    <'we_wordv[1] = "unquoted"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <2>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [287]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'${*} test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [315]
                )
              ]
            )
          ]
          spids: [294 305]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [321]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'$@'>)}
        {<unquoted>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <3>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 391
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = "$@"\n'>
                    <'we_wordv[1] = "unquoted"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <3>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [385]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$@ test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [413]
                )
              ]
            )
          ]
          spids: [392 403]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [419]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'"$* quoted"'>)}
        {<param>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <4>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 488
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = ""$* quoted" param quoted"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <4>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [483]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$* quoted test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [510]
                )
              ]
            )
          ]
          spids: [489 500]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [516]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'"$@ quoted"'>)}
        {<param>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <5>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 586
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = ""$@ quoted""\n'>
                    <'we_wordv[1] = "param quoted"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <5>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [580]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$@ quoted test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [608]
                )
              ]
            )
          ]
          spids: [587 598]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [617]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'$#'>)}
        {<2>}
        {<3>}
        {<4>}
        {<5>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <6>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 692
                  stdin_parts: [<'wordexp returned 0\n'> <'we_wordv[0] = "5"\n'>]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <6>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [687]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$# test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [714]
                )
              ]
            )
          ]
          spids: [693 704]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [720]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'$2 ${3} $4'>)}
        {<2nd>}
        {<3rd>}
        {(DQ <'4 th'>)}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <7>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 798
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = "2nd"\n'>
                    <'we_wordv[1] = "3rd"\n'>
                    <'we_wordv[2] = "4"\n'>
                    <'we_wordv[3] = "th"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <7>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [790]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'$2 ${3} $4 test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [820]
                )
              ]
            )
          ]
          spids: [799 810]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [826]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'${11}'>)}
        {<2>}
        {<3>}
        {<4>}
        {<5>}
        {<6>}
        {<7>}
        {<8>}
        {<9>}
        {<10>}
        {<11>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <8>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 913
                  stdin_parts: [<'wordexp returned 0\n'> <'we_wordv[0] = "11"\n'>]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <8>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [908]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'${11} test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [935]
                )
              ]
            )
          ]
          spids: [914 925]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:failed)
          op: assign_op.Equal
          rhs: {<0>}
          spids: [941]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'"a $@ b"'>)}
        {<c>}
        {<d>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <9>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 1014
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = "a "a $@ b""\n'>
                    <'we_wordv[1] = "c"\n'>
                    <'we_wordv[2] = "d b"\n'>
                  ]
                )
              ]
            )
            (command.Simple
              words: [{<cmp>} {<->} {(${ Id.VSub_Name testout) <9>}]
              redirects: [
                (redir.Redir
                  op: <Id.Redir_DGreat '>>'>
                  fd: -1
                  arg_word: {($ Id.VSub_DollarName '$logfile')}
                )
              ]
            )
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [1007]
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {<test>} {($ Id.VSub_DollarName '$failed')} {<-ne>} {<0>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [
            (C {<echo>} {(SQ <'"a $@ b" test failed'>)})
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:status)
                  op: assign_op.Equal
                  rhs: {<1>}
                  spids: [1036]
                )
              ]
            )
          ]
          spids: [1015 1026]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_prefix_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'IFS='> (DQ ($ Id.VSub_DollarName '$IFS'))}
        {(${ Id.VSub_Name test_program_prefix_after_env)}
        {(${ Id.VSub_Name common_objpfx) <posix/wordexp-test>}
        {(SQ <'${#@} ${#2} *$**'>)}
        {<two>}
        {<3>}
        {<4>}
      ]
      redirects: [(redir.Redir op:<Id.Redir_Great '>'> fd:-1 arg_word:{(${ Id.VSub_Name testout) <10>})]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir.HereDoc
                  op: <Id.Redir_DLess '<<'>
                  fd: -1
                  here_begin: {(DQ <EOF>)}
                  here_end_span_id: 1115
                  stdin_parts: [
                    <'wordexp returned 0\n'>
                    <'we_wordv[0] = "4"\n'>
                    <'we_wordv[1] = "3"\n'>
                    <'we_wordv[2] = "*${#@}"\n'>
                    <'we_wordv[3] = "${#2}"\n'>
                    <'we_wordv[4] = "*$**"\n'>
                    <'we_wordv[5] = "two"\n'>
                    <'we_wordv[6] = "3"\n'>
                    <'we_wordv[7] = "4*"\n'>
                  ]
                )
              ]
            )
            (C {<cmp>} {<->} {(${ Id.VSub_Name testout) <10>})
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:failed)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [1103]
            )
          ]
        )
      ]
    )
    (command.ControlFlow
      token: <Id.ControlFlow_Exit exit>
      arg_word: {($ Id.VSub_DollarName '$result')}
    )
  ]
)