Program: 63623
Project: 63623
Buggy source:
/** 
 * @return true indicating that <i>MOXyJsonProvider</i> willbe used for the JSON binding if the media type is of the following  patterns *&#47;json or *&#47;*+json, and the type is not assignable from  any of (or a Collection or JAXBElement of) the following: <ul> <li>byte[]</li> <li>java.io.File</li> <li>java.io.InputStream</li> <li>java.io.Reader</li> <li>java.lang.Object</li> <li>java.lang.String</li> <li>javax.activation.DataSource</li> </ul>
 */
public boolean isReadable(Class<?> type,Type genericType,Annotation[] annotations,MediaType mediaType){
  if (!supportsMediaType(mediaType)) {
    return false;
  }
 else   if (CoreClassConstants.APBYTE == type || CoreClassConstants.STRING == type) {
    return false;
  }
 else   if (File.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (DataSource.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (InputStream.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (Reader.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (Object.class == type) {
    return false;
  }
 else   if (type.isPrimitive()) {
    return false;
  }
 else   if (type.isArray() && (type.getComponentType().isArray() || type.getComponentType().isPrimitive() || type.getComponentType().getPackage().getName().startsWith("String_Node_Str"))) {
    return false;
  }
 else   if (JAXBElement.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isReadable(domainClass,null,annotations,mediaType) || String.class == domainClass;
  }
 else   if (Collection.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isReadable(domainClass,null,annotations,mediaType) || String.class == domainClass;
  }
 else {
    return null != getJAXBContext(type,genericType,annotations,mediaType);
  }
}

Fixed version (ground truth):
/** 
 * @return true indicating that <i>MOXyJsonProvider</i> willbe used for the JSON binding if the media type is of the following  patterns *&#47;json or *&#47;*+json, and the type is not assignable from  any of (or a Collection or JAXBElement of) the following: <ul> <li>byte[]</li> <li>java.io.File</li> <li>java.io.InputStream</li> <li>java.io.Reader</li> <li>java.lang.Object</li> <li>java.lang.String</li> <li>javax.activation.DataSource</li> </ul>
 */
public boolean isReadable(Class<?> type,Type genericType,Annotation[] annotations,MediaType mediaType){
  if (!supportsMediaType(mediaType)) {
    return false;
  }
 else   if (CoreClassConstants.APBYTE == type || CoreClassConstants.STRING == type) {
    return false;
  }
 else   if (Map.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (File.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (DataSource.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (InputStream.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (Reader.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (Object.class == type) {
    return false;
  }
 else   if (type.isPrimitive()) {
    return false;
  }
 else   if (type.isArray() && (type.getComponentType().isArray() || type.getComponentType().isPrimitive() || type.getComponentType().getPackage().getName().startsWith("String_Node_Str"))) {
    return false;
  }
 else   if (JAXBElement.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isReadable(domainClass,null,annotations,mediaType) || String.class == domainClass;
  }
 else   if (Collection.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isReadable(domainClass,null,annotations,mediaType) || String.class == domainClass;
  }
 else {
    return null != getJAXBContext(type,genericType,annotations,mediaType);
  }
}