public final Object handleRestReturnType(Mono<HttpDecodedResponse> asyncHttpDecodedResponse, final SwaggerMethodParser methodParser, final Type returnType) {
        final Mono<HttpDecodedResponse> asyncExpectedResponse = ensureExpectedStatus(asyncHttpDecodedResponse, methodParser);
        final Object result;
        if (TypeUtil.isTypeOrSubTypeOf(returnType, Mono.class)) {
            final Type monoTypeParam = TypeUtil.getTypeArgument(returnType);
            if (TypeUtil.isTypeOrSubTypeOf(monoTypeParam, Void.class)) {
                // ProxyMethod ReturnType: Mono<Void>
                result = asyncExpectedResponse.then();
            } else {
                // ProxyMethod ReturnType: Mono<? extends RestResponseBase<?, ?>>
                result = asyncExpectedResponse.flatMap(response ->
                        handleRestResponseReturnType(response, methodParser, monoTypeParam));
            }
        } else if (FluxUtil.isFluxByteBuf(returnType)) {
            // ProxyMethod ReturnType: Flux<ByteBuf>
            result = asyncExpectedResponse.flatMapMany(ar -> ar.sourceResponse().body());
        } else if (TypeUtil.isTypeOrSubTypeOf(returnType, void.class) || TypeUtil.isTypeOrSubTypeOf(returnType, Void.class)) {
            // ProxyMethod ReturnType: Void
            asyncExpectedResponse.block();
            result = null;
        } else {
            // ProxyMethod ReturnType: T where T != async (Mono, Flux) or sync Void
            // Block the deserialization until a value T is received
            result = asyncExpectedResponse
                    .flatMap(httpResponse -> handleRestResponseReturnType(httpResponse, methodParser, returnType))
                    .block();
        }
        return result;
    }
public final Object handleRestReturnType ( Mono < HttpDecodedResponse > asyncHttpDecodedResponse , final SwaggerMethodParser methodParser , final Type returnType ) { final Mono < HttpDecodedResponse > asyncExpectedResponse = ensureExpectedStatus ( asyncHttpDecodedResponse , methodParser ) ; final Object result ; if ( TypeUtil . isTypeOrSubTypeOf ( returnType , Mono . class ) ) { final Type monoTypeParam = TypeUtil . getTypeArgument ( returnType ) ; if ( TypeUtil . isTypeOrSubTypeOf ( monoTypeParam , Void . class ) ) { result = asyncExpectedResponse . then ( ) ; } else { result = asyncExpectedResponse . flatMap ( response -> handleRestResponseReturnType ( response , methodParser , monoTypeParam ) ) ; } } else if ( FluxUtil . isFluxByteBuf ( returnType ) ) { result = asyncExpectedResponse . flatMapMany ( ar -> ar . sourceResponse ( ) . body ( ) ) ; } else if ( TypeUtil . isTypeOrSubTypeOf ( returnType , void . class ) || TypeUtil . isTypeOrSubTypeOf ( returnType , Void . class ) ) { asyncExpectedResponse . block ( ) ; result = null ; } else { result = asyncExpectedResponse . flatMap ( httpResponse -> handleRestResponseReturnType ( httpResponse , methodParser , returnType ) ) . block ( ) ; } return result ; }
Handle the provided asynchronous HTTP response and return the deserialized value.

@param asyncHttpDecodedResponse the asynchronous HTTP response to the original HTTP request
@param methodParser the SwaggerMethodParser that the request originates from
@param returnType the type of value that will be returned
@return the deserialized result