Program: 63619
Project: 63619
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 the following: <ul> <li>byte[]</li> <li>java.io.File</li> <li>java.lang.Object</li> <li>java.lang.String</li> <li>javax.activation.DataSource</li> <li>javax.ws.rs.core.StreamingOutput</li> </ul>
 */
public boolean isWriteable(Class<?> type,Type genericType,Annotation[] annotations,MediaType mediaType){
  if (type == JSONWithPadding.class && APPLICATION_XJAVASCRIPT.equals(mediaType.toString())) {
    return true;
  }
  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 (StreamingOutput.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (Object.class == type) {
    return false;
  }
 else   if (JAXBElement.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isWriteable(domainClass,null,annotations,mediaType) || domainClass == String.class;
  }
 else   if (Collection.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    return isWriteable(domainClass,null,annotations,mediaType) || domainClass == String.class;
  }
 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 the following: <ul> <li>byte[]</li> <li>java.io.File</li> <li>java.lang.Object</li> <li>java.lang.String</li> <li>javax.activation.DataSource</li> <li>javax.ws.rs.core.StreamingOutput</li> </ul>
 */
public boolean isWriteable(Class<?> type,Type genericType,Annotation[] annotations,MediaType mediaType){
  if (type == JSONWithPadding.class && APPLICATION_XJAVASCRIPT.equals(mediaType.toString())) {
    return true;
  }
  if (!supportsMediaType(mediaType)) {
    return false;
  }
 else   if (CoreClassConstants.APBYTE == type || CoreClassConstants.STRING == type || type.isPrimitive()) {
    return false;
  }
 else   if (File.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (DataSource.class.isAssignableFrom(type)) {
    return false;
  }
 else   if (StreamingOutput.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 isWriteable(domainClass,null,annotations,mediaType) || domainClass == String.class;
  }
 else   if (Collection.class.isAssignableFrom(type)) {
    Class domainClass=getDomainClass(genericType);
    String packageName=domainClass.getPackage().getName();
    if (null != packageName && packageName.startsWith("String_Node_Str")) {
      return false;
    }
    return isWriteable(domainClass,null,annotations,mediaType) || domainClass == String.class;
  }
 else {
    return null != getJAXBContext(type,genericType,annotations,mediaType);
  }
}