class SpringDocHateoasConfiguration {

	/**
	 * Hateoas hal provider hateoas hal provider.
	 *
	 * @param hateoasPropertiesOptional the hateoas properties optional
	 * @param objectMapperProvider the object mapper provider
	 * @return the hateoas hal provider
	 */
	@Bean
	@ConditionalOnMissingBean
	@Lazy(false)
	HateoasHalProvider hateoasHalProvider(Optional<HateoasProperties> hateoasPropertiesOptional, ObjectMapperProvider objectMapperProvider) {
		return new HateoasHalProvider(hateoasPropertiesOptional, objectMapperProvider);
	}

	/**
	 * Collection model content converter collection model content converter.
	 *
	 * @param halProvider the hal provider
	 * @param linkRelationProvider the link relation provider
	 * @return the collection model content converter
	 */
	@Bean
	@ConditionalOnMissingBean
	@Lazy(false)
	CollectionModelContentConverter collectionModelContentConverter(HateoasHalProvider halProvider, LinkRelationProvider linkRelationProvider) {
		return halProvider.isHalEnabled() ? new CollectionModelContentConverter(linkRelationProvider) : null;
	}

	/**
	 * Registers an OpenApiCustomizer and a jackson mixin to ensure the definition of `Links` matches the serialized
	 * output. This is done because the customer serializer converts the data to a map before serializing it.
	 *
	 * @param halProvider the hal provider
	 * @param springDocConfigProperties the spring doc config properties
	 * @param objectMapperProvider the object mapper provider
	 * @return the open api customizer
	 * @see org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider) org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)
	 */
	@Bean(Constants.LINKS_SCHEMA_CUSTOMISER)
	@ConditionalOnMissingBean(name = Constants.LINKS_SCHEMA_CUSTOMISER)
	@Lazy(false)
	GlobalOpenApiCustomizer linksSchemaCustomizer(HateoasHalProvider halProvider, SpringDocConfigProperties springDocConfigProperties,
			ObjectMapperProvider objectMapperProvider) {<FILL_FUNCTION_BODY>}
}

		if (!halProvider.isHalEnabled()) {
			return openApi -> {
			};
		}
		objectMapperProvider.jsonMapper().addMixIn(RepresentationModel.class, RepresentationModelLinksOASMixin.class);
		return new OpenApiHateoasLinksCustomizer(springDocConfigProperties);
	
<no_super_class>