class WebFluxSupportConverter implements ModelConverter {

	/**
	 * The Object mapper provider.
	 */
	private final ObjectMapperProvider objectMapperProvider;

	/**
	 * Instantiates a new Web flux support converter.
	 *
	 * @param objectMapperProvider the object mapper provider
	 */
	public WebFluxSupportConverter(ObjectMapperProvider objectMapperProvider) {
		this.objectMapperProvider = objectMapperProvider;
		getConfig().addResponseWrapperToIgnore(Publisher.class)
				.addFluxWrapperToIgnore(Flux.class);
	}

	@Override
	public Schema resolve(AnnotatedType type, ModelConverterContext context, Iterator<ModelConverter> chain) {<FILL_FUNCTION_BODY>}
}

		JavaType javaType = objectMapperProvider.jsonMapper().constructType(type.getType());
		if (javaType != null) {
			Class<?> cls = javaType.getRawClass();
			if (isFluxTypeWrapper(cls)) {
				JavaType innerType = javaType.getBindings().getBoundType(0);
				if (innerType == null)
					return new StringSchema();
				else if (innerType.getBindings() != null && isResponseTypeWrapper(innerType.getRawClass())) {
					type = new AnnotatedType(innerType).jsonViewAnnotation(type.getJsonViewAnnotation()).resolveAsRef(true);
					return this.resolve(type, context, chain);
				}
				else {
					ArrayType arrayType = ArrayType.construct(innerType, null);
					type = new AnnotatedType(arrayType).jsonViewAnnotation(type.getJsonViewAnnotation()).resolveAsRef(true);
				}
			}
		}
		return (chain.hasNext()) ? chain.next().resolve(type, context, chain) : null;
	
<no_super_class>