class SpringdocBeanFactoryConfigurer implements EnvironmentAware, BeanFactoryPostProcessor {

	/**
	 * The Environment.
	 */
	@Nullable
	protected Environment environment;

	/**
	 * Init bean factory post processor.
	 *
	 * @param beanFactory the bean factory
	 */
	public static void initBeanFactoryPostProcessor(ConfigurableListableBeanFactory beanFactory) {
		for (String beanName : beanFactory.getBeanNamesForType(OpenAPIService.class, true, false))
			beanFactory.getBeanDefinition(beanName).setScope(SCOPE_PROTOTYPE);
		for (String beanName : beanFactory.getBeanNamesForType(OpenAPI.class, true, false))
			beanFactory.getBeanDefinition(beanName).setScope(SCOPE_PROTOTYPE);
	}

	@Override
	public void setEnvironment(Environment environment) {
		this.environment = environment;
	}

	@Override
	public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {<FILL_FUNCTION_BODY>}
}

		final BindResult<SpringDocConfigProperties> result = Binder.get(environment)
				.bind(SPRINGDOC_PREFIX, SpringDocConfigProperties.class);
		if (result.isBound()) {
			SpringDocConfigProperties springDocGroupConfig = result.get();
			List<GroupedOpenApi> groupedOpenApis = springDocGroupConfig.getGroupConfigs().stream()
					.map(elt -> {
						GroupedOpenApi.Builder builder = GroupedOpenApi.builder();
						if (!CollectionUtils.isEmpty(elt.getPackagesToScan()))
							builder.packagesToScan(elt.getPackagesToScan().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getPathsToMatch()))
							builder.pathsToMatch(elt.getPathsToMatch().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getProducesToMatch()))
							builder.producesToMatch(elt.getProducesToMatch().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getConsumesToMatch()))
							builder.consumesToMatch(elt.getConsumesToMatch().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getHeadersToMatch()))
							builder.headersToMatch(elt.getHeadersToMatch().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getPathsToExclude()))
							builder.pathsToExclude(elt.getPathsToExclude().toArray(new String[0]));
						if (!CollectionUtils.isEmpty(elt.getPackagesToExclude()))
							builder.packagesToExclude(elt.getPackagesToExclude().toArray(new String[0]));
						if (StringUtils.isNotEmpty(elt.getDisplayName()))
							builder.displayName(elt.getDisplayName());
						if (Optional.ofNullable(elt.getOpenApi()).isPresent()) {
							builder.addOpenApiCustomizer(new SpecPropertiesCustomizer(elt.getOpenApi()));
						}
						return builder.group(elt.getGroup()).build();
					})
					.toList();
			groupedOpenApis.forEach(elt -> beanFactory.registerSingleton(elt.getGroup(), elt));
		}
		initBeanFactoryPostProcessor(beanFactory);
	
<no_super_class>