class CustomProjectGenerationController extends ProjectGenerationController<CustomProjectRequest> {

	public CustomProjectGenerationController(InitializrMetadataProvider metadataProvider,
			ProjectGenerationInvoker<CustomProjectRequest> projectGenerationInvoker) {
		super(metadataProvider, projectGenerationInvoker);
	}

	@Override
	public CustomProjectRequest projectRequest(Map<String, String> headers) {<FILL_FUNCTION_BODY>}

}

		CustomProjectRequest request = new CustomProjectRequest();
		request.getParameters().putAll(headers);
		request.initialize(getMetadata());
		return request;
	
<methods>public void <init>(io.spring.initializr.metadata.InitializrMetadataProvider, ProjectGenerationInvoker<io.spring.initializr.doc.generator.project.CustomProjectRequest>) ,public ResponseEntity<byte[]> gradle(io.spring.initializr.doc.generator.project.CustomProjectRequest) ,public void invalidProjectRequest(HttpServletResponse, io.spring.initializr.web.project.InvalidProjectRequestException) throws java.io.IOException,public ResponseEntity<byte[]> pom(io.spring.initializr.doc.generator.project.CustomProjectRequest) ,public abstract io.spring.initializr.doc.generator.project.CustomProjectRequest projectRequest(Map<java.lang.String,java.lang.String>) ,public ResponseEntity<byte[]> springTgz(io.spring.initializr.doc.generator.project.CustomProjectRequest) throws java.io.IOException,public ResponseEntity<byte[]> springZip(io.spring.initializr.doc.generator.project.CustomProjectRequest) throws java.io.IOException<variables>private static final org.apache.commons.logging.Log logger,private final non-sealed io.spring.initializr.metadata.InitializrMetadataProvider metadataProvider,private final non-sealed ProjectGenerationInvoker<io.spring.initializr.doc.generator.project.CustomProjectRequest> projectGenerationInvoker