private List<MediaType> getCompatibleMediaTypes(ServerHttpRequest request,
ResolvableType elementType) {
List<MediaType> acceptableMediaTypes = getAcceptableMediaTypes(request);
List<MediaType> producibleMediaTypes = getProducibleMediaTypes(elementType);
Set<MediaType> compatibleMediaTypes = new LinkedHashSet<>();
<BUG>for (MediaType acceptableMediaType : acceptableMediaTypes) {
compatibleMediaTypes.addAll(producibleMediaTypes.stream().
filter(acceptableMediaType::isCompatibleWith).
map(producibleType -> getMostSpecificMediaType(acceptableMediaType,
producibleType)).collect(Collectors.toList()));
}</BUG>
List<MediaType> result = new ArrayList<>(compatibleMediaTypes);

private List<MediaType> getCompatibleMediaTypes(ServerHttpRequest request,
ResolvableType elementType) {
List<MediaType> acceptableMediaTypes = getAcceptableMediaTypes(request);
List<MediaType> producibleMediaTypes = getProducibleMediaTypes(elementType);
Set<MediaType> compatibleMediaTypes = new LinkedHashSet<>();
for (MediaType acceptable : acceptableMediaTypes) {
for (MediaType producible : producibleMediaTypes) {
if (acceptable.isCompatibleWith(producible)) {
compatibleMediaTypes.add(getMostSpecificMediaType(acceptable, producible));
}
}
}
List<MediaType> result = new ArrayList<>(compatibleMediaTypes);
