class CombinedMediaType {

    public static CombinedMediaType create(MediaType clientType, EffectiveMediaType serverType) {
        if (!clientType.isCompatible(serverType.getMediaType())) {
            return NO_MATCH;
        }

        final MediaType strippedClientType = MediaTypes.stripQualityParams(clientType);
        final MediaType strippedServerType = MediaTypes.stripQualityParams(serverType.getMediaType());

        return new CombinedMediaType(
                MediaTypes.mostSpecific(strippedClientType, strippedServerType),
                MediaTypes.getQuality(clientType),
                QualitySourceMediaType.getQualitySource(serverType.getMediaType()),
                matchedWildcards(clientType, serverType));
    }

    private  CombinedMediaType(final MediaType combinedType, final int q, final int qs, final int d);

}