(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:file) op:Equal rhs:{($ VSub_Number '$1')} spids:[16])]
      spids: [16]
    )
    (C {(shift)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:defs)
          op: Equal
          rhs: {(DQ ('#define ') ($ VSub_Number '$1'))}
          spids: [22]
        )
      ]
      spids: [22]
    )
    (C {(shift)})
    (ForEach
      iter_name: def
      do_arg_iter: True
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:defs)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$defs') ('\n') ('#define ') ($ VSub_Name '$def'))}
                  spids: [37]
                )
              ]
              spids: [37]
            )
          ]
          spids: [34 45]
        )
      spids: [-1 -1]
    )
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:t)
          op: Equal
          rhs: 
            {
              (BracedVarSub
                token: <VSub_Name TMPDIR>
                suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(.)})
                spids: [61 65]
              ) (/gro) ($ VSub_Dollar '$$') (.tmp)
            }
          spids: [60]
        )
      ]
      spids: [60]
    )
    (SimpleCommand
      words: [{(sed)} {(-e)} {(SQ <'s/=/ /'>)}]
      redirects: [
        (Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name '$t')} spids:[79])
        (HereDoc
          op_id: Redir_DLess
          fd: -1
          body: {(DQ ($ VSub_Name '$defs') ('\n'))}
          do_expansion: True
          here_end: EOF
          was_filled: True
          spids: [82]
        )
      ]
    )
    (AndOr
      children: [
        (C {(test)} {(-r)} {($ VSub_Name '$file')})
        (AndOr
          children: [
            (C {(cmp)} {(-s)} {($ VSub_Name '$t')} {($ VSub_Name '$file')})
            (C {(cp)} {($ VSub_Name '$t')} {($ VSub_Name '$file')})
          ]
          op_id: Op_DPipe
        )
      ]
      op_id: Op_DAmp
    )
    (C {(rm)} {(-f)} {($ VSub_Name '$t')})
    (C {(exit)} {(0)})
  ]
)