Program: 104808
Project: 104808
Buggy source:
/** 
 * Discovers interesting (that we care about) things about the class. 
 */
protected void discover(){
  for (  Class<? extends Annotation> c : interestingAnnotations) {
    addAnnotation(c);
  }
  List<Class<?>> lifecycleClasses=new ArrayList<Class<?>>();
  lifecycleClasses.add(clazz);
  EntityListeners entityLisAnn=(EntityListeners)foundAnnotations.get(EntityListeners.class);
  if (entityLisAnn != null && entityLisAnn.value() != null && entityLisAnn.value().length != 0)   for (  Class<?> c : entityLisAnn.value())   lifecycleClasses.add(c);
  for (  Class<?> cls : lifecycleClasses) {
    for (    Method m : ReflectionUtils.getDeclaredAndInheritedMethods(cls)) {
      for (      Class<? extends Annotation> c : lifecycleAnnotations) {
        if (m.isAnnotationPresent(c)) {
          addLifecycleEventMethod(c,m,cls.equals(clazz) ? null : cls);
        }
      }
    }
  }
  embeddedAn=(Embedded)foundAnnotations.get(Embedded.class);
  entityAn=(Entity)foundAnnotations.get(Entity.class);
  collName=(entityAn == null || entityAn.value().equals(Mapper.IGNORED_FIELDNAME)) ? clazz.getSimpleName() : entityAn.value();
  for (  Field field : ReflectionUtils.getDeclaredAndInheritedFields(clazz,true)) {
    field.setAccessible(true);
    int fieldMods=field.getModifiers();
    if (field.isAnnotationPresent(Transient.class))     continue;
 else     if (field.isSynthetic() && (fieldMods & Modifier.TRANSIENT) == Modifier.TRANSIENT)     continue;
 else     if (mapr.getOptions().actLikeSerializer && ((fieldMods & Modifier.TRANSIENT) == Modifier.TRANSIENT))     continue;
 else     if (mapr.getOptions().ignoreFinals && ((fieldMods & Modifier.FINAL) == Modifier.FINAL))     continue;
 else     if (field.isAnnotationPresent(Id.class)) {
      idField=field;
      MappedField mf=new MappedField(idField);
      persistenceFields.add(mf);
    }
 else     if (field.isAnnotationPresent(Property.class) || field.isAnnotationPresent(Reference.class) || field.isAnnotationPresent(Embedded.class)|| field.isAnnotationPresent(Serialized.class)|| isSupportedType(field.getType())|| ReflectionUtils.implementsInterface(field.getType(),Serializable.class)) {
      persistenceFields.add(new MappedField(field));
    }
 else {
      if (mapr.getOptions().defaultMapper != null)       persistenceFields.add(new MappedField(field));
 else       log.warning("String_Node_Str" + clazz.getName() + "String_Node_Str"+ field.getName()+ "String_Node_Str"+ field.getType().getName()+ "String_Node_Str");
    }
  }
}

Fixed version (ground truth):
/** 
 * Discovers interesting (that we care about) things about the class. 
 */
protected void discover(){
  for (  Class<? extends Annotation> c : interestingAnnotations) {
    addAnnotation(c);
  }
  List<Class<?>> lifecycleClasses=new ArrayList<Class<?>>();
  lifecycleClasses.add(clazz);
  EntityListeners entityLisAnn=(EntityListeners)foundAnnotations.get(EntityListeners.class);
  if (entityLisAnn != null && entityLisAnn.value() != null && entityLisAnn.value().length != 0)   for (  Class<?> c : entityLisAnn.value())   lifecycleClasses.add(c);
  for (  Class<?> cls : lifecycleClasses) {
    for (    Method m : ReflectionUtils.getDeclaredAndInheritedMethods(cls)) {
      for (      Class<? extends Annotation> c : lifecycleAnnotations) {
        if (m.isAnnotationPresent(c)) {
          addLifecycleEventMethod(c,m,cls.equals(clazz) ? null : cls);
        }
      }
    }
  }
  embeddedAn=(Embedded)foundAnnotations.get(Embedded.class);
  entityAn=(Entity)foundAnnotations.get(Entity.class);
  collName=(entityAn == null || entityAn.value().equals(Mapper.IGNORED_FIELDNAME)) ? clazz.getSimpleName() : entityAn.value();
  for (  Field field : ReflectionUtils.getDeclaredAndInheritedFields(clazz,true)) {
    field.setAccessible(true);
    int fieldMods=field.getModifiers();
    if (field.isAnnotationPresent(Transient.class))     continue;
 else     if (field.isSynthetic() && (fieldMods & Modifier.TRANSIENT) == Modifier.TRANSIENT)     continue;
 else     if (mapr.getOptions().actLikeSerializer && ((fieldMods & Modifier.TRANSIENT) == Modifier.TRANSIENT))     continue;
 else     if (mapr.getOptions().ignoreFinals && ((fieldMods & Modifier.FINAL) == Modifier.FINAL))     continue;
 else     if (field.isAnnotationPresent(Id.class)) {
      idField=field;
      MappedField mf=new MappedField(idField,clazz);
      persistenceFields.add(mf);
    }
 else     if (field.isAnnotationPresent(Property.class) || field.isAnnotationPresent(Reference.class) || field.isAnnotationPresent(Embedded.class)|| field.isAnnotationPresent(Serialized.class)|| isSupportedType(field.getType())|| ReflectionUtils.implementsInterface(field.getType(),Serializable.class)) {
      persistenceFields.add(new MappedField(field,clazz));
    }
 else {
      if (mapr.getOptions().defaultMapper != null)       persistenceFields.add(new MappedField(field,clazz));
 else       log.warning("String_Node_Str" + clazz.getName() + "String_Node_Str"+ field.getName()+ "String_Node_Str"+ field.getType().getName()+ "String_Node_Str");
    }
  }
}