@Nullable
    @Override
    default <T> T as(Class<T> type) {
        requireNonNull(type, "type");
        return Unwrappable.super.as(type);
    }
Unwraps this {@link Client} into the object of the specified {@code type}.
Use this method instead of an explicit downcast. For example:
<pre>{@code
WebClient client = WebClient.builder(...)
                            .decorator(LoggingClient.newDecorator())
                            .build();

LoggingClient unwrapped = client.as(LoggingClient.class);

// You can also use Clients.unwrap(), which is useful especially for
// Thrift and gRPC where the client object does not implement the 'as()' method.
LoggingClient unwrapped2 = Clients.unwrap(client, LoggingClient.class);
}</pre>

@param type the type of the object to return
@return the object of the specified {@code type} if found, or {@code null} if not found.

@see Clients#unwrap(Object, Class)
@see ClientFactory#unwrap(Object, Class)
@see Unwrappable
core/src/main/java/com/linecorp/armeria/client/Client.java