class HeadingAnchorExtension implements HtmlRenderer.HtmlRendererExtension {

    private final String defaultId;
    private final String idPrefix;
    private final String idSuffix;

    private HeadingAnchorExtension(Builder builder) {
        this.defaultId = builder.defaultId;
        this.idPrefix = builder.idPrefix;
        this.idSuffix = builder.idSuffix;
    }

    /**
     * @return the extension built with default settings
     */
    public static Extension create() {
        return new HeadingAnchorExtension(builder());
    }

    /**
     * @return a builder to configure the extension settings
     */
    public static Builder builder() {
        return new Builder();
    }

    @Override
    public void extend(HtmlRenderer.Builder rendererBuilder) {<FILL_FUNCTION_BODY>}

    public static class Builder {
        private String defaultId = "id";
        private String idPrefix = "";
        private String idSuffix = "";

        /**
         * @param value Default value for the id to take if no generated id can be extracted. Default "id"
         * @return {@code this}
         */
        public Builder defaultId(String value) {
            this.defaultId = value;
            return this;
        }

        /**
         * @param value Set the value to be prepended to every id generated. Default ""
         * @return {@code this}
         */
        public Builder idPrefix(String value) {
            this.idPrefix = value;
            return this;
        }

        /**
         * @param value Set the value to be appended to every id generated. Default ""
         * @return {@code this}
         */
        public Builder idSuffix(String value) {
            this.idSuffix = value;
            return this;
        }

        /**
         * @return a configured extension
         */
        public Extension build() {
            return new HeadingAnchorExtension(this);
        }
    }
}

        rendererBuilder.attributeProviderFactory(new AttributeProviderFactory() {
            @Override
            public AttributeProvider create(AttributeProviderContext context) {
                return HeadingIdAttributeProvider.create(defaultId, idPrefix, idSuffix);
            }
        });
    
<no_super_class>