Program: 190806
Project: 190806
Buggy source:
/** 
 * Adds properties that consists of accessors.
 */
private void findGetterSetterProperties(AccessType at){
  TODO.checkSpec();
  Map<String,M> getters=new LinkedHashMap<String,M>();
  Map<String,M> setters=new LinkedHashMap<String,M>();
  Collection<? extends M> methods=nav().getDeclaredMethods(clazz);
  for (  M method : methods) {
    boolean used=false;
    if (nav().isBridgeMethod(method))     continue;
    String name=nav().getMethodName(method);
    int arity=nav().getMethodParameters(method).length;
    if (nav().isStaticMethod(method)) {
      ensureNoAnnotation(method);
      continue;
    }
    String propName=getPropertyNameFromGetMethod(name);
    if (propName != null) {
      if (arity == 0) {
        getters.put(propName,method);
        used=true;
      }
    }
    propName=getPropertyNameFromSetMethod(name);
    if (propName != null) {
      if (arity == 1) {
        setters.put(propName,method);
        used=true;
      }
    }
    if (!used)     ensureNoAnnotation(method);
  }
  Set<String> complete=new TreeSet<String>();
  complete.addAll(getters.keySet());
  complete.retainAll(setters.keySet());
  resurrect(getters,complete);
  resurrect(setters,complete);
  for (  String name : complete) {
    M getter=getters.get(name);
    M setter=setters.get(name);
    Annotation[] ga=getter != null ? reader().getAllMethodAnnotations(getter,this) : EMPTY_ANNOTATIONS;
    Annotation[] sa=setter != null ? reader().getAllMethodAnnotations(setter,this) : EMPTY_ANNOTATIONS;
    boolean getterHasAnnotation=hasJAXBAnnotation(ga);
    boolean setterHasAnnotation=hasJAXBAnnotation(sa);
    if (at == AccessType.PROPERTY || (at == AccessType.PUBLIC_MEMBER && (getter == null || nav().isPublicMethod(getter)) && (setter == null || nav().isPublicMethod(setter))) || getterHasAnnotation || setterHasAnnotation) {
      if (getter != null && setter != null && !nav().getReturnType(getter).equals(nav().getMethodParameters(setter)[0])) {
        builder.reportError(new IllegalAnnotationException(Messages.GETTER_SETTER_INCOMPATIBLE_TYPE.format(nav().getTypeName(nav().getReturnType(getter)),nav().getTypeName(nav().getMethodParameters(setter)[0])),new MethodLocatable<M>(this,getter,nav()),new MethodLocatable<M>(this,setter,nav())));
        continue;
      }
      Annotation[] r;
      if (ga.length == 0) {
        r=sa;
      }
 else       if (sa.length == 0) {
        r=ga;
      }
 else {
        r=new Annotation[ga.length + sa.length];
        System.arraycopy(ga,0,r,0,ga.length);
        System.arraycopy(sa,0,r,ga.length,sa.length);
      }
      addProperty(createAccessorSeed(getter,setter),r);
    }
  }
  getters.keySet().removeAll(complete);
  setters.keySet().removeAll(complete);
}

Fixed version (ground truth):
/** 
 * Adds properties that consists of accessors.
 */
private void findGetterSetterProperties(AccessType at){
  TODO.checkSpec();
  Map<String,M> getters=new LinkedHashMap<String,M>();
  Map<String,M> setters=new LinkedHashMap<String,M>();
  Collection<? extends M> methods=nav().getDeclaredMethods(clazz);
  for (  M method : methods) {
    boolean used=false;
    if (nav().isBridgeMethod(method))     continue;
    String name=nav().getMethodName(method);
    int arity=nav().getMethodParameters(method).length;
    if (nav().isStaticMethod(method)) {
      ensureNoAnnotation(method);
      continue;
    }
    String propName=getPropertyNameFromGetMethod(name);
    if (propName != null) {
      if (arity == 0) {
        getters.put(propName,method);
        used=true;
      }
    }
    propName=getPropertyNameFromSetMethod(name);
    if (propName != null) {
      if (arity == 1) {
        setters.put(propName,method);
        used=true;
      }
    }
    if (!used)     ensureNoAnnotation(method);
  }
  Set<String> complete=new TreeSet<String>();
  complete.addAll(getters.keySet());
  complete.retainAll(setters.keySet());
  resurrect(getters,complete);
  resurrect(setters,complete);
  for (  String name : complete) {
    M getter=getters.get(name);
    M setter=setters.get(name);
    Annotation[] ga=getter != null ? reader().getAllMethodAnnotations(getter,new MethodLocatable<M>(this,getter,nav())) : EMPTY_ANNOTATIONS;
    Annotation[] sa=setter != null ? reader().getAllMethodAnnotations(setter,new MethodLocatable<M>(this,setter,nav())) : EMPTY_ANNOTATIONS;
    boolean getterHasAnnotation=hasJAXBAnnotation(ga);
    boolean setterHasAnnotation=hasJAXBAnnotation(sa);
    if (at == AccessType.PROPERTY || (at == AccessType.PUBLIC_MEMBER && (getter == null || nav().isPublicMethod(getter)) && (setter == null || nav().isPublicMethod(setter))) || getterHasAnnotation || setterHasAnnotation) {
      if (getter != null && setter != null && !nav().getReturnType(getter).equals(nav().getMethodParameters(setter)[0])) {
        builder.reportError(new IllegalAnnotationException(Messages.GETTER_SETTER_INCOMPATIBLE_TYPE.format(nav().getTypeName(nav().getReturnType(getter)),nav().getTypeName(nav().getMethodParameters(setter)[0])),new MethodLocatable<M>(this,getter,nav()),new MethodLocatable<M>(this,setter,nav())));
        continue;
      }
      Annotation[] r;
      if (ga.length == 0) {
        r=sa;
      }
 else       if (sa.length == 0) {
        r=ga;
      }
 else {
        r=new Annotation[ga.length + sa.length];
        System.arraycopy(ga,0,r,0,ga.length);
        System.arraycopy(sa,0,r,ga.length,sa.length);
      }
      addProperty(createAccessorSeed(getter,setter),r);
    }
  }
  getters.keySet().removeAll(complete);
  setters.keySet().removeAll(complete);
}