Program: 8484
Project: 8484
Buggy source:
@SuppressWarnings({"String_Node_Str"}) private ResponseEntity<byte[]> negotiateResponse(final ServletServerHttpRequest request,final HttpStatus status,final HttpHeaders headers,final Object resource) throws IOException {
  String jsonpParam=request.getServletRequest().getParameter(config.getJsonpParamName());
  String jsonpOnErrParam=null;
  if (null != config.getJsonpOnErrParamName()) {
    jsonpOnErrParam=request.getServletRequest().getParameter(config.getJsonpOnErrParamName());
  }
  if (null == resource) {
    return maybeWrapJsonp(status,jsonpParam,jsonpOnErrParam,headers,null);
  }
  MediaType acceptType=config.getDefaultMediaType();
  HttpMessageConverter converter=findWriteConverter(resource.getClass(),acceptType);
  if (!MediaTypes.ACCEPT_ALL_TYPES.equals(request.getHeaders().getAccept())) {
    for (    MediaType mt : request.getHeaders().getAccept()) {
      if (null != (converter=findWriteConverter(resource.getClass(),mt))) {
        if (!"String_Node_Str".equals(mt.getSubtype())) {
          acceptType=mt;
        }
        break;
      }
    }
  }
  headers.setContentType(acceptType);
  if (null == converter) {
    converter=mappingHttpMessageConverter;
  }
  final ByteArrayOutputStream bout=new ByteArrayOutputStream();
  converter.write(resource,headers.getContentType(),new HttpOutputMessage(){
    @Override public OutputStream getBody() throws IOException {
      return bout;
    }
    @Override public HttpHeaders getHeaders(){
      return headers;
    }
  }
);
  return maybeWrapJsonp(status,jsonpParam,jsonpOnErrParam,headers,bout.toByteArray());
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str"}) private ResponseEntity<byte[]> negotiateResponse(final ServletServerHttpRequest request,final HttpStatus status,final HttpHeaders headers,final Object resource) throws IOException {
  String jsonpParam=request.getServletRequest().getParameter(config.getJsonpParamName());
  String jsonpOnErrParam=null;
  if (null != config.getJsonpOnErrParamName()) {
    jsonpOnErrParam=request.getServletRequest().getParameter(config.getJsonpOnErrParamName());
  }
  if (null == resource) {
    return maybeWrapJsonp(status,jsonpParam,jsonpOnErrParam,headers,null);
  }
  MediaType acceptType=config.getDefaultMediaType();
  HttpMessageConverter converter=findWriteConverter(resource.getClass(),acceptType);
  if (null == converter) {
    for (    MediaType mt : request.getHeaders().getAccept()) {
      if (MediaType.ALL.equals(mt)) {
        continue;
      }
      HttpMessageConverter hmc;
      if (null == (hmc=findWriteConverter(resource.getClass(),mt))) {
        continue;
      }
      if (!"String_Node_Str".equals(mt.getSubtype())) {
        acceptType=mt;
        headers.setContentType(acceptType);
        converter=hmc;
      }
      break;
    }
  }
  if (null == converter) {
    converter=mappingHttpMessageConverter;
    headers.setContentType(MediaType.APPLICATION_JSON);
  }
  final ByteArrayOutputStream bout=new ByteArrayOutputStream();
  converter.write(resource,headers.getContentType(),new HttpOutputMessage(){
    @Override public OutputStream getBody() throws IOException {
      return bout;
    }
    @Override public HttpHeaders getHeaders(){
      return headers;
    }
  }
);
  return maybeWrapJsonp(status,jsonpParam,jsonpOnErrParam,headers,bout.toByteArray());
}