public static function fromConfig(PolicyManager $policyManager, array $config, $kind)
 {
     $directiveSet = new self($policyManager);
     $directiveSet->setLevel1Fallback(isset($config[$kind]) ? $config[$kind]['level1_fallback'] : false);
     if (!array_key_exists($kind, $config)) {
         return $directiveSet;
     }
     $parser = new ContentSecurityPolicyParser();
     foreach (self::getNames() as $name => $type) {
         if (!array_key_exists($name, $config[$kind])) {
             continue;
         }
         $directiveSet->setDirective($name, $parser->parseSourceList($config[$kind][$name]));
     }
     return $directiveSet;
 }