Program: 186666
Project: 186666
Buggy source:
/** 
 * Remove all unused classes, methods and fields.
 */
private void removeUnusedMembers(){
  AppInfo appInfo=AppInfo.getSingleton();
  List<ClassInfo> unusedClasses=new LinkedList<ClassInfo>();
  List<FieldInfo> unusedFields=new LinkedList<FieldInfo>();
  List<MethodInfo> unusedMethods=new LinkedList<MethodInfo>();
  int fields=0;
  int methods=0;
  for (  ClassInfo cls : appInfo.getClassInfos()) {
    if (ucf.getMark(cls) == Mark.UNUSED) {
      unusedClasses.add(cls);
      logger.debug("String_Node_Str" + cls);
      continue;
    }
    unusedFields.clear();
    unusedMethods.clear();
    if (appInfo.isHwObject(cls)) {
      logger.debug("String_Node_Str" + cls);
    }
 else {
      for (      FieldInfo f : cls.getFields()) {
        if (ucf.getMark(f) == Mark.UNUSED) {
          unusedFields.add(f);
        }
      }
    }
    for (    MethodInfo m : cls.getMethods()) {
      Mark mark=ucf.getMark(m);
      if (mark == Mark.UNUSED) {
        unusedMethods.add(m);
      }
      if (mark == Mark.MARKED && !m.isNative() && !m.isAbstract()) {
        logger.info("String_Node_Str" + m + "String_Node_Str");
        m.setAbstract(true);
      }
    }
    for (    FieldInfo f : unusedFields) {
      fields+=removeField(f);
    }
    for (    MethodInfo m : unusedMethods) {
      methods+=removeMethod(m);
    }
  }
  appInfo.removeClasses(unusedClasses);
  int classes=unusedClasses.size();
  logger.info("String_Node_Str" + classes + (classes == 1 ? "String_Node_Str" : "String_Node_Str")+ fields+ (fields == 1 ? "String_Node_Str" : "String_Node_Str")+ methods+ (methods == 1 ? "String_Node_Str" : "String_Node_Str"));
}

Fixed version (ground truth):
/** 
 * Remove all unused classes, methods and fields.
 */
private void removeUnusedMembers(){
  AppInfo appInfo=AppInfo.getSingleton();
  List<ClassInfo> unusedClasses=new LinkedList<ClassInfo>();
  List<FieldInfo> unusedFields=new LinkedList<FieldInfo>();
  List<MethodInfo> unusedMethods=new LinkedList<MethodInfo>();
  int fields=0;
  int methods=0;
  for (  ClassInfo cls : appInfo.getClassInfos()) {
    if (ucf.getMark(cls) == Mark.UNUSED) {
      unusedClasses.add(cls);
      logger.debug("String_Node_Str" + cls);
      continue;
    }
    unusedFields.clear();
    unusedMethods.clear();
    if (appInfo.isHwObject(cls)) {
      logger.debug("String_Node_Str" + cls);
    }
 else {
      for (      FieldInfo f : cls.getFields()) {
        if (ucf.getMark(f) == Mark.UNUSED) {
          unusedFields.add(f);
        }
      }
    }
    for (    MethodInfo m : cls.getMethods()) {
      Mark mark=ucf.getMark(m);
      if (mark == Mark.UNUSED) {
        unusedMethods.add(m);
      }
      if (mark == Mark.MARKED && !m.isNative() && !m.isAbstract()) {
        logger.info("String_Node_Str" + m + "String_Node_Str");
        m.setAbstract(true);
        m.getClassInfo().setAbstract(true);
      }
    }
    for (    FieldInfo f : unusedFields) {
      fields+=removeField(f);
    }
    for (    MethodInfo m : unusedMethods) {
      methods+=removeMethod(m);
    }
  }
  appInfo.removeClasses(unusedClasses);
  int classes=unusedClasses.size();
  logger.info("String_Node_Str" + classes + (classes == 1 ? "String_Node_Str" : "String_Node_Str")+ fields+ (fields == 1 ? "String_Node_Str" : "String_Node_Str")+ methods+ (methods == 1 ? "String_Node_Str" : "String_Node_Str"));
}