public static function generateNew(Kernel $kernel, array &$options = array())
 {
     $builder = new UserClosure([], ['$kernel']);
     $builder[] = '$cache = new UniversalCache(array());';
     if (extension_loaded('apcu') && isset($options['APC'])) {
         $builder[] = new Statement(new MethodCall('$cache', 'addBackend', [new NewObject('UniversalCache\\ApcuCache', [$kernel->getApplicationID()])]));
     }
     if (extension_loaded('memcached') && isset($options['Memcached'])) {
         if (isset($options['Memcached']['PersistentId'])) {
             $builder[] = '$memcached = ' . new NewObject('Memcached', [$options['Memcached']['PersistentId']]) . ';';
         } else {
             $builder[] = '$memcached = new Memcached;';
         }
         if (isset($options['Memcached']['Servers'])) {
             foreach ($options['Memcached']['Servers'] as $server) {
                 $builder[] = new Statement(new MethodCall('$memcached', 'addServer', $server));
             }
         }
         $builder[] = new Statement(new MethodCall('$cache', 'addBackend', ['$memcached']));
     }
     if (isset($options['FileSystem'])) {
         $builder[] = new Statement(new MethodCall('$cache', 'addBackend', [new NewObject('UniversalCache\\FileSystemCache', [$kernel->getCacheDir()])]));
     }
     $builder[] = 'return $cache;';
     $className = get_called_class();
     return new NewObject($className, [$options, $builder]);
 }
 /**
  * $kernel->asset->loader
  * $kernel->asset->writer.
  */
 public function register(Kernel $kernel, $options = array())
 {
     $kernel->asset = function () use($kernel, $options) {
         $config = new AssetConfig($options);
         $config->setEnvironment($kernel->environment);
         $config->setNamespace($kernel->getApplicationUUID());
         $cache = new UniversalCache(array(new ApcuCache($kernel->getApplicationUUID()), new FileSystemCache($kernel->getCacheDir())));
         $config->setCache($cache);
         $config->setRoot(PH_APP_ROOT);
         $loader = new AssetLoader($config);
         $render = new AssetRender($config, $loader);
         $compiler = $render->getCompiler();
         $compiler->defaultJsCompressor = 'uglifyjs';
         $compiler->defaultCssCompressor = null;
         return (object) array('loader' => $loader, 'config' => $config, 'render' => $render, 'compiler' => $compiler, 'cache' => $cache);
     };
 }