protected function loadAvailableDaemonClasses()
 {
     $loader = new PhutilSymbolLoader();
     return $loader->setAncestorClass('PhutilDaemon')->setConcreteOnly(true)->selectSymbolsWithoutLoading();
 }
 $n = 1;
 if (!$is_debug) {
     if (is_numeric($daemon)) {
         $n = $daemon;
         if ($n < 1) {
             throw new Exception("Count must be at least 1!");
         }
         $daemon = idx($argv, 3);
         if (!$daemon) {
             throw new Exception("Daemon name required!");
         }
         $pass_argv = array_slice($argv, 4);
     }
 }
 $loader = new PhutilSymbolLoader();
 $symbols = $loader->setAncestorClass('PhutilDaemon')->selectSymbolsWithoutLoading();
 $symbols = ipull($symbols, 'name');
 $match = array();
 foreach ($symbols as $symbol) {
     if (stripos($symbol, $daemon) !== false) {
         if (strtolower($symbol) == strtolower($daemon)) {
             $match = array($symbol);
             break;
         } else {
             $match[] = $symbol;
         }
     }
 }
 if (count($match) == 0) {
     throw new Exception("No daemons match! Use 'phd list' for a list of daemons.");
 } else {