protected final ClientOptions buildOptions(@Nullable ClientOptions baseOptions) {
        final Collection<ClientOptionValue<?>> optVals = options.values();
        final ImmutableList.Builder<ClientOptionValue<?>> additionalValues =
                ImmutableList.builder();
        additionalValues.addAll(optVals);
        additionalValues.add(ClientOptions.DECORATION.newValue(decoration.build()));
        additionalValues.add(ClientOptions.PREPROCESSORS.newValue(clientPreprocessorsBuilder.build()));
        additionalValues.add(ClientOptions.HEADERS.newValue(headers.build()));
        additionalValues.add(ClientOptions.CONTEXT_HOOK.newValue(contextHook));
        if (contextCustomizer != null) {
            additionalValues.add(ClientOptions.CONTEXT_CUSTOMIZER.newValue(contextCustomizer));
        }

        if (baseOptions != null) {
            return ClientOptions.of(baseOptions, additionalValues.build());
        } else {
            return ClientOptions.of(additionalValues.build());
        }
    }
Builds {@link ClientOptions} with the specified {@code baseOptions} and
the options which were set to this builder.
core/src/main/java/com/linecorp/armeria/client/AbstractClientOptionsBuilder.java