public OAuth1aTokenBuilder put(String key, String value) {
        requireNonNull(key, "key");
        requireNonNull(value, "value");
        final String lowerCased = Ascii.toLowerCase(key);
        switch (lowerCased) {
            case REALM:
                realm(value);
                break;
            case OAUTH_CONSUMER_KEY:
                consumerKey(value);
                break;
            case OAUTH_TOKEN:
                token(value);
                break;
            case OAUTH_SIGNATURE_METHOD:
                signatureMethod(value);
                break;
            case OAUTH_SIGNATURE:
                signature(value);
                break;
            case OAUTH_TIMESTAMP:
                timestamp(value);
                break;
            case OAUTH_NONCE:
                nonce(value);
                break;
            case OAUTH_VERSION:
                version(value);
                break;
            default:
                additionalsBuilder.put(key, value);
        }
        return this;
    }
Sets the specified {@code key}-{@code value} parameter. If the {@code key} is not one of the
pre-defined parameters, then the {@code key}-{@code value} pair is set as an additional parameter.
If the {@code key} is one of the pre-defined parameters, then the corresponding property is
automatically set.

<pre>{@code
OAuth1aToken.builder().put("oauth_signature_method", "foo");
// is equivalent to
OAuth1aToken.builder().signatureMethod("foo");

// This is just an additional parameter.
OAuth1aToken.builder().put("just_an_additional_parameter", "bar");
}</pre>
core/src/main/java/com/linecorp/armeria/common/auth/OAuth1aTokenBuilder.java