(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PATH='> name:PATH)
          op: assign_op.Equal
          rhs: 
            {<'/sbin'> <Id.Lit_Colon ':'> <'/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'> <Id.Lit_Colon ':'> 
              <'/usr/bin'>
            }
          spids: [38]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DAEMON='> name:DAEMON)
          op: assign_op.Equal
          rhs: {<'/usr/bin/speech-dispatcher'>}
          spids: [47]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PIDFILE='> name:PIDFILE)
          op: assign_op.Equal
          rhs: {<'/var/run/speech-dispatcher/speech-dispatcher.pid'>}
          spids: [50]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'NAME='> name:NAME)
          op: assign_op.Equal
          rhs: {<speech-dispatcher>}
          spids: [53]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'DESC='> name:DESC)
          op: assign_op.Equal
          rhs: {(SQ <'Speech Dispatcher'>)}
          spids: [56]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USER='> name:USER)
          op: assign_op.Equal
          rhs: {<speech-dispatcher>}
          spids: [61]
        )
      ]
      redirects: []
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<test>} {<-f>} {($ Id.VSub_DollarName DAEMON)})
        (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
      ]
    )
    (C {<.>} {<'/lib/lsb/init-functions'>})
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'RUN='> name:RUN)
          op: assign_op.Equal
          rhs: {<no>}
          spids: [83]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {<-f>} {<'/etc/default/speech-dispatcher'>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [(C {<.>} {<'/etc/default/speech-dispatcher'>})]
          spids: [90 102]
        )
      ]
      else_action: []
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {(DQ <x> ($ Id.VSub_DollarName RUN))} 
                      {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <xyes>)} {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (C {<log_action_msg>} 
              {(DQ ($ Id.VSub_DollarName NAME) <' disabled; edit /etc/default/speech-dispatcher'>)}
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
          ]
          spids: [112 132]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<set>} {<-e>})
    (command.ShFunction
      name: do_start
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'PIDDIR='> name:PIDDIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        child: (C {<dirname>} {($ Id.VSub_DollarName PIDFILE)})
                        right: <Id.Backtick_Right '`'>
                      )
                    }
                  spids: [163]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName PIDDIR)} {<Id.Lit_RBracket ']'>})
                (C {<install>} {<-d>} {<-ospeech-dispatcher>} {<-gaudio>} {<-m750>} 
                  {($ Id.VSub_DollarName PIDDIR)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SDDIR='> name:SDDIR)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName PIDDIR) <'/.speech-dispatcher'>}
                  spids: [196]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName SDDIR)} {<Id.Lit_RBracket ']'>})
                (C {<ln>} {<-s>} {($ Id.VSub_DollarName PIDDIR)} {($ Id.VSub_DollarName SDDIR)})
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LOGDIR='> name:LOGDIR)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName SDDIR) <'/log'>}
                  spids: [220]
                )
              ]
              redirects: []
            )
            (command.AndOr
              ops: [Id.Op_DPipe]
              children: [
                (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName LOGDIR)} {<Id.Lit_RBracket ']'>})
                (C {<ln>} {<-s>} {<'/var/log/speech-dispatcher'>} {($ Id.VSub_DollarName LOGDIR)})
              ]
            )
            (C {<start-stop-daemon>} {<--oknodo>} {<--start>} {<--quiet>} {<--chuid>} 
              {($ Id.VSub_DollarName USER)} {<--pidfile>} {($ Id.VSub_DollarName PIDFILE)} {<--exec>} {($ Id.VSub_DollarName DAEMON)} {<-->} 
              {<--pid-file>} {($ Id.VSub_DollarName PIDFILE)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.ShFunction
      name: do_stop
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (C {<start-stop-daemon>} {<--oknodo>} {<--stop>} {<--quiet>} {<--user>} 
              {($ Id.VSub_DollarName USER)} {<--pidfile>} {($ Id.VSub_DollarName PIDFILE)} {<--exec>} {($ Id.VSub_DollarName DAEMON)}
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_Number 1))}
      arms: [
        (case_arm
          pat_list: [{<start>}]
          action: [
            (C {<log_daemon_msg>} {(DQ <'Starting '> ($ Id.VSub_DollarName DESC))} 
              {(DQ <speech-dispatcher>)}
            )
            (C {<do_start>})
            (C {<log_end_msg>} {($ Id.VSub_QMark '?')})
          ]
          spids: [317 318 341 -1]
        )
        (case_arm
          pat_list: [{<stop>}]
          action: [
            (C {<log_daemon_msg>} {(DQ <'Stopping '> ($ Id.VSub_DollarName DESC))} 
              {(DQ <speech-dispatcher>)}
            )
            (C {<do_stop>})
            (C {<log_end_msg>} {($ Id.VSub_QMark '?')})
          ]
          spids: [344 345 368 -1]
        )
        (case_arm
          pat_list: [{<reload>} {<force-reload>}]
          action: [
            (C {<log_daemon_msg>} 
              {(DQ <'Reloading '> ($ Id.VSub_DollarName DESC) <' configuration files'>)} {(DQ <speech-dispatcher>)}
            )
            (C {<start-stop-daemon>} {<--oknodo>} {<--stop>} {<--signal>} {<1>} {<--quiet>} {<--user>} 
              {($ Id.VSub_DollarName USER)} {<--pidfile>} {($ Id.VSub_DollarName PIDFILE)} {<--exec>} {($ Id.VSub_DollarName DAEMON)}
            )
            (C {<log_end_msg>} {($ Id.VSub_QMark '?')})
          ]
          spids: [371 374 422 -1]
        )
        (case_arm
          pat_list: [{<restart>}]
          action: [
            (C {<log_daemon_msg>} {(DQ <'Restarting '> ($ Id.VSub_DollarName DESC))} 
              {(DQ <speech-dispatcher>)}
            )
            (C {<do_stop>})
            (C {<sleep>} {<3>})
            (C {<do_start>})
            (C {<log_end_msg>} {($ Id.VSub_QMark '?')})
          ]
          spids: [425 426 457 -1]
        )
        (case_arm
          pat_list: [{<Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'N='> name:N)
                  op: assign_op.Equal
                  rhs: {<'/etc/init.d/'> ($ Id.VSub_DollarName NAME)}
                  spids: [464]
                )
              ]
              redirects: []
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> ($ Id.VSub_DollarName N) 
                    <' {start|stop|restart|reload|force-reload}'>
                  )
                }
              ]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [460 461 486 -1]
        )
      ]
      redirects: []
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)