(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:out) op:Equal rhs:{(DQ ($ VSub_Number '$1'))} spids:[3])]
      spids: [3]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:in) op:Equal rhs:{(DQ ($ VSub_At '$@'))} spids:[10])]
      spids: [10]
    )
    (Pipeline
      children: [
        (ForEach
          iter_name: i
          iter_words: [{($ VSub_Name '$in')}]
          do_arg_iter: False
          body: 
            (DoGroup
              children: [
                (C {(eval)} {($ VSub_Name '$CPP')} {($ VSub_Name '$LINUXINCLUDE')} {(-dD)} {(-imacros)} 
                  {(DQ ($ VSub_Name '$i'))} {(-x)} {(c)} {(/dev/null)}
                )
              ]
              spids: [25 48]
            )
          spids: [21 23]
        )
        (C {(awk)} 
          {
            (SQ <'$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }\n'> 
              <'\tEND {   print "/* auto-generated by scripts/xen-hypercall.sh */"\n'> <'\t\tfor (i in v) if (!(v[i] in v))\n'> <'\t\t\tprint "HYPERCALL("substr(v[i], 14)")"}'>
            )
          }
        )
        (SimpleCommand
          words: [{(sort)} {(-u)}]
          redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$out')} spids:[68])]
        )
      ]
      negated: False
    )
  ]
)