(command.CommandList
  children: [
    (C {<set>} {<-e>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:common_objpfx)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$1')}
          spids: [54]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_program_cmd_before_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$2')}
          spids: [57]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:run_program_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$3')}
          spids: [60]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_program_cmd_after_env)
          op: assign_op.Equal
          rhs: {($ Id.VSub_Number '$4')}
          spids: [63]
        )
      ]
    )
    (command.Simple
      words: [
        {(${ Id.VSub_Name test_program_cmd_before_env)}
        {(${ Id.VSub_Name run_program_env)}
        {<Id.Lit_VarLike 'NLSPATH='> (${ Id.VSub_Name common_objpfx) <'catgets/'> <Id.Lit_Other '%'> 
          <N.> <Id.Lit_Other '%'> <c.cat>
        }
        {<Id.Lit_VarLike 'LC_ALL='> <ja_JP.SJIS>}
        {(${ Id.VSub_Name test_program_cmd_after_env)}
      ]
      redirects: [
        (redir
          op: <Id.Redir_Great '>'>
          loc: (redir_loc.Fd fd:1)
          arg: {(${ Id.VSub_Name common_objpfx) <'catgets/test-gencat.out'>}
        )
      ]
      do_fork: T
    )
    (command.Simple
      words: [{<cmp>} {<->} {(${ Id.VSub_Name common_objpfx) <'catgets/test-gencat.out'>}]
      redirects: [
        (redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(DQ <EOF>)}
              here_end_span_id: 136
              stdin_parts: [
                <'LC_MESSAGES = ja_JP.SJIS\n'>
                <'sample1:ABCDEF:\n'>
                <'sample2:\x93\xfa\x96{\x8c\xea:\n'>
                <'sample3:\x97\\\x92\xe8\x95\\:\n'>
                <'sample4:TEST\tTAB:\n'>
                <'sample5:\x8b@\x94\\\t\x8f\\\x8e\xed\x97\xde:\n'>
                <'double slash\\\n'>
                <'another line\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:res)
          op: assign_op.Equal
          rhs: {($ Id.VSub_QMark '$?')}
          spids: [137]
        )
      ]
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (command.Pipeline
          children: [
            (command.Simple
              words: [{<cat>}]
              redirects: [
                (redir
                  op: <Id.Redir_DLess '<<'>
                  loc: (redir_loc.Fd fd:0)
                  arg: 
                    (redir_param.HereDoc
                      here_begin: {<EOF>}
                      here_end_span_id: 151
                      stdin_parts: [
                        <'#define AnotherSet 0x2\t/* *standard input*:13 */\n'>
                        <'#define AnotherFOO 0x1\t/* *standard input*:14 */\n'>
                      ]
                    )
                )
              ]
              do_fork: T
            )
            (C {<cmp>} {(${ Id.VSub_Name common_objpfx) <'catgets/test-gencat.h'>} {<->})
          ]
          negated: F
        )
        (command.ShAssignment
          pairs: [
            (assign_pair
              lhs: (sh_lhs_expr.Name name:res)
              op: assign_op.Equal
              rhs: {<1>}
              spids: [163]
            )
          ]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{($ Id.VSub_DollarName '$res')})
  ]
)