@Override
 public CookieSpec create(final HttpContext context) {
   if (cookieSpec == null) {
     synchronized (this) {
       if (cookieSpec == null) {
         final RFC2965Spec strict =
             new RFC2965Spec(
                 this.oneHeader,
                 new RFC2965VersionAttributeHandler(),
                 new BasicPathHandler(),
                 PublicSuffixDomainFilter.decorate(
                     new RFC2965DomainAttributeHandler(), this.publicSuffixMatcher),
                 new RFC2965PortAttributeHandler(),
                 new BasicMaxAgeHandler(),
                 new BasicSecureHandler(),
                 new BasicCommentHandler(),
                 new RFC2965CommentUrlAttributeHandler(),
                 new RFC2965DiscardAttributeHandler());
         final RFC2109Spec obsoleteStrict =
             new RFC2109Spec(
                 this.oneHeader,
                 new RFC2109VersionHandler(),
                 new BasicPathHandler(),
                 PublicSuffixDomainFilter.decorate(
                     new RFC2109DomainHandler(), this.publicSuffixMatcher),
                 new BasicMaxAgeHandler(),
                 new BasicSecureHandler(),
                 new BasicCommentHandler());
         final NetscapeDraftSpec netscapeDraft =
             new NetscapeDraftSpec(
                 PublicSuffixDomainFilter.decorate(
                     new BasicDomainHandler(), this.publicSuffixMatcher),
                 this.compatibilityLevel == CompatibilityLevel.IE_MEDIUM_SECURITY
                     ? new BasicPathHandler() {
                       @Override
                       public void validate(final Cookie cookie, final CookieOrigin origin)
                           throws MalformedCookieException {
                         // No validation
                       }
                     }
                     : new BasicPathHandler(),
                 new BasicSecureHandler(),
                 new BasicCommentHandler(),
                 new BasicExpiresHandler(
                     this.datepatterns != null
                         ? this.datepatterns.clone()
                         : new String[] {NetscapeDraftSpec.EXPIRES_PATTERN}));
         this.cookieSpec = new DefaultCookieSpec(strict, obsoleteStrict, netscapeDraft);
       }
     }
   }
   return this.cookieSpec;
 }
 @Override
 public CookieSpec create(final HttpContext context) {
   if (cookieSpec == null) {
     synchronized (this) {
       if (cookieSpec == null) {
         final RFC2965Spec strict =
             new RFC2965Spec(
                 false,
                 new RFC2965VersionAttributeHandler(),
                 new BasicPathHandler() {
                   @Override
                   public void validate(final Cookie cookie, final CookieOrigin origin)
                       throws MalformedCookieException {
                     // No validation
                   }
                 },
                 new LaxPublicSuffixFilter(
                     PublicSuffixDomainFilter.decorate(
                         new RFC2965DomainAttributeHandler() {
                           @Override
                           public void validate(Cookie cookie, CookieOrigin origin)
                               throws MalformedCookieException {
                             // No validation
                           }
                         },
                         PublicSuffixMatcherLoader.getDefault())),
                 new RFC2965PortAttributeHandler(),
                 new BasicMaxAgeHandler(),
                 new BasicSecureHandler(),
                 new BasicCommentHandler(),
                 new RFC2965CommentUrlAttributeHandler(),
                 new RFC2965DiscardAttributeHandler());
         final RFC2109Spec obsoleteStrict =
             new RFC2109Spec(
                 false,
                 new RFC2109VersionHandler(),
                 new BasicPathHandler() {
                   @Override
                   public void validate(final Cookie cookie, final CookieOrigin origin)
                       throws MalformedCookieException {
                     // No validation
                   }
                 },
                 new LaxPublicSuffixFilter(
                     PublicSuffixDomainFilter.decorate(
                         new RFC2109DomainHandler() {
                           @Override
                           public void validate(Cookie cookie, CookieOrigin origin)
                               throws MalformedCookieException {
                             // No validation
                           }
                         },
                         PublicSuffixMatcherLoader.getDefault())),
                 new BasicMaxAgeHandler(),
                 new BasicSecureHandler(),
                 new BasicCommentHandler());
         final NetscapeDraftSpec netscapeDraft =
             new NetscapeDraftSpec(
                 new LaxPublicSuffixFilter(
                     PublicSuffixDomainFilter.decorate(
                         new BasicDomainHandler() {
                           @Override
                           public void validate(Cookie cookie, CookieOrigin origin)
                               throws MalformedCookieException {
                             // No validation
                           }
                         },
                         PublicSuffixMatcherLoader.getDefault())),
                 new BasicPathHandler() {
                   @Override
                   public void validate(final Cookie cookie, final CookieOrigin origin)
                       throws MalformedCookieException {
                     // No validation
                   }
                 },
                 new BasicSecureHandler(),
                 new BasicCommentHandler(),
                 new BasicExpiresHandler(DATE_PATTERNS));
         this.cookieSpec = new DefaultCookieSpec(strict, obsoleteStrict, netscapeDraft);
       }
     }
   }
   return this.cookieSpec;
 }