public FeatureDirective(PolicyFeature directive, string allowList)
 {
     Directive = directive;
     AllowList = allowList;
 }
 /// <summary>
 /// The feature is disabled in top-level and nested browsing contexts.
 /// </summary>
 /// <param name="directive"></param>
 /// <returns></returns>
 public FeatureDirectiveList AddNone(PolicyFeature directive) => AddCore(directive, "'none'");
 /// <summary>
 /// The feature will be allowed in this document, and in all nested browsing contexts (iframes) in the same origin.
 /// </summary>
 /// <param name="directive"></param>
 /// <returns></returns>
 public FeatureDirectiveList AddSrc(PolicyFeature directive) => AddCore(directive, "'src'");
 /// <summary>
 /// The feature is allowed by default in top-level browsing contexts and in nested browsing contexts (iframes) in the same origin. The feature is not allowed in cross-origin documents in nested browsing contexts.
 /// </summary>
 /// <param name="directive"></param>
 /// <returns></returns>
 public FeatureDirectiveList AddSelf(PolicyFeature directive) => AddCore(directive, "'self'");
 /// <summary>
 /// The feature is allowed by default in top-level browsing contexts and all nested browsing contexts (iframes).
 /// </summary>
 /// <param name="directive"></param>
 /// <returns></returns>
 public FeatureDirectiveList AddAll(PolicyFeature directive) => AddCore(directive, "*");
 /// <summary>
 /// The feature is allowed for specific origins (for example, https://example.com). Origins should be separated by a space.
 /// </summary>
 /// <param name="directive"></param>
 /// <param name="origins"></param>
 /// <returns></returns>
 public FeatureDirectiveList Add(PolicyFeature directive, IEnumerable <string> origins) => AddCore(directive, string.Join(' ', origins));
 /// <summary>
 /// The feature is allowed for specific origins (for example, https://example.com). Origins should be separated by a space.
 /// </summary>
 /// <param name="directive"></param>
 /// <param name="origin">The feature is allowed for specific origins (for example, https://example.com). Origins should be separated by a space.</param>
 /// <returns></returns>
 public FeatureDirectiveList Add(PolicyFeature directive, string origin) => AddCore(directive, origin);
 protected FeatureDirectiveList AddCore(PolicyFeature directive, string value)
 {
     Items.Add(new FeatureDirective(directive, value));
     return(this);
 }