Program: 85574
Project: 85574
Buggy source:
private ConfigurationMetadata(Class<T> configClass){
  if (configClass == null) {
    throw new NullPointerException("String_Node_Str");
  }
  this.configClass=configClass;
  if (Modifier.isAbstract(configClass.getModifiers())) {
    errors.add("String_Node_Str",configClass.getName());
  }
  if (!Modifier.isPublic(configClass.getModifiers())) {
    errors.add("String_Node_Str",configClass.getName());
  }
  Constructor<T> constructor=null;
  try {
    constructor=configClass.getDeclaredConstructor();
    if (!Modifier.isPublic(constructor.getModifiers())) {
      errors.add("String_Node_Str",constructor.toGenericString());
    }
  }
 catch (  Exception e) {
    errors.add("String_Node_Str",configClass.getName());
  }
  this.constructor=constructor;
  Map<String,AttributeMetadata> attributes=Maps.newTreeMap();
  for (  Method configMethod : findConfigMethods(configClass)) {
    Config config=configMethod.getAnnotation(Config.class);
    AttributeMetadata attribute=buildAttributeMetadata(configClass,config,configMethod);
    if (attribute != null) {
      if (attributes.containsKey(attribute.getName())) {
        errors.add("String_Node_Str",configClass.getName(),attribute.getName());
      }
      attributes.put(attribute.getName(),attribute);
    }
  }
  this.attributes=ImmutableSortedMap.copyOf(attributes);
  for (Class<?> clazz=configClass; !clazz.equals(Object.class); clazz=clazz.getSuperclass()) {
    for (    Method method : clazz.getDeclaredMethods()) {
      if (method.isAnnotationPresent(Config.class)) {
        if (!Modifier.isPublic(method.getModifiers())) {
          errors.add("String_Node_Str",method.toGenericString());
        }
        if (Modifier.isStatic(method.getModifiers())) {
          errors.add("String_Node_Str",method.toGenericString());
        }
      }
    }
  }
  if (errors.getErrors().isEmpty() && this.attributes.isEmpty()) {
    errors.add("String_Node_Str",configClass.getName());
  }
}

Fixed version (ground truth):
private ConfigurationMetadata(Class<T> configClass,boolean legacy){
  if (configClass == null) {
    throw new NullPointerException("String_Node_Str");
  }
  this.configClass=configClass;
  if (!legacy && Modifier.isAbstract(configClass.getModifiers())) {
    errors.add("String_Node_Str",configClass.getName());
  }
  if (!Modifier.isPublic(configClass.getModifiers())) {
    errors.add("String_Node_Str",configClass.getName());
  }
  Constructor<T> constructor=null;
  try {
    constructor=configClass.getDeclaredConstructor();
    if (!Modifier.isPublic(constructor.getModifiers())) {
      errors.add("String_Node_Str",constructor.toGenericString());
    }
  }
 catch (  Exception e) {
    errors.add("String_Node_Str",configClass.getName());
  }
  this.constructor=constructor;
  Map<String,AttributeMetadata> attributes=Maps.newTreeMap();
  for (  Method configMethod : findConfigMethods(configClass)) {
    Config config=configMethod.getAnnotation(Config.class);
    AttributeMetadata attribute=buildAttributeMetadata(configClass,config,configMethod,legacy);
    if (attribute != null) {
      if (attributes.containsKey(attribute.getName())) {
        errors.add("String_Node_Str",configClass.getName(),attribute.getName());
      }
      attributes.put(attribute.getName(),attribute);
    }
  }
  this.attributes=ImmutableSortedMap.copyOf(attributes);
  for (Class<?> clazz=configClass; !clazz.equals(Object.class); clazz=clazz.getSuperclass()) {
    for (    Method method : clazz.getDeclaredMethods()) {
      if (method.isAnnotationPresent(Config.class)) {
        if (!Modifier.isPublic(method.getModifiers())) {
          errors.add("String_Node_Str",method.toGenericString());
        }
        if (Modifier.isStatic(method.getModifiers())) {
          errors.add("String_Node_Str",method.toGenericString());
        }
      }
    }
  }
  if (errors.getErrors().isEmpty() && this.attributes.isEmpty()) {
    errors.add("String_Node_Str",configClass.getName());
  }
}