Program: 15728
Project: 15728
Buggy source:
private void addBeanInfoToClassInrospectionData(Map introspData,Class clazz,Map accessibleMethods) throws IntrospectionException {
  BeanInfo beanInfo=Introspector.getBeanInfo(clazz);
  PropertyDescriptor[] pda=beanInfo.getPropertyDescriptors();
  int pdaLength=pda != null ? pda.length : 0;
  for (int i=pdaLength - 1; i >= 0; --i) {
    addPropertyDescriptorToClassIntrospectionData(pda[i],clazz,accessibleMethods,introspData);
  }
  if (exposureLevel < EXPOSE_PROPERTIES_ONLY) {
    MethodAppearanceDecision decision=new MethodAppearanceDecision();
    MethodDescriptor[] mda=beanInfo.getMethodDescriptors();
    int mdaLength=mda != null ? mda.length : 0;
    for (int i=mdaLength - 1; i >= 0; --i) {
      MethodDescriptor md=mda[i];
      Method publicMethod=getAccessibleMethod(md.getMethod(),accessibleMethods);
      if (publicMethod != null && isSafeMethod(publicMethod)) {
        decision.setDefaults(publicMethod);
        finetuneMethodAppearance(clazz,publicMethod,decision);
        PropertyDescriptor propDesc=decision.getExposeAsProperty();
        if (propDesc != null && !(introspData.get(propDesc.getName()) instanceof PropertyDescriptor)) {
          addPropertyDescriptorToClassIntrospectionData(propDesc,clazz,accessibleMethods,introspData);
        }
        String methodKey=decision.getExposeMethodAs();
        if (methodKey != null) {
          Object previous=introspData.get(methodKey);
          if (previous instanceof Method) {
            OverloadedMethods overloadedMethods=new OverloadedMethods(this);
            overloadedMethods.addMember((Method)previous);
            overloadedMethods.addMember(publicMethod);
            introspData.put(methodKey,overloadedMethods);
            getArgTypes(introspData).remove(previous);
          }
 else           if (previous instanceof OverloadedMethods) {
            ((OverloadedMethods)previous).addMember(publicMethod);
          }
 else           if (decision.getMethodShadowsProperty() || !(previous instanceof PropertyDescriptor)) {
            introspData.put(methodKey,publicMethod);
            getArgTypes(introspData).put(publicMethod,publicMethod.getParameterTypes());
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
private void addBeanInfoToClassInrospectionData(Map introspData,Class clazz,Map accessibleMethods) throws IntrospectionException {
  BeanInfo beanInfo=Introspector.getBeanInfo(clazz);
  PropertyDescriptor[] pda=beanInfo.getPropertyDescriptors();
  int pdaLength=pda != null ? pda.length : 0;
  for (int i=pdaLength - 1; i >= 0; --i) {
    addPropertyDescriptorToClassIntrospectionData(pda[i],clazz,accessibleMethods,introspData);
  }
  if (exposureLevel < EXPOSE_PROPERTIES_ONLY) {
    MethodAppearanceDecision decision=new MethodAppearanceDecision();
    MethodDescriptor[] mda=shortMethodDescriptors(beanInfo.getMethodDescriptors());
    int mdaLength=mda != null ? mda.length : 0;
    for (int i=mdaLength - 1; i >= 0; --i) {
      MethodDescriptor md=mda[i];
      Method publicMethod=getAccessibleMethod(md.getMethod(),accessibleMethods);
      if (publicMethod != null && isSafeMethod(publicMethod)) {
        decision.setDefaults(publicMethod);
        finetuneMethodAppearance(clazz,publicMethod,decision);
        PropertyDescriptor propDesc=decision.getExposeAsProperty();
        if (propDesc != null && !(introspData.get(propDesc.getName()) instanceof PropertyDescriptor)) {
          addPropertyDescriptorToClassIntrospectionData(propDesc,clazz,accessibleMethods,introspData);
        }
        String methodKey=decision.getExposeMethodAs();
        if (methodKey != null) {
          Object previous=introspData.get(methodKey);
          if (previous instanceof Method) {
            OverloadedMethods overloadedMethods=new OverloadedMethods(this);
            overloadedMethods.addMember((Method)previous);
            overloadedMethods.addMember(publicMethod);
            introspData.put(methodKey,overloadedMethods);
            getArgTypes(introspData).remove(previous);
          }
 else           if (previous instanceof OverloadedMethods) {
            ((OverloadedMethods)previous).addMember(publicMethod);
          }
 else           if (decision.getMethodShadowsProperty() || !(previous instanceof PropertyDescriptor)) {
            introspData.put(methodKey,publicMethod);
            getArgTypes(introspData).put(publicMethod,publicMethod.getParameterTypes());
          }
        }
      }
    }
  }
}