(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 (Token id:Id.Lit_Chars val:'Speech Dispatcher' span_id:58))}
          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: (Token id:Id.ControlFlow_Exit val:exit span_id:73)
          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: (Token id:Id.Op_Semi val:';' span_id:100)
            )
          ]
          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: (Token id:Id.Op_Semi val:';' span_id:130)
            )
          ]
          action: [
            (C {(log_action_msg)} 
              {(DQ ($ Id.VSub_DollarName '$NAME') (' disabled; edit /etc/default/speech-dispatcher'))}
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:143)
              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: (Token id:Id.Left_Backtick val:'`' span_id:164)
                        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: (Token id:Id.Redir_GreatAnd val:'>&' span_id:477)
                  fd: -1
                  arg_word: {(2)}
                )
              ]
            )
            (command.ControlFlow
              token: (Token id:Id.ControlFlow_Exit val:exit span_id:481)
              arg_word: {(1)}
            )
          ]
          spids: [460 461 486 -1]
        )
      ]
    )
    (command.ControlFlow token:(Token id:Id.ControlFlow_Exit val:exit span_id:491) arg_word:{(0)})
  ]
)