Program: 20585
Project: 20585
Buggy source:
private StoreMethodInfo(Method method){
  final String name=method.getName();
  final Get getInfo=method.getAnnotation(Get.class);
  final Set setInfo=method.getAnnotation(Set.class);
  final Find findInfo=method.getAnnotation(Find.class);
  final Class returnType=method.getReturnType();
  final Class[] params=method.getParameterTypes();
  if (getInfo != null) {
    if (params.length != 1)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(getInfo.value(),returnType);
    type=1;
    finderType=0;
  }
 else   if (setInfo != null) {
    if (params.length < 2)     throw new ConfigurationException("String_Node_Str" + method);
    if (params.length - 1 != setInfo.value().length)     throw new ConfigurationException("String_Node_Str" + (params.length - 1) + "String_Node_Str"+ method);
    objectClass=params[0];
    for (int i=1; i < params.length; i++)     fields.put(setInfo.value()[i - 1],params[i]);
    type=2;
    finderType=0;
  }
 else   if (findInfo != null) {
    if (params.length < 1)     throw new ConfigurationException("String_Node_Str" + method);
    if (params.length != findInfo.by().length)     throw new ConfigurationException("String_Node_Str" + params.length + "String_Node_Str"+ method);
    for (int i=0; i < params.length; i++)     fields.put(setInfo.value()[i],params[i]);
    type=3;
    if (returnType.isArray()) {
      objectClass=returnType.getComponentType();
      finderType=2;
    }
 else     if (returnType == Collection.class) {
      objectClass=(Class)((ParameterizedType)method.getGenericReturnType()).getActualTypeArguments()[0];
      finderType=3;
    }
 else {
      objectClass=returnType;
      finderType=1;
    }
  }
 else   if (name.startsWith("String_Node_Str") && name.length() > 3) {
    if (params.length != 1)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(Character.toLowerCase(name.charAt(3)) + name.substring(4),returnType);
    type=1;
    finderType=0;
  }
 else   if (name.startsWith("String_Node_Str") && name.length() > 3) {
    if (params.length != 2)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(Character.toLowerCase(name.charAt(3)) + name.substring(4),returnType);
    type=2;
    finderType=0;
  }
 else {
    throw new ConfigurationException("String_Node_Str" + method);
  }
}

Fixed version (ground truth):
private StoreMethodInfo(Method method){
  final String name=method.getName();
  final Get getInfo=method.getAnnotation(Get.class);
  final Set setInfo=method.getAnnotation(Set.class);
  final Find findInfo=method.getAnnotation(Find.class);
  final Class returnType=method.getReturnType();
  final Class[] params=method.getParameterTypes();
  if (getInfo != null) {
    if (params.length != 1)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(getInfo.value(),returnType);
    type=1;
    finderType=0;
  }
 else   if (setInfo != null) {
    if (params.length < 2)     throw new ConfigurationException("String_Node_Str" + method);
    if (params.length - 1 != setInfo.value().length)     throw new ConfigurationException("String_Node_Str" + (params.length - 1) + "String_Node_Str"+ method);
    objectClass=params[0];
    for (int i=1; i < params.length; i++)     fields.put(setInfo.value()[i - 1],params[i]);
    type=2;
    finderType=0;
  }
 else   if (findInfo != null) {
    if (params.length < 1)     throw new ConfigurationException("String_Node_Str" + method);
    if (params.length != findInfo.by().length)     throw new ConfigurationException("String_Node_Str" + params.length + "String_Node_Str"+ method);
    for (int i=0; i < params.length; i++)     fields.put(findInfo.by()[i],params[i]);
    type=3;
    if (returnType.isArray()) {
      objectClass=returnType.getComponentType();
      finderType=2;
    }
 else     if (returnType == Collection.class) {
      objectClass=(Class)((ParameterizedType)method.getGenericReturnType()).getActualTypeArguments()[0];
      finderType=3;
    }
 else {
      objectClass=returnType;
      finderType=1;
    }
  }
 else   if (name.startsWith("String_Node_Str") && name.length() > 3) {
    if (params.length != 1)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(Character.toLowerCase(name.charAt(3)) + name.substring(4),returnType);
    type=1;
    finderType=0;
  }
 else   if (name.startsWith("String_Node_Str") && name.length() > 3) {
    if (params.length != 2)     throw new ConfigurationException("String_Node_Str" + method);
    objectClass=params[0];
    fields.put(Character.toLowerCase(name.charAt(3)) + name.substring(4),params[1]);
    type=2;
    finderType=0;
  }
 else {
    throw new ConfigurationException("String_Node_Str" + method);
  }
}