class ActuatorProvider implements ApplicationListener<WebServerInitializedEvent> {

	/**
	 * The Management server properties.
	 */
	protected ManagementServerProperties managementServerProperties;

	/**
	 * The Web endpoint properties.
	 */
	protected WebEndpointProperties webEndpointProperties;

	/**
	 * The Server properties.
	 */
	protected ServerProperties serverProperties;

	/**
	 * The Spring doc config properties.
	 */
	protected SpringDocConfigProperties springDocConfigProperties;

	/**
	 * The Actuator web server.
	 */
	protected WebServer actuatorWebServer;

	/**
	 * The Application web server.
	 */
	protected WebServer applicationWebServer;

	/**
	 * The Management application context.
	 */
	protected ApplicationContext managementApplicationContext;

	/**
	 * Instantiates a new Actuator provider.
	 *
	 * @param managementServerProperties the management server properties
	 * @param webEndpointProperties the web endpoint properties
	 * @param serverProperties the server properties
	 * @param springDocConfigProperties the spring doc config properties
	 */
	public ActuatorProvider(Optional<ManagementServerProperties> managementServerProperties,
			Optional<WebEndpointProperties> webEndpointProperties,
			ServerProperties serverProperties,
			SpringDocConfigProperties springDocConfigProperties) {

		managementServerProperties.ifPresent(managementServerProperties1 -> this.managementServerProperties = managementServerProperties1);
		webEndpointProperties.ifPresent(webEndpointProperties1 -> this.webEndpointProperties = webEndpointProperties1);

		this.serverProperties = serverProperties;
		this.springDocConfigProperties = springDocConfigProperties;
	}

	/**
	 * Gets tag.
	 *
	 * @return the tag
	 */
	public static Tag getTag() {
		Tag actuatorTag = new Tag();
		actuatorTag.setName(Constants.SPRINGDOC_ACTUATOR_TAG);
		actuatorTag.setDescription(Constants.SPRINGDOC_ACTUATOR_DESCRIPTION);
		actuatorTag.setExternalDocs(
				new ExternalDocumentation()
						.url(Constants.SPRINGDOC_ACTUATOR_DOC_URL)
						.description(Constants.SPRINGDOC_ACTUATOR_DOC_DESCRIPTION)
		);
		return actuatorTag;
	}

	@Override
	public void onApplicationEvent(WebServerInitializedEvent event) {<FILL_FUNCTION_BODY>}

	/**
	 * Is rest controller boolean.
	 *
	 * @param operationPath the operation path
	 * @param handlerMethod the handler method
	 * @return the boolean
	 */
	public boolean isRestController(String operationPath, HandlerMethod handlerMethod) {
		return operationPath.startsWith(AntPathMatcher.DEFAULT_PATH_SEPARATOR)
				&& !AbstractOpenApiResource.isHiddenRestControllers(handlerMethod.getBeanType())
				&& AbstractOpenApiResource.containsResponseBody(handlerMethod);
	}

	/**
	 * Is use management port boolean.
	 *
	 * @return the boolean
	 */
	public boolean isUseManagementPort() {
		return springDocConfigProperties.isUseManagementPort();
	}

	/**
	 * Gets base path.
	 *
	 * @return the base path
	 */
	public String getBasePath() {
		return webEndpointProperties.getBasePath();
	}

	/**
	 * Gets context path.
	 *
	 * @return the context path
	 */
	public String getContextPath() {
		return EMPTY;
	}

	/**
	 * Gets actuator path.
	 *
	 * @return the actuator path
	 */
	public String getActuatorPath() {
		return managementServerProperties.getBasePath();
	}

	/**
	 * Gets application port.
	 *
	 * @return the application port
	 */
	public int getApplicationPort() {
		return applicationWebServer.getPort();
	}

	/**
	 * Gets actuator port.
	 *
	 * @return the actuator port
	 */
	public int getActuatorPort() {
		return actuatorWebServer.getPort();
	}

	/**
	 * Gets methods.
	 *
	 * @return the methods
	 */
	public abstract Map getMethods();

}

		if (WebServerApplicationContext.hasServerNamespace(event.getApplicationContext(), "management")) {
			managementApplicationContext = event.getApplicationContext();
			actuatorWebServer = event.getWebServer();
		}
		else {
			applicationWebServer = event.getWebServer();
		}
	
<no_super_class>