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]);
 }
 public static function canonicalizeConfig(Kernel $kernel, array $options)
 {
     if (!isset($options['Default'])) {
         $options['Default'] = 'en';
     }
     if (!isset($options['LocaleDir'])) {
         $options['LocaleDir'] = 'locale';
     }
     if (!isset($options['Domain'])) {
         $options['Domain'] = $kernel->getApplicationID();
     }
     if (!isset($options['Langs'])) {
         $options['Langs'] = ['en' => 'English'];
     }
     $options['LocaleDir'] = $kernel->rootDir . DIRECTORY_SEPARATOR . $options['LocaleDir'];
     return $options;
 }