Program: 54471
Project: 54471
Buggy source:
/** 
 * Returns <code>true</code> if the declared fields of this type are all instantiable. As a side-effect it fills in   {@link TypeInfoComputed} for allnecessary types.
 */
private boolean checkDeclaredFields(TreeLogger logger,TypeInfoComputed typeInfo,TypePath parent,ProblemReport problems){
  JClassType classOrInterface=typeInfo.getType();
  if (classOrInterface.isEnum() != null) {
    return true;
  }
  JClassType baseType=getBaseType(classOrInterface);
  boolean allSucceeded=true;
  JField[] fields=baseType.getFields();
  if (fields.length > 0) {
    TreeLogger localLogger=logger.branch(TreeLogger.DEBUG,"String_Node_Str" + classOrInterface.getParameterizedQualifiedSourceName() + "String_Node_Str",null);
    for (    JField field : fields) {
      if (!shouldConsiderForSerialization(localLogger,suppressNonStaticFinalFieldWarnings,field)) {
        continue;
      }
      TreeLogger fieldLogger=localLogger.branch(TreeLogger.DEBUG,field.toString(),null);
      JType fieldType=field.getType();
      TypePath path=TypePaths.createFieldPath(parent,field);
      if (typeInfo.isManuallySerializable() && fieldType.getLeafType() == typeOracle.getJavaLangObject()) {
        checkAllSubtypesOfObject(fieldLogger.branch(TreeLogger.WARN,"String_Node_Str",null),path,problems);
      }
 else {
        allSucceeded&=checkTypeInstantiable(fieldLogger,fieldType,path,problems);
      }
    }
  }
  boolean succeeded=allSucceeded || typeInfo.isManuallySerializable();
  if (succeeded) {
    typeInfo.setFieldSerializable();
  }
  return succeeded;
}

Fixed version (ground truth):
/** 
 * Returns <code>true</code> if the declared fields of this type are all instantiable. As a side-effect it fills in   {@link TypeInfoComputed} for allnecessary types.
 */
private boolean checkDeclaredFields(TreeLogger logger,TypeInfoComputed typeInfo,TypePath parent,ProblemReport problems){
  JClassType classOrInterface=(JClassType)typeInfo.getType();
  if (classOrInterface.isEnum() != null) {
    return true;
  }
  JClassType baseType=getBaseType(classOrInterface);
  boolean allSucceeded=true;
  JField[] fields=baseType.getFields();
  if (fields.length > 0) {
    TreeLogger localLogger=logger.branch(TreeLogger.DEBUG,"String_Node_Str" + classOrInterface.getParameterizedQualifiedSourceName() + "String_Node_Str",null);
    for (    JField field : fields) {
      if (!shouldConsiderForSerialization(localLogger,suppressNonStaticFinalFieldWarnings,field)) {
        continue;
      }
      TreeLogger fieldLogger=localLogger.branch(TreeLogger.DEBUG,field.toString(),null);
      JType fieldType=field.getType();
      TypePath path=TypePaths.createFieldPath(parent,field);
      if (typeInfo.isManuallySerializable() && fieldType.getLeafType() == typeOracle.getJavaLangObject()) {
        checkAllSubtypesOfObject(fieldLogger.branch(TreeLogger.WARN,"String_Node_Str",null),path,problems);
      }
 else {
        allSucceeded&=computeTypeInstantiability(fieldLogger,fieldType,path,problems).hasInstantiableSubtypes();
      }
    }
  }
  boolean succeeded=allSucceeded || typeInfo.isManuallySerializable();
  if (succeeded) {
    typeInfo.setFieldSerializable();
  }
  return succeeded;
}