class InitializrWebConfiguration {

		@Bean
		InitializrWebConfig initializrWebConfig() {
			return new InitializrWebConfig();
		}

		@Bean
		@ConditionalOnMissingBean
		ProjectGenerationController<ProjectRequest> projectGenerationController(
				InitializrMetadataProvider metadataProvider,
				ObjectProvider<ProjectRequestPlatformVersionTransformer> platformVersionTransformer,
				ApplicationContext applicationContext) {<FILL_FUNCTION_BODY>}

		@Bean
		@ConditionalOnMissingBean
		ProjectMetadataController projectMetadataController(InitializrMetadataProvider metadataProvider,
				DependencyMetadataProvider dependencyMetadataProvider) {
			return new ProjectMetadataController(metadataProvider, dependencyMetadataProvider);
		}

		@Bean
		@ConditionalOnMissingBean
		CommandLineMetadataController commandLineMetadataController(InitializrMetadataProvider metadataProvider,
				TemplateRenderer templateRenderer) {
			return new CommandLineMetadataController(metadataProvider, templateRenderer);
		}

		@Bean
		@ConditionalOnMissingBean
		SpringCliDistributionController cliDistributionController(InitializrMetadataProvider metadataProvider) {
			return new SpringCliDistributionController(metadataProvider);
		}

		@Bean
		InitializrModule InitializrJacksonModule() {
			return new InitializrModule();
		}

	}

			ProjectGenerationInvoker<ProjectRequest> projectGenerationInvoker = new ProjectGenerationInvoker<>(
					applicationContext, new DefaultProjectRequestToDescriptionConverter(platformVersionTransformer
						.getIfAvailable(DefaultProjectRequestPlatformVersionTransformer::new)));
			return new DefaultProjectGenerationController(metadataProvider, projectGenerationInvoker);
		
<no_super_class>