public <F extends Filter<C>, C extends Enum<C>> FilterComponentBuilder<F, C> addFilter( final FilterDescriptor<F, C> descriptor, final Map<ConfiguredPropertyDescriptor, Object> configuredProperties, final ComponentRequirement requirement, final Map<String, String> metadataProperties) { final FilterComponentBuilder<F, C> filter = new FilterComponentBuilder<>(this, descriptor); initializeComponentBuilder(filter, configuredProperties, requirement, metadataProperties); return addFilter(filter); }