class AcceptMediaTypeHeaderDelegate implements RuntimeDelegate.HeaderDelegate<AcceptMediaType> {

    @Override
    public String toString(AcceptMediaType acceptMediaType) {
        if (acceptMediaType == null) {
            throw new IllegalArgumentException();
        }
        final Map<String, String> parameters = acceptMediaType.getParameters();
        if (parameters.isEmpty() || (parameters.size() == 1 && parameters.containsKey(QVALUE))) {
            return acceptMediaType.getMediaType().toString();
        }
        final Map<String, String> copyParameters = new LinkedHashMap<>(parameters);
        copyParameters.remove(QVALUE);
        return new MediaType(acceptMediaType.getType(), acceptMediaType.getSubtype(), copyParameters).toString();
    }

}