VirtualHost decorate(@Nullable Function<? super HttpService, ? extends HttpService> decorator) {
        if (decorator == null) {
            return this;
        }

        final List<ServiceConfig> serviceConfigs =
                this.serviceConfigs.stream()
                                   .map(cfg -> cfg.withDecoratedService(decorator))
                                   .collect(Collectors.toList());

        final ServiceConfig fallbackServiceConfig =
                this.fallbackServiceConfig.withDecoratedService(decorator);

        return new VirtualHost(originalDefaultHostname, originalHostnamePattern, port, sslContext, tlsProvider,
                               tlsEngineType, serviceConfigs, fallbackServiceConfig,
                               RejectedRouteHandler.DISABLED, host -> accessLogger, defaultServiceNaming,
                               defaultLogName, requestTimeoutMillis, maxRequestLength, verboseResponses,
                               accessLogWriter, blockingTaskExecutor, requestAutoAbortDelayMillis,
                               successFunction, multipartUploadsLocation, multipartRemovalStrategy,
                               serviceWorkerGroup, shutdownSupports, requestIdGenerator);
    }
Returns the {@link MultipartRemovalStrategy} that specifies when to remove the temporary files created
for multipart requests.
core/src/main/java/com/linecorp/armeria/server/VirtualHost.java