(CommandList
  children: [
    (C {(set)} {(-e)})
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:unifdef)
          op: Equal
          rhs: 
            {
              (DQ 
                (CommandSubPart
                  command_list: (CommandList children:[(C {(dirname)} {(DQ ($ VSub_Number '$0'))})])
                  left_token: <Left_CommandSub '$('>
                  spids: [95 101]
                ) (/unifdef)
              )
            }
          spids: [93]
        )
      ]
      spids: [93]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {(KW_Bang '!')} {(-e)} {(DQ ($ VSub_Name '$unifdef'))} {(Lit_Other ']')})
          ]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:unifdef) op:Equal rhs:{(unifdef)} spids:[122])]
              spids: [122]
            )
          ]
          spids: [16777215 119]
        )
      ]
      spids: [16777215 125]
    )
    (Case
      to_match: {(DQ ($ VSub_At '$@'))}
      arms: [
        (case_arm
          pat_list: [{(DQ ('-d ')) (Lit_Other '*')}]
          action: [
            (SimpleCommand
              words: [{(echo)} {(DEBUGGING)}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[146])]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(-d)} spids:[150])]
              spids: [150]
            )
            (C {(shift)})
          ]
          spids: [137 140 16777215 156]
        )
      ]
      spids: [128 134 156]
    )
    (AndOr
      ops: [Op_DPipe]
      children: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:tmp)
              op: Equal
              rhs: 
                {
                  (CommandSubPart
                    command_list: 
                      (CommandList
                        children: [
                          (C {(mktemp)} {(-d)} 
                            {
                              (DQ 
                                (BracedVarSub
                                  token: <VSub_Name TMPDIR>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VTest_ColonHyphen
                                      arg_word: {(Lit_Slash /) (tmp)}
                                    )
                                  spids: [166 171]
                                ) (/) 
                                (BracedVarSub
                                  token: <VSub_Number 0>
                                  suffix_op: 
                                    (StringUnary
                                      op_id: VOp1_DPound
                                      arg_word: {('*') (Lit_Slash /)}
                                    )
                                  spids: [173 178]
                                ) (.XXXXXXXXXX)
                              )
                            }
                          )
                        ]
                      )
                    left_token: <Left_CommandSub '$('>
                    spids: [160 181]
                  )
                }
              spids: [159]
            )
          ]
          spids: [159]
        )
        (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(2)})
      ]
    )
    (C {(trap)} {(SQ <'rm -r "$tmp" || exit 2'>)} {(EXIT)})
    (C {(export)} {(Lit_VarLike 'LC_ALL=') (C)})
    (Pipeline
      children: [
        (C {(DQ ($ VSub_Name '$unifdef'))} {($ VSub_Name '$debug')} {(-s)} {(DQ ($ VSub_At '$@'))})
        (C {(sort)} {(-u)})
        (SimpleCommand
          words: [{(sed)} {(SQ <'s/^/#undef /'>)}]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {(DQ ($ VSub_Name '$tmp') (/undefs))}
              spids: [233]
            )
          ]
        )
      ]
      negated: F
    )
    (Pipeline
      children: [
        (C {(cc)} {(-E)} {(-dM)} {(DQ ($ VSub_At '$@'))})
        (SimpleCommand
          words: [{(sort)}]
          redirects: [
            (Redir
              op_id: Redir_Great
              fd: 16777215
              arg_word: {(DQ ($ VSub_Name '$tmp') (/defs))}
              spids: [256]
            )
          ]
        )
      ]
      negated: F
    )
    (Case
      to_match: {($ VSub_Name '$debug')}
      arms: [
        (case_arm
          pat_list: [{(-d)}]
          action: [
            (SimpleCommand
              words: [{(cat)} {(DQ ($ VSub_Name '$tmp') (/undefs))} {(DQ ($ VSub_Name '$tmp') (/defs))}]
              redirects: [(Redir op_id:Redir_GreatAnd fd:1 arg_word:{(2)} spids:[284])]
            )
          ]
          spids: [269 270 16777215 287]
        )
      ]
      spids: [263 267 287]
    )
    (C {(DQ ($ VSub_Name '$unifdef'))} {($ VSub_Name '$debug')} {(-k)} {(-f)} 
      {(DQ ($ VSub_Name '$tmp') (/undefs))} {(-f)} {(DQ ($ VSub_Name '$tmp') (/defs))} {(DQ ($ VSub_At '$@'))}
    )
  ]
)