Program: 65305
Project: 65305
Buggy source:
public ArrayList<Property> getPropertiesForClass(JavaClass cls,TypeInfo info){
  ArrayList<Property> returnList=new ArrayList<Property>();
  if (!info.isTransient()) {
    JavaClass superClass=cls.getSuperclass();
    if (null != superClass) {
      TypeInfo superClassInfo=typeInfo.get(superClass.getQualifiedName());
      while (superClassInfo != null && superClassInfo.isTransient()) {
        if (info.getXmlAccessType() == XmlAccessType.FIELD) {
          returnList.addAll(0,getFieldPropertiesForClass(superClass,superClassInfo,false));
        }
 else         if (info.getXmlAccessType() == XmlAccessType.PROPERTY) {
          returnList.addAll(0,getPropertyPropertiesForClass(superClass,superClassInfo,false));
        }
 else         if (info.getXmlAccessType() == XmlAccessType.PUBLIC_MEMBER) {
          returnList.addAll(0,getPublicMemberPropertiesForClass(superClass,superClassInfo));
        }
 else {
          returnList.addAll(0,getNoAccessTypePropertiesForClass(superClass,superClassInfo));
        }
        superClass=superClass.getSuperclass();
        superClassInfo=typeInfo.get(superClass.getQualifiedName());
      }
    }
  }
  if (info.isTransient()) {
    returnList.addAll(getNoAccessTypePropertiesForClass(cls,info));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.FIELD) {
    returnList.addAll(getFieldPropertiesForClass(cls,info,false));
    returnList.addAll(getPropertyPropertiesForClass(cls,info,false,true));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.PROPERTY) {
    returnList.addAll(getFieldPropertiesForClass(cls,info,false,true));
    returnList.addAll(getPropertyPropertiesForClass(cls,info,false));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.PUBLIC_MEMBER) {
    returnList.addAll(getPublicMemberPropertiesForClass(cls,info));
  }
 else {
    returnList.addAll(getNoAccessTypePropertiesForClass(cls,info));
  }
  return returnList;
}

Fixed version (ground truth):
public ArrayList<Property> getPropertiesForClass(JavaClass cls,TypeInfo info){
  ArrayList<Property> returnList=new ArrayList<Property>();
  if (!info.isTransient()) {
    JavaClass superClass=cls.getSuperclass();
    if (null != superClass) {
      TypeInfo superClassInfo=typeInfo.get(superClass.getQualifiedName());
      ArrayList<Property> superClassProperties;
      while (superClassInfo != null && superClassInfo.isTransient()) {
        if (info.getXmlAccessType() == XmlAccessType.FIELD) {
          superClassProperties=getFieldPropertiesForClass(superClass,superClassInfo,false);
        }
 else         if (info.getXmlAccessType() == XmlAccessType.PROPERTY) {
          superClassProperties=getPropertyPropertiesForClass(superClass,superClassInfo,false);
        }
 else         if (info.getXmlAccessType() == XmlAccessType.PUBLIC_MEMBER) {
          superClassProperties=getPublicMemberPropertiesForClass(superClass,superClassInfo);
        }
 else {
          superClassProperties=getNoAccessTypePropertiesForClass(superClass,superClassInfo);
        }
        superClass=superClass.getSuperclass();
        superClassInfo=typeInfo.get(superClass.getQualifiedName());
        for (        Property next : superClassProperties) {
          next.setIsSuperClassProperty(true);
        }
        returnList.addAll(0,superClassProperties);
      }
    }
  }
  if (info.isTransient()) {
    returnList.addAll(getNoAccessTypePropertiesForClass(cls,info));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.FIELD) {
    returnList.addAll(getFieldPropertiesForClass(cls,info,false));
    returnList.addAll(getPropertyPropertiesForClass(cls,info,false,true));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.PROPERTY) {
    returnList.addAll(getFieldPropertiesForClass(cls,info,false,true));
    returnList.addAll(getPropertyPropertiesForClass(cls,info,false));
  }
 else   if (info.getXmlAccessType() == XmlAccessType.PUBLIC_MEMBER) {
    returnList.addAll(getPublicMemberPropertiesForClass(cls,info));
  }
 else {
    returnList.addAll(getNoAccessTypePropertiesForClass(cls,info));
  }
  return returnList;
}