(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ATJOBDIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ATJOBDIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ATJOBDIR='> name:ATJOBDIR)
          op: assign_op.Equal
          rhs: {(DQ <'/var/at/jobs'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'CRONJOBDIR='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'CRONJOBDIR='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CRONJOBDIR='> name:CRONJOBDIR)
          op: assign_op.Equal
          rhs: {(DQ <'/var/cron/tabs'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'MAILSPOOL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'MAILSPOOL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MAILSPOOL='> name:MAILSPOOL)
          op: assign_op.Equal
          rhs: {(DQ <'/var/mail'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'SIGKILL='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'SIGKILL='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SIGKILL='> name:SIGKILL)
          op: assign_op.Equal
          rhs: {(DQ <-KILL>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'TEMPDIRS='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'TEMPDIRS='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TEMPDIRS='> name:TEMPDIRS)
          op: assign_op.Equal
          rhs: {(DQ <'/tmp /var/tmp'>)}
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'THISCMD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'THISCMD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'THISCMD='> name:THISCMD)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <'/usr/bin/basename'>
                    more_env: []
                    words: [{<'/usr/bin/basename'>} {($ Id.VSub_Number 0)}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'PWCMD='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'PWCMD='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PWCMD='> name:PWCMD)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (BracedVarSub
                  left: <Id.Left_DollarBrace '${'>
                  token: <Id.VSub_Name PWCMD>
                  var_name: PWCMD
                  suffix_op: 
                    (suffix_op.Unary
                      op: <Id.VTest_ColonHyphen _>
                      arg_word: 
                        {<Id.Lit_Slash '/'> <usr> <Id.Lit_Slash '/'> <sbin> <Id.Lit_Slash '/'> <pw>}
                    )
                  right: <Id.Right_DollarBrace '}'>
                )
              )
            }
        )
      ]
      redirects: []
    )
    (command.ShFunction
      name_tok: <err>
      name: err
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(${ Id.VSub_Name THISCMD) <Id.Lit_Colon ':'>} {($ Id.VSub_Star '*')}]
              redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <verbose>
      name: verbose
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-n>}
                    {(DQ ($ Id.VSub_DollarName vflag))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<0>}
                )
                (command.ControlFlow
                  keyword: <Id.ControlFlow_Return return>
                  arg_word: {<1>}
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_files>
      name: rm_files
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'totalcount='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'totalcount='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'totalcount='> name:totalcount)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_dir]
              iterable: (for_iter.Words words:[{(${ Id.VSub_Name TEMPDIRS)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'filecount='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'filecount='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filecount='> name:filecount)
                          op: assign_op.Equal
                          rhs: {<0>}
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <Id.Lit_LBracket '['>
                                      more_env: []
                                      words: [
                                        {<Id.Lit_LBracket '['>}
                                        {<Id.KW_Bang '!'>}
                                        {<-d>}
                                        {($ Id.VSub_DollarName _dir)}
                                        {<Id.Lit_RBracket ']'>}
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.Simple
                              blame_tok: <err>
                              more_env: []
                              words: [
                                {<err>}
                                {(DQ ($ Id.VSub_DollarName _dir) <' is not a valid directory.'>)}
                              ]
                              redirects: []
                              do_fork: T
                            )
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Continue continue>
                            )
                          ]
                          spids: [271 284]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {<-n>}
                            {
                              (DQ <'Removing files owned by ('> ($ Id.VSub_DollarName login) <') in '> 
                                ($ Id.VSub_DollarName _dir) <':'>
                              )
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'filecount='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'filecount='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'filecount='> name:filecount)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <find>
                                        more_env: []
                                        words: [
                                          {<find>}
                                          {(DQ ($ Id.VSub_DollarName _dir))}
                                          {<-user>}
                                          {(DQ ($ Id.VSub_DollarName login))}
                                          {<-delete>}
                                          {<-print>}
                                        ]
                                        redirects: [
                                          (Redir
                                            op: <Id.Redir_Great '2>'>
                                            loc: (redir_loc.Fd fd:2)
                                            arg: {<'/dev/null'>}
                                          )
                                        ]
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <wc>
                                        more_env: []
                                        words: [{<wc>} {<-l>}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <sed>
                                        more_env: []
                                        words: [{<sed>} {(SQ <'s/ *//'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {(DQ <' '> ($ Id.VSub_DollarName filecount) <' removed.'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'totalcount='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'totalcount='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'totalcount='> name:totalcount)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName totalcount)}
                                    right: {($ Id.VSub_DollarName filecount)}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_DollarName totalcount)}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <' files('> ($ Id.VSub_DollarName totalcount) <')'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_mail>
      name: rm_mail
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {<-n>}
                    {(DQ <'Removing mail spool(s) for ('> ($ Id.VSub_DollarName login) <'):'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {(${ Id.VSub_Name MAILSPOOL) <'/'> ($ Id.VSub_DollarName login)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {<-n>}
                            {
                              (DQ <' '> (${ Id.VSub_Name MAILSPOOL) <'/'> ($ Id.VSub_DollarName login))
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <' mailspool'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {(${ Id.VSub_Name MAILSPOOL) <'/'> ($ Id.VSub_DollarName login)}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [474 489]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {(${ Id.VSub_Name MAILSPOOL) <'/.'> (${ Id.VSub_Name login) <.pop>}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {<-n>}
                            {
                              (DQ <' '> (${ Id.VSub_Name MAILSPOOL) <'/.'> (${ Id.VSub_Name login) <.pop>)
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <' pop3'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [
                        {<rm>}
                        {(${ Id.VSub_Name MAILSPOOL) <'/.'> (${ Id.VSub_Name login) <.pop>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [533 551]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(SQ <.>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <kill_procs>
      name: kill_procs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {<-n>}
                    {
                      (DQ <'Terminating all processes owned by ('> ($ Id.VSub_DollarName login) <'):'>)
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'killcount='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'killcount='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'killcount='> name:killcount)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'proclist='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'proclist='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'proclist='> name:proclist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <ps>
                                more_env: []
                                words: [{<ps>} {<-U>} {($ Id.VSub_DollarName login)}]
                                redirects: [
                                  (Redir
                                    op: <Id.Redir_Great '2>'>
                                    loc: (redir_loc.Fd fd:2)
                                    arg: {<'/dev/null'>}
                                  )
                                ]
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <grep>
                                more_env: []
                                words: [{<grep>} {<-v>} {(SQ <'^\\ *PID'>)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <awk>
                                more_env: []
                                words: [{<awk>} {(SQ <'{print $1}'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_pid]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName proclist)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <kill>
                      more_env: []
                      words: [{<kill>} {(${ Id.VSub_Name SIGKILL)} {($ Id.VSub_DollarName _pid)}]
                      redirects: [
                        (Redir
                          op: <Id.Redir_Great '2>'>
                          loc: (redir_loc.Fd fd:2)
                          arg: {<'/dev/null'>}
                        )
                      ]
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'killcount='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'killcount='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'killcount='> name:killcount)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName killcount)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {
                      (DQ <' '> (${ Id.VSub_Name SIGKILL) <' signal sent to '> 
                        ($ Id.VSub_DollarName killcount) <' processes.'>
                      )
                    }
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_DollarName killcount)}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <' processes('> (${ Id.VSub_Name killcount) <')'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_at_jobs>
      name: rm_at_jobs
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'atjoblist='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'atjoblist='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'atjoblist='> name:atjoblist)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <find>
                            more_env: []
                            words: [
                              {<find>}
                              {(${ Id.VSub_Name ATJOBDIR)}
                              {<-maxdepth>}
                              {<1>}
                              {<-user>}
                              {($ Id.VSub_DollarName login)}
                              {<-print>}
                            ]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike 'jobcount='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'jobcount='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jobcount='> name:jobcount)
                  op: assign_op.Equal
                  rhs: {<0>}
                )
              ]
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {<-n>}
                    {(DQ <'Removing at(1) jobs owned by ('> ($ Id.VSub_DollarName login) <'):'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [_atjob]
              iterable: (for_iter.Words words:[{($ Id.VSub_DollarName atjoblist)}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [{<rm>} {<-f>} {($ Id.VSub_DollarName _atjob)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'jobcount='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'jobcount='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'jobcount='> name:jobcount)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (word_part.ArithSub
                                left: <Id.Left_DollarDParen '$(('>
                                anode: 
                                  (arith_expr.Binary
                                    op_id: Id.Arith_Plus
                                    left: {($ Id.VSub_DollarName jobcount)}
                                    right: {<Id.Lit_Digits 1>}
                                  )
                                right: <Id.Right_DollarDParen _>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <' '> ($ Id.VSub_DollarName jobcount) <' removed.'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {($ Id.VSub_DollarName jobcount)}
                    {<-ne>}
                    {<0>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <' at('> ($ Id.VSub_DollarName jobcount) <')'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_crontab>
      name: rm_crontab
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [
                    {<echo>}
                    {<-n>}
                    {(DQ <'Removing crontab for ('> ($ Id.VSub_DollarName login) <'):'>)}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-f>}
                                {(${ Id.VSub_Name CRONJOBDIR) <'/'> ($ Id.VSub_DollarName login)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [
                            {<echo>}
                            {<-n>}
                            {
                              (DQ <' '> (${ Id.VSub_Name CRONJOBDIR) <'/'> ($ Id.VSub_DollarName login))
                            }
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <' crontab'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
                    )
                    (command.Simple
                      blame_tok: <rm>
                      more_env: []
                      words: [
                        {<rm>}
                        {<-f>}
                        {(${ Id.VSub_Name CRONJOBDIR) <'/'> ($ Id.VSub_DollarName login)}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  spids: [1011 1026]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(SQ <.>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_ipc>
      name: rm_ipc
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <'Removing IPC mechanisms'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.ForEach
              keyword: <Id.KW_For for>
              iter_names: [i]
              iterable: (for_iter.Words words:[{<s>} {<m>} {<q>}])
              semi_tok: <Id.Op_Semi _>
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          blame_tok: <ipcs>
                          more_env: []
                          words: [{<ipcs>} {<-> ($ Id.VSub_DollarName i)}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <awk>
                          more_env: []
                          words: [
                            {<awk>}
                            {<-v>}
                            {<Id.Lit_VarLike 'i='> ($ Id.VSub_DollarName i)}
                            {<-v>}
                            {<Id.Lit_VarLike 'login='> ($ Id.VSub_Number 1)}
                            {(SQ <'$1 == i && $5 == login { print $2 }'>)}
                          ]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <xargs>
                          more_env: []
                          words: [{<xargs>} {<-n>} {<1>} {<ipcrm>} {<-> ($ Id.VSub_DollarName i)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>]
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(SQ <.>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <rm_user>
      name: rm_user
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [{<Id.Lit_LBracket '['>} {<-n>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'login='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'login='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'login='> name:login)
                      op: assign_op.Equal
                      rhs: {($ Id.VSub_Number 1)}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <'Removing user ('> ($ Id.VSub_DollarName login) <')'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-n>}
                    {(DQ ($ Id.VSub_DollarName pw_rswitch))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (BraceGroup
                  left: <Id.Lit_LBrace '{'>
                  children: [
                    (command.AndOr
                      children: [
                        (command.Simple
                          blame_tok: <verbose>
                          more_env: []
                          words: [{<verbose>}]
                          redirects: []
                          do_fork: T
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <' (including home directory)'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                    (command.AndOr
                      children: [
                        (command.Pipeline
                          negated: <Id.KW_Bang '!'>
                          children: [
                            (command.Simple
                              blame_tok: <verbose>
                              more_env: []
                              words: [{<verbose>}]
                              redirects: []
                              do_fork: T
                            )
                          ]
                          ops: []
                        )
                        (command.Simple
                          blame_tok: <echo>
                          more_env: []
                          words: [{<echo>} {<-n>} {(DQ <' home'>)}]
                          redirects: []
                          do_fork: T
                        )
                      ]
                      ops: [<Id.Op_DAmp _>]
                    )
                  ]
                  redirects: []
                  right: <Id.Lit_RBrace '}'>
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <' passwd'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <' from the system:'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <Id.Left_DollarBrace '${'>
              more_env: []
              words: [
                {(${ Id.VSub_Name PWCMD)}
                {<userdel>}
                {<-n>}
                {($ Id.VSub_DollarName login)}
                {($ Id.VSub_DollarName pw_rswitch)}
              ]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <verbose>
                  more_env: []
                  words: [{<verbose>}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(SQ <' Done.'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <prompt_yesno>
      name: prompt_yesno
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.AndOr
              children: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {<-n>}
                    {(DQ ($ Id.VSub_Number 1))}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'msg='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'msg='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'msg='> name:msg)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_Number 1))}
                    )
                  ]
                  redirects: []
                )
                (command.ControlFlow keyword:<Id.ControlFlow_Return return>)
              ]
              ops: [<Id.Op_DAmp _> <Id.Op_DPipe _>]
            )
            (command.WhileUntil
              keyword: <Id.KW_While while>
              cond: 
                (condition.Shell
                  commands: [
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <Id.Lit_Colon ':'>
                          more_env: []
                          words: [{<Id.Lit_Colon ':'>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                  ]
                )
              body: 
                (command.DoGroup
                  left: <Id.KW_Do do>
                  children: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {<-n>} {(DQ ($ Id.VSub_DollarName msg))}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <read>
                      more_env: []
                      words: [{<read>} {<_ans>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Case
                      case_kw: <Id.KW_Case case>
                      to_match: (case_arg.Word w:{($ Id.VSub_DollarName _ans)})
                      arms_start: <Id.KW_In in>
                      arms: [
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Oo> <Id.Lit_RBracket ']'>
                                }
                                {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<1>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_LBracket '['>
                          pattern: 
                            (pat.Words
                              words: [
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Ss> <Id.Lit_RBracket ']'>
                                }
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> 
                                  <Ee> <Id.Lit_RBracket ']'>
                                }
                                {<Id.Lit_LBracket '['> <Yy> <Id.Lit_RBracket ']'>}
                              ]
                            )
                          middle: <Id.Right_CasePat _>
                          action: [
                            (command.ControlFlow
                              keyword: <Id.ControlFlow_Return return>
                              arg_word: {<0>}
                            )
                          ]
                          right: <Id.Op_DSemi _>
                        )
                        (CaseArm
                          left: <Id.Lit_Star '*'>
                          pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                          middle: <Id.Right_CasePat _>
                          action: []
                          right: <Id.Op_DSemi _>
                        )
                      ]
                      arms_end: <Id.KW_Esac esac>
                      redirects: []
                    )
                  ]
                  right: <Id.KW_Done done>
                )
              redirects: []
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name_tok: <show_usage>
      name: show_usage
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [
                {<echo>}
                {(DQ <'usage: '> (${ Id.VSub_Name THISCMD) <' [-yv] [-f file] [user ...]'>)}
              ]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'       if the -y switch is used, either the -f switch or'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <echo>
              more_env: []
              words: [{<echo>} {(DQ <'       one or more user names must be given'>)}]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'ffile='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'ffile='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ffile='> name:ffile)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'fflag='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'fflag='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fflag='> name:fflag)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'procowner='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'procowner='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'procowner='> name:procowner)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'pw_rswitch='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'pw_rswitch='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pw_rswitch='> name:pw_rswitch)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'userlist='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'userlist='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'userlist='> name:userlist)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'yflag='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'yflag='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yflag='> name:yflag)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'vflag='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'vflag='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vflag='> name:vflag)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'procowner='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'procowner='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'procowner='> name:procowner)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <'/usr/bin/id'>
                    more_env: []
                    words: [{<'/usr/bin/id'>} {<-u>}]
                    redirects: []
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ ($ Id.VSub_DollarName procowner))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <0>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <err>
              more_env: []
              words: [{<err>} {(SQ <'you must be root (0) to use this utility.'>)}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1576 1594]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike 'args='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'args='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'args='> name:args)
          op: assign_op.Equal
          rhs: 
            {
              (CommandSub
                left_token: <Id.Left_Backtick '`'>
                child: 
                  (command.Simple
                    blame_tok: <getopt>
                    more_env: []
                    words: [{<getopt>} {<yvf> <Id.Lit_Colon ':'>} {($ Id.VSub_Star '*')}]
                    redirects: [
                      (Redir
                        op: <Id.Redir_Great '2>'>
                        loc: (redir_loc.Fd fd:2)
                        arg: {<'/dev/null'>}
                      )
                    ]
                    do_fork: T
                  )
                right: <Id.Backtick_Right '`'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {(DQ ($ Id.VSub_QMark '?'))}
                        {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                        {(DQ <0>)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <show_usage>
              more_env: []
              words: [{<show_usage>}]
              redirects: []
              do_fork: T
            )
            (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [1626 1644]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <set>
      more_env: []
      words: [{<set>} {<-->} {($ Id.VSub_DollarName args)}]
      redirects: []
      do_fork: T
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [_switch]
      iterable: (for_iter__Args)
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.Case
              case_kw: <Id.KW_Case case>
              to_match: (case_arg.Word w:{($ Id.VSub_DollarName _switch)})
              arms_start: <Id.KW_In in>
              arms: [
                (CaseArm
                  left: <-y>
                  pattern: (pat.Words words:[{<-y>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'yflag='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'yflag='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'yflag='> name:yflag)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-v>
                  pattern: (pat.Words words:[{<-v>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'vflag='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'vflag='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'vflag='> name:vflag)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-f>
                  pattern: (pat.Words words:[{<-f>}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'fflag='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'fflag='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fflag='> name:fflag)
                          op: assign_op.Equal
                          rhs: {<1>}
                        )
                      ]
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'ffile='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'ffile='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ffile='> name:ffile)
                          op: assign_op.Equal
                          rhs: {(DQ ($ Id.VSub_Number 2))}
                        )
                      ]
                      redirects: []
                    )
                    (command.Sentence
                      child: 
                        (command.Simple
                          blame_tok: <shift>
                          more_env: []
                          words: [{<shift>}]
                          redirects: []
                          do_fork: T
                        )
                      terminator: <Id.Op_Semi _>
                    )
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  right: <Id.Op_DSemi _>
                )
                (CaseArm
                  left: <-->
                  pattern: (pat.Words words:[{<-->}])
                  middle: <Id.Right_CasePat _>
                  action: [
                    (command.Simple
                      blame_tok: <shift>
                      more_env: []
                      words: [{<shift>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow keyword:<Id.ControlFlow_Break break>)
                  ]
                  right: <Id.Op_DSemi _>
                )
              ]
              arms_end: <Id.KW_Esac esac>
              redirects: []
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {($ Id.VSub_DollarName fflag)}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.ShAssignment
              left: <Id.Lit_VarLike '_insecure='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_insecure='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_insecure='> name:_insecure)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <find>
                            more_env: []
                            words: [
                              {<find>}
                              {($ Id.VSub_DollarName ffile)}
                              {<Id.KW_Bang '!'>}
                              {<-user>}
                              {<0>}
                              {<-or>}
                              {<-perm>}
                              {<Id.Lit_Other '+'> <0022>}
                            ]
                            redirects: []
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-n>}
                                {(DQ ($ Id.VSub_DollarName _insecure))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [
                        {<err>}
                        {
                          (DQ <'file ('> ($ Id.VSub_DollarName ffile) 
                            <') must be owned by and writeable only by root.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1794 1807]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-r>}
                                {(DQ ($ Id.VSub_DollarName ffile))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.ShAssignment
                      left: <Id.Lit_VarLike 'userlist='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike 'userlist='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'userlist='> name:userlist)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <cat>
                                        more_env: []
                                        words: [{<cat>} {($ Id.VSub_DollarName ffile)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.WhileUntil
                                        keyword: <Id.KW_While while>
                                        cond: 
                                          (condition.Shell
                                            commands: [
                                              (command.Sentence
                                                child: 
                                                  (command.Simple
                                                    blame_tok: <read>
                                                    more_env: []
                                                    words: [{<read>} {<_user>} {<_junk>}]
                                                    redirects: []
                                                    do_fork: T
                                                  )
                                                terminator: <Id.Op_Semi _>
                                              )
                                            ]
                                          )
                                        body: 
                                          (command.DoGroup
                                            left: <Id.KW_Do do>
                                            children: [
                                              (command.Case
                                                case_kw: <Id.KW_Case case>
                                                to_match: 
                                                  (case_arg.Word
                                                    w: {($ Id.VSub_DollarName _user)}
                                                  )
                                                arms_start: <Id.KW_In in>
                                                arms: [
                                                  (CaseArm
                                                    left: <Id.Lit_EscapedChar '\\#'>
                                                    pattern: 
                                                      (pat.Words
                                                        words: [
                                                          {
                                                            (word_part.EscapedLiteral
                                                              token: <Id.Lit_EscapedChar '\\#'>
                                                              ch: '#'
                                                            ) <Id.Lit_Star '*'>
                                                          }
                                                          {(SQ )}
                                                        ]
                                                      )
                                                    middle: <Id.Right_CasePat _>
                                                    action: []
                                                    right: <Id.Op_DSemi _>
                                                  )
                                                  (CaseArm
                                                    left: <Id.Lit_Star '*'>
                                                    pattern: (pat.Words words:[{<Id.Lit_Star '*'>}])
                                                    middle: <Id.Right_CasePat _>
                                                    action: [
                                                      (command.Simple
                                                        blame_tok: <echo>
                                                        more_env: []
                                                        words: [
                                                          {<echo>}
                                                          {<-n>}
                                                          {
                                                            (DQ ($ Id.VSub_DollarName userlist) <' '> 
                                                              ($ Id.VSub_DollarName _user)
                                                            )
                                                          }
                                                        ]
                                                        redirects: []
                                                        do_fork: T
                                                      )
                                                    ]
                                                    right: <Id.Op_DSemi _>
                                                  )
                                                ]
                                                arms_end: <Id.KW_Esac esac>
                                                redirects: []
                                              )
                                            ]
                                            right: <Id.KW_Done done>
                                          )
                                        redirects: []
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                  ]
                  spids: [1827 1840]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [1759 1768]
        )
      ]
      else_kw: <Id.KW_Else else>
      else_action: [
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [{<Id.Lit_LBracket '['>} {($ Id.VSub_Number 1)} {<Id.Lit_RBracket ']'>}]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              left: <Id.KW_Do do>
              children: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'userlist='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'userlist='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'userlist='> name:userlist)
                      op: assign_op.Equal
                      rhs: {(DQ ($ Id.VSub_DollarName userlist) <' '> ($ Id.VSub_Number 1))}
                    )
                  ]
                  redirects: []
                )
                (command.Simple
                  blame_tok: <shift>
                  more_env: []
                  words: [{<shift>}]
                  redirects: []
                  do_fork: T
                )
              ]
              right: <Id.KW_Done done>
            )
          redirects: []
        )
      ]
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (command.Simple
                      blame_tok: <Id.Lit_LBracket '['>
                      more_env: []
                      words: [
                        {<Id.Lit_LBracket '['>}
                        {<Id.KW_Bang '!'>}
                        {(DQ ($ Id.VSub_DollarName userlist))}
                        {<Id.Lit_RBracket ']'>}
                      ]
                      redirects: []
                      do_fork: T
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_DollarName fflag)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [
                        {<err>}
                        {
                          (DQ <'('> ($ Id.VSub_DollarName ffile) 
                            <') does not exist or does not contain any user names.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [1981 1990]
                )
                (IfArm
                  keyword: <Id.KW_Elif elif>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {($ Id.VSub_DollarName yflag)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <show_usage>
                      more_env: []
                      words: [{<show_usage>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                  spids: [2007 2016]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <'Please enter one or more usernames: '>)}]
                  redirects: []
                  do_fork: T
                )
                (command.Simple
                  blame_tok: <read>
                  more_env: []
                  words: [{<read>} {<userlist>}]
                  redirects: []
                  do_fork: T
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
          ]
          spids: [1965 1978]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_user='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_user='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_user='> name:_user)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      left: <Id.Lit_VarLike '_uid='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike '_uid='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_uid='> name:_uid)
          op: assign_op.Equal
          rhs: (rhs_word__Empty)
        )
      ]
      redirects: []
    )
    (command.ForEach
      keyword: <Id.KW_For for>
      iter_names: [_user]
      iterable: (for_iter.Words words:[{($ Id.VSub_DollarName userlist)}])
      semi_tok: <Id.Op_Semi _>
      body: 
        (command.DoGroup
          left: <Id.KW_Do do>
          children: [
            (command.ShAssignment
              left: <Id.Lit_VarLike 'userrec='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike 'userrec='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'userrec='> name:userrec)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Simple
                            blame_tok: <pw>
                            more_env: []
                            words: [{<pw>} {<usershow>} {<-n>} {($ Id.VSub_DollarName _user)}]
                            redirects: [
                              (Redir
                                op: <Id.Redir_Great '2>'>
                                loc: (redir_loc.Fd fd:2)
                                arg: {<'/dev/null'>}
                              )
                            ]
                            do_fork: T
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_QMark '?'))}
                                {<Id.KW_Bang '!'> <Id.Lit_Equals '='>}
                                {(DQ <0>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [
                        {<err>}
                        {
                          (DQ <'user ('> ($ Id.VSub_DollarName _user) 
                            <') does not exist in the password database.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  spids: [2095 2113]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.ShAssignment
              left: <Id.Lit_VarLike '_uid='>
              pairs: [
                (AssignPair
                  left: <Id.Lit_VarLike '_uid='>
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_uid='> name:_uid)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (CommandSub
                        left_token: <Id.Left_Backtick '`'>
                        child: 
                          (command.Pipeline
                            children: [
                              (command.Simple
                                blame_tok: <echo>
                                more_env: []
                                words: [{<echo>} {($ Id.VSub_DollarName userrec)}]
                                redirects: []
                                do_fork: T
                              )
                              (command.Simple
                                blame_tok: <awk>
                                more_env: []
                                words: [{<awk>} {<-F> <Id.Lit_Colon ':'>} {(SQ <'{print $3}'>)}]
                                redirects: []
                                do_fork: T
                              )
                            ]
                            ops: [<Id.Op_Pipe _>]
                          )
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                )
              ]
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {(DQ ($ Id.VSub_DollarName _uid))}
                                {<Id.Lit_Equals '='>}
                                {(DQ <0>)}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <err>
                      more_env: []
                      words: [
                        {<err>}
                        {
                          (DQ <'user ('> ($ Id.VSub_DollarName _user) 
                            <') has uid 0. You may not remove this user.'>
                          )
                        }
                      ]
                      redirects: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      keyword: <Id.ControlFlow_Continue continue>
                    )
                  ]
                  spids: [2152 2169]
                )
              ]
              else_action: []
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.If
              if_kw: <Id.KW_If if>
              arms: [
                (IfArm
                  keyword: <Id.KW_If if>
                  cond: 
                    (condition.Shell
                      commands: [
                        (command.Sentence
                          child: 
                            (command.Simple
                              blame_tok: <Id.Lit_LBracket '['>
                              more_env: []
                              words: [
                                {<Id.Lit_LBracket '['>}
                                {<-z>}
                                {(DQ ($ Id.VSub_DollarName yflag))}
                                {<Id.Lit_RBracket ']'>}
                              ]
                              redirects: []
                              do_fork: T
                            )
                          terminator: <Id.Op_Semi _>
                        )
                      ]
                    )
                  then_kw: <Id.KW_Then then>
                  action: [
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {(DQ <'Matching password entry:'>)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>} {($ Id.VSub_DollarName userrec)}]
                      redirects: []
                      do_fork: T
                    )
                    (command.Simple
                      blame_tok: <echo>
                      more_env: []
                      words: [{<echo>}]
                      redirects: []
                      do_fork: T
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Pipeline
                                      negated: <Id.KW_Bang '!'>
                                      children: [
                                        (command.Simple
                                          blame_tok: <prompt_yesno>
                                          more_env: []
                                          words: [
                                            {<prompt_yesno>}
                                            {(DQ <'Is this the entry you wish to remove? '>)}
                                          ]
                                          redirects: []
                                          do_fork: T
                                        )
                                      ]
                                      ops: []
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)]
                          spids: [2234 2246]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                    (command.ShAssignment
                      left: <Id.Lit_VarLike '_homedir='>
                      pairs: [
                        (AssignPair
                          left: <Id.Lit_VarLike '_homedir='>
                          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike '_homedir='> name:_homedir)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (CommandSub
                                left_token: <Id.Left_Backtick '`'>
                                child: 
                                  (command.Pipeline
                                    children: [
                                      (command.Simple
                                        blame_tok: <echo>
                                        more_env: []
                                        words: [{<echo>} {($ Id.VSub_DollarName userrec)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                      (command.Simple
                                        blame_tok: <awk>
                                        more_env: []
                                        words: [{<awk>} {<-F> <Id.Lit_Colon ':'>} {(SQ <'{print $9}'>)}]
                                        redirects: []
                                        do_fork: T
                                      )
                                    ]
                                    ops: [<Id.Op_Pipe _>]
                                  )
                                right: <Id.Backtick_Right '`'>
                              )
                            }
                        )
                      ]
                      redirects: []
                    )
                    (command.If
                      if_kw: <Id.KW_If if>
                      arms: [
                        (IfArm
                          keyword: <Id.KW_If if>
                          cond: 
                            (condition.Shell
                              commands: [
                                (command.Sentence
                                  child: 
                                    (command.Simple
                                      blame_tok: <prompt_yesno>
                                      more_env: []
                                      words: [
                                        {<prompt_yesno>}
                                        {
                                          (DQ <'Remove user\'s home directory ('> 
                                            ($ Id.VSub_DollarName _homedir) <')? '>
                                          )
                                        }
                                      ]
                                      redirects: []
                                      do_fork: T
                                    )
                                  terminator: <Id.Op_Semi _>
                                )
                              ]
                            )
                          then_kw: <Id.KW_Then then>
                          action: [
                            (command.ShAssignment
                              left: <Id.Lit_VarLike 'pw_rswitch='>
                              pairs: [
                                (AssignPair
                                  left: <Id.Lit_VarLike 'pw_rswitch='>
                                  lhs: 
                                    (sh_lhs_expr.Name
                                      left: <Id.Lit_VarLike 'pw_rswitch='>
                                      name: pw_rswitch
                                    )
                                  op: assign_op.Equal
                                  rhs: {(DQ <-r>)}
                                )
                              ]
                              redirects: []
                            )
                          ]
                          spids: [2276 2287]
                        )
                      ]
                      else_action: []
                      fi_kw: <Id.KW_Fi fi>
                      redirects: []
                    )
                  ]
                  spids: [2200 2213]
                )
              ]
              else_kw: <Id.KW_Else else>
              else_action: [
                (command.ShAssignment
                  left: <Id.Lit_VarLike 'pw_rswitch='>
                  pairs: [
                    (AssignPair
                      left: <Id.Lit_VarLike 'pw_rswitch='>
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pw_rswitch='> name:pw_rswitch)
                      op: assign_op.Equal
                      rhs: {(DQ <-r>)}
                    )
                  ]
                  redirects: []
                )
              ]
              fi_kw: <Id.KW_Fi fi>
              redirects: []
            )
            (command.Simple
              blame_tok: <Id.Left_DollarBrace '${'>
              more_env: []
              words: [{(${ Id.VSub_Name PWCMD)} {<lock>} {($ Id.VSub_DollarName _user)}]
              redirects: [(Redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})]
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {<-n>} {(DQ <'Removing user ('> ($ Id.VSub_DollarName _user) <'):'>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
            (command.Simple
              blame_tok: <rm_crontab>
              more_env: []
              words: [{<rm_crontab>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm_at_jobs>
              more_env: []
              words: [{<rm_at_jobs>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm_ipc>
              more_env: []
              words: [{<rm_ipc>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <kill_procs>
              more_env: []
              words: [{<kill_procs>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm_files>
              more_env: []
              words: [{<rm_files>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm_mail>
              more_env: []
              words: [{<rm_mail>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <rm_user>
              more_env: []
              words: [{<rm_user>} {($ Id.VSub_DollarName _user)}]
              redirects: []
              do_fork: T
            )
            (command.AndOr
              children: [
                (command.Pipeline
                  negated: <Id.KW_Bang '!'>
                  children: [
                    (command.Simple
                      blame_tok: <verbose>
                      more_env: []
                      words: [{<verbose>}]
                      redirects: []
                      do_fork: T
                    )
                  ]
                  ops: []
                )
                (command.Simple
                  blame_tok: <echo>
                  more_env: []
                  words: [{<echo>} {(DQ <.>)}]
                  redirects: []
                  do_fork: T
                )
              ]
              ops: [<Id.Op_DAmp _>]
            )
          ]
          right: <Id.KW_Done done>
        )
      redirects: []
    )
  ]
)