Program: 39670
Project: 39670
Buggy source:
private static Map<String,PropertyInfo> buildProperties(ClassTypeInfo type){
  ClassIntrospector introspector=new ClassIntrospector(type);
  Map<String,MethodInfo> getterMap=introspector.getGetterMap();
  Map<String,Set<MethodInfo>> setterMap=introspector.getSetterMap();
  Map<String,PropertyInfo> properties=new HashMap<String,PropertyInfo>();
  for (  Map.Entry<String,MethodInfo> getterEntry : getterMap.entrySet()) {
    String name=getterEntry.getKey();
    MethodInfo getter=getterEntry.getValue();
    TypeInfo getterTypeInfo=getter.getReturnType();
    Set<MethodInfo> setters=setterMap.get(name);
    PropertyInfo property=null;
    if (setters != null) {
      for (      MethodInfo setter : setters) {
        TypeInfo setterTypeInfo=setter.getParameterTypes().get(0);
        if (getterTypeInfo.equals(setterTypeInfo)) {
          property=createPropertyInfo(type,name,getterTypeInfo,getter,setter);
        }
      }
    }
    if (property == null) {
      property=createPropertyInfo(type,name,getterTypeInfo,getter,null);
    }
    if (property != null) {
      properties.put(name,property);
    }
  }
  setterMap.keySet().removeAll(properties.keySet());
  for (  Map.Entry<String,Set<MethodInfo>> setterEntry : setterMap.entrySet()) {
    String name=setterEntry.getKey();
    for (    MethodInfo setter : setterEntry.getValue()) {
      TypeInfo setterTypeInfo=setter.getParameterTypes().get(0);
      PropertyInfo property=createPropertyInfo(type,name,setterTypeInfo,null,setter);
      if (property != null) {
        properties.put(name,property);
        break;
      }
    }
  }
  return properties;
}

Fixed version (ground truth):
private static Map<String,PropertyInfo> buildProperties(ClassTypeInfo type){
  MethodIntrospector introspector=new MethodIntrospector(HierarchyScope.ALL,true);
  Map<String,MethodInfo> getterMap=introspector.getGetterMap(type);
  Map<String,Set<MethodInfo>> setterMap=introspector.getSetterMap(type);
  Map<String,PropertyInfo> properties=new HashMap<String,PropertyInfo>();
  for (  Map.Entry<String,MethodInfo> getterEntry : getterMap.entrySet()) {
    String name=getterEntry.getKey();
    MethodInfo getter=getterEntry.getValue();
    TypeInfo getterTypeInfo=getter.getReturnType();
    Set<MethodInfo> setters=setterMap.get(name);
    PropertyInfo property=null;
    if (setters != null) {
      for (      MethodInfo setter : setters) {
        TypeInfo setterTypeInfo=setter.getParameterTypes().get(0);
        if (getterTypeInfo.equals(setterTypeInfo)) {
          property=createPropertyInfo(type,name,getterTypeInfo,getter,setter);
        }
      }
    }
    if (property == null) {
      property=createPropertyInfo(type,name,getterTypeInfo,getter,null);
    }
    if (property != null) {
      properties.put(name,property);
    }
  }
  setterMap.keySet().removeAll(properties.keySet());
  for (  Map.Entry<String,Set<MethodInfo>> setterEntry : setterMap.entrySet()) {
    String name=setterEntry.getKey();
    for (    MethodInfo setter : setterEntry.getValue()) {
      TypeInfo setterTypeInfo=setter.getParameterTypes().get(0);
      PropertyInfo property=createPropertyInfo(type,name,setterTypeInfo,null,setter);
      if (property != null) {
        properties.put(name,property);
        break;
      }
    }
  }
  return properties;
}