(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PATH)
          op: assign_op.Equal
          rhs: 
            {</sbin> <Id.Lit_Other ':'> </bin> <Id.Lit_Other ':'> </usr/sbin> <Id.Lit_Other ':'> 
              </usr/bin>
            }
          spids: [38]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DAEMON)
          op: assign_op.Equal
          rhs: {</usr/bin/speech-dispatcher>}
          spids: [47]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:PIDFILE)
          op: assign_op.Equal
          rhs: {</var/run/speech-dispatcher/speech-dispatcher.pid>}
          spids: [50]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:NAME)
          op: assign_op.Equal
          rhs: {<speech-dispatcher>}
          spids: [53]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:DESC)
          op: assign_op.Equal
          rhs: {(SQ <'Speech Dispatcher'>)}
          spids: [56]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:USER)
          op: assign_op.Equal
          rhs: {<speech-dispatcher>}
          spids: [61]
        )
      ]
    )
    (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 name:RUN) op:assign_op.Equal rhs:{<no>} spids:[83])]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (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]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (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]
        )
      ]
    )
    (C {<Id.KW_Set set>} {<-e>})
    (command.ShFunction
      name: do_start
      body: 
        (command.BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:PIDDIR)
                  op: assign_op.Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Id.Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {<dirname>} {($ Id.VSub_DollarName '$PIDFILE')})]
                          )
                      )
                    }
                  spids: [163]
                )
              ]
            )
            (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 name:SDDIR)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$PIDDIR') </.speech-dispatcher>}
                  spids: [196]
                )
              ]
            )
            (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 name:LOGDIR)
                  op: assign_op.Equal
                  rhs: {($ Id.VSub_DollarName '$SDDIR') </log>}
                  spids: [220]
                )
              ]
            )
            (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')}
            )
          ]
        )
    )
    (command.ShFunction
      name: do_stop
      body: 
        (command.BraceGroup
          children: [
            (C {<start-stop-daemon>} {<--oknodo>} {<--stop>} {<--quiet>} {<--user>} 
              {($ Id.VSub_DollarName '$USER')} {<--pidfile>} {($ Id.VSub_DollarName '$PIDFILE')} {<--exec>} {($ Id.VSub_DollarName '$DAEMON')}
            )
          ]
        )
    )
    (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 name:N)
                  op: assign_op.Equal
                  rhs: {</etc/init.d/> ($ Id.VSub_DollarName '$NAME')}
                  spids: [464]
                )
              ]
            )
            (command.Simple
              words: [
                {<echo>}
                {
                  (DQ <'Usage: '> ($ Id.VSub_DollarName '$N') 
                    <' {start|stop|restart|reload|force-reload}'>
                  )
                }
              ]
              redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})]
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>})
          ]
          spids: [460 461 486 -1]
        )
      ]
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)