(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:common_objpfx)
          op: Equal
          rhs: {($ VSub_Number '$1')}
          spids: [54]
        )
      ]
      spids: [54]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_program_prefix)
          op: Equal
          rhs: {($ VSub_Number '$2')}
          spids: [57]
        )
      ]
      spids: [57]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:objpfx) op:Equal rhs:{($ VSub_Number '$3')} spids:[60])]
      spids: [60]
    )
    (AndOr
      ops: [Op_DAmp]
      children: [
        (C {(${ VSub_Name test_program_prefix)} {(${ VSub_Name objpfx) (test-freopen)} 
          {(${ VSub_Name objpfx) (test-freopen.out)}
        )
        (SimpleCommand
          words: [{(cmp)} {(${ VSub_Name objpfx) (test-freopen.out)} {(-)}]
          redirects: [
            (HereDoc
              op: <Redir_DLess '<<'>
              fd: 16777215
              here_begin: {(DQ (EOF))}
              here_end_span_id: 96
              stdin_parts: [('Hello world (mb)\n') ('Hello world (wc)\n')]
            )
          ]
        )
      ]
    )
    (ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_QMark '$?')})
  ]
)