src/main/java/js/http/encoder/ServerEncoders.java
private ArgumentsReader getArgumentsReader(String contentType, Type parameterType) {
		if (contentType == null) {
			return readers.get(EncoderKey.APPLICATION_JSON);
		}

		EncoderKey key = new EncoderKey(ContentType.valueOf(contentType), parameterType);
		ArgumentsReader reader = readers.get(key);
		if (reader != null) {
			return reader;
		}

		key = new EncoderKey(ContentType.valueOf(contentType));
		reader = readers.get(key);
		if (reader == null) {
			throw new IllegalArgumentException("Unsupported content type |%s|. There is no arguments reader registered for it.", key);
		}
		return reader;
	}
private ArgumentsReader getArgumentsReader(String contentType, Type parameterType) {
		if (contentType == null) {
			return readers.get(EncoderKey.APPLICATION_JSON);
		}

		EncoderKey key = new EncoderKey(ContentType.valueOf(contentType), parameterType);
		ArgumentsReader reader = readers.get(key);
		if (reader != null) {
			return reader;
		}

		key = new EncoderKey(ContentType.valueOf(contentType));
		reader = readers.get(key);
		if (reader == null) {
			throw new IllegalArgumentException("Unsupported content type |%s|. There is no arguments reader registered for it.", key);
		}
		return reader;
	}
Get arguments reader for requested content and parameter types. This factory method tries to retrieve a reader for
expected parameter type. If none found it tries using content type solely.
<p>
If content type is null this utility method returns {@link EncoderKey#APPLICATION_JSON} reader since tiny container
default content type is JSON. This departs from HTTP standard that mandates using bytes stream when no content type is
provided on request.

@param contentType content type, possible null,
@param parameterType parameter type.
@return reader instance, never null.
@throws IllegalArgumentException if no reader found for requested content and parameter types.