class PatternTypeFlags {
        final @Nullable Boolean intellijDummyIdentifier;
        final @Nullable Boolean htmlForTranslator;
        final @Nullable String translationHtmlInlineTagPattern;
        final @Nullable String translationAutolinkTagPattern;
        final @Nullable Boolean spaceInLinkUrl;
        final @Nullable Boolean parseJekyllMacroInLinkUrl;
        final @Nullable String itemPrefixChars;
        final @Nullable Boolean listsItemMarkerSpace;
        final @Nullable Boolean listsOrderedItemDotOnly;
        final @Nullable Boolean allowNameSpace;

        PatternTypeFlags(DataHolder options) {
            this.intellijDummyIdentifier = Parser.INTELLIJ_DUMMY_IDENTIFIER.get(options);
            this.htmlForTranslator = Parser.HTML_FOR_TRANSLATOR.get(options);
            this.translationHtmlInlineTagPattern = Parser.TRANSLATION_HTML_INLINE_TAG_PATTERN.get(options);
            this.translationAutolinkTagPattern = Parser.TRANSLATION_AUTOLINK_TAG_PATTERN.get(options);
            this.spaceInLinkUrl = Parser.SPACE_IN_LINK_URLS.get(options);
            this.parseJekyllMacroInLinkUrl = Parser.PARSE_JEKYLL_MACROS_IN_URLS.get(options);
            this.itemPrefixChars = LISTS_ITEM_PREFIX_CHARS.get(options);
            this.listsItemMarkerSpace = LISTS_ITEM_MARKER_SPACE.get(options);
            this.listsOrderedItemDotOnly = LISTS_ORDERED_ITEM_DOT_ONLY.get(options);
            this.allowNameSpace = HTML_ALLOW_NAME_SPACE.get(options);
        }

        public PatternTypeFlags(
                @Nullable Boolean intellijDummyIdentifier
                , @Nullable Boolean htmlForTranslator
                , @Nullable String translationHtmlInlineTagPattern
                , @Nullable String translationAutolinkTagPattern
                , @Nullable Boolean spaceInLinkUrl
                , @Nullable Boolean parseJekyllMacroInLinkUrl
                , @Nullable String itemPrefixChars
                , @Nullable Boolean listsItemMarkerSpace
                , @Nullable Boolean listsOrderedItemDotOnly
                , @Nullable Boolean allowNameSpace
        ) {
            this.intellijDummyIdentifier = intellijDummyIdentifier;
            this.htmlForTranslator = htmlForTranslator;
            this.translationHtmlInlineTagPattern = translationHtmlInlineTagPattern;
            this.translationAutolinkTagPattern = translationAutolinkTagPattern;
            this.spaceInLinkUrl = spaceInLinkUrl;
            this.parseJekyllMacroInLinkUrl = parseJekyllMacroInLinkUrl;
            this.itemPrefixChars = itemPrefixChars;
            this.listsItemMarkerSpace = listsItemMarkerSpace;
            this.listsOrderedItemDotOnly = listsOrderedItemDotOnly;
            this.allowNameSpace = allowNameSpace;
        }

        PatternTypeFlags withJekyllMacroInLinkUrl() { return new PatternTypeFlags(intellijDummyIdentifier, null, null, null, null, parseJekyllMacroInLinkUrl, null, null, null, null); }

        PatternTypeFlags withJekyllMacroSpaceInLinkUrl() { return new PatternTypeFlags(intellijDummyIdentifier, null, null, null, spaceInLinkUrl, parseJekyllMacroInLinkUrl, null, null, null, null); }

        PatternTypeFlags withHtmlTranslator() { return new PatternTypeFlags(intellijDummyIdentifier, htmlForTranslator, translationHtmlInlineTagPattern, translationAutolinkTagPattern, null, null, null, null, null, null); }

        PatternTypeFlags withItemPrefixChars() { return new PatternTypeFlags(null, null, null, null, null, null, itemPrefixChars, listsItemMarkerSpace, listsOrderedItemDotOnly, null); }

        PatternTypeFlags withAllowNameSpace() {<FILL_FUNCTION_BODY>}

        /**
         * Compare where null entry equals any other value
         *
         * @param o other
         * @return true if equal
         */
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            PatternTypeFlags that = (PatternTypeFlags) o;

            if (intellijDummyIdentifier != null && !intellijDummyIdentifier.equals(that.intellijDummyIdentifier)) return false;
            if (htmlForTranslator != null && !htmlForTranslator.equals(that.htmlForTranslator)) return false;
            if (translationHtmlInlineTagPattern != null && !translationHtmlInlineTagPattern.equals(that.translationHtmlInlineTagPattern)) return false;
            if (translationAutolinkTagPattern != null && !translationAutolinkTagPattern.equals(that.translationAutolinkTagPattern)) return false;
            if (spaceInLinkUrl != null && !spaceInLinkUrl.equals(that.spaceInLinkUrl)) return false;
            if (parseJekyllMacroInLinkUrl != null && !parseJekyllMacroInLinkUrl.equals(that.parseJekyllMacroInLinkUrl)) return false;
            if (itemPrefixChars != null && !itemPrefixChars.equals(that.itemPrefixChars)) return false;
            if (listsItemMarkerSpace != null && !listsItemMarkerSpace.equals(that.listsItemMarkerSpace)) return false;
            if (allowNameSpace != null && !allowNameSpace.equals(that.allowNameSpace)) return false;

            return listsOrderedItemDotOnly == null || listsOrderedItemDotOnly.equals(that.listsOrderedItemDotOnly);
        }

        @Override
        public int hashCode() {
            int result = intellijDummyIdentifier != null ? intellijDummyIdentifier.hashCode() : 0;
            result = 31 * result + (htmlForTranslator != null ? htmlForTranslator.hashCode() : 0);
            result = 31 * result + (translationHtmlInlineTagPattern != null ? translationHtmlInlineTagPattern.hashCode() : 0);
            result = 31 * result + (translationAutolinkTagPattern != null ? translationAutolinkTagPattern.hashCode() : 0);
            result = 31 * result + (spaceInLinkUrl != null ? spaceInLinkUrl.hashCode() : 0);
            result = 31 * result + (parseJekyllMacroInLinkUrl != null ? parseJekyllMacroInLinkUrl.hashCode() : 0);
            result = 31 * result + (itemPrefixChars != null ? itemPrefixChars.hashCode() : 0);
            result = 31 * result + (listsItemMarkerSpace != null ? listsItemMarkerSpace.hashCode() : 0);
            result = 31 * result + (listsOrderedItemDotOnly != null ? listsOrderedItemDotOnly.hashCode() : 0);
            result = 31 * result + (allowNameSpace != null ? allowNameSpace.hashCode() : 0);
            return result;
        }
    }
 return new PatternTypeFlags(null, null, null, null, null, null, null, null, null, allowNameSpace); 
<no_super_class>