Program: 113002
Project: 113002
Buggy source:
/** 
 * This will create the facade objects needed in order to parse the fields represented in the translation map.
 * @param map
 * @return
 */
public void createFacadeObjects(){
  if (translatedObjects != null) {
    throw new RuntimeException("String_Node_Str" + "String_Node_Str");
  }
  translatedObjects=new ArrayList<>();
  Map<Class<?>,CtClass> createdClasses=new HashMap<Class<?>,CtClass>();
  try {
    ClassPool classPool=ClassPool.getDefault();
    for (    Map.Entry<String,TranslationEntry> mapEntry : translations.entrySet()) {
      String newFieldName=mapEntry.getKey();
      TranslationEntry entry=mapEntry.getValue();
      Class<?> objectClass=entry.getObject().getClass();
      CtClass oldClass=classPool.get(objectClass.getName());
      CtClass newClass=createdClasses.get(objectClass);
      if (newClass == null) {
        newClass=JavassistUtils.generateEmptyClass();
        JavassistUtils.copyClassAnnotations(oldClass,newClass);
        createdClasses.put(objectClass,newClass);
      }
      CtField newField=null;
      if (!entry.isMethod()) {
        newField=new CtField(oldClass.getField(entry.getParam().getName()),newClass);
      }
 else {
        CtClass fieldType=classPool.get(entry.getParam().getType().getName());
        newField=new CtField(fieldType,entry.getParam().getName(),newClass);
        CtMethod method=JavassistUtils.findMethod(oldClass,(Method)entry.getMember());
        JavassistUtils.copyMethodAnnotationsToField(method,newField);
      }
      if (entry.getPrefix().length() > 0) {
        overrideParameterPrefixes(newField,entry.getPrefixedNames());
      }
      if (entry.isRequired() && entry.hasValue()) {
        disableBooleanMember(REQUIRED_MEMBER,newField);
      }
      if (entry.isPassword() && entry.hasValue()) {
        disableBooleanMember(PASSWORD_MEMBER,newField);
      }
      newField.setName(newFieldName);
      newField.getFieldInfo().setAccessFlags(AccessFlag.PUBLIC);
      newClass.addField(newField);
    }
    for (    CtClass clz : createdClasses.values()) {
      Class<?> toClass=clz.toClass();
      Object instance=toClass.newInstance();
      translatedObjects.add(instance);
    }
  }
 catch (  RuntimeException e) {
    throw e;
  }
catch (  Exception e) {
    throw new RuntimeException(e);
  }
}

Fixed version (ground truth):
/** 
 * This will create the facade objects needed in order to parse the fields represented in the translation map.
 * @param map
 * @return
 */
public void createFacadeObjects(){
  if (translatedObjects != null) {
    throw new RuntimeException("String_Node_Str" + "String_Node_Str");
  }
  translatedObjects=new ArrayList<>();
  Map<Class<?>,CtClass> createdClasses=new HashMap<Class<?>,CtClass>();
  try {
    ClassPool classPool=ClassPool.getDefault();
    ClassClassPath path=new ClassClassPath(JCommanderPrefixTranslator.class);
    classPool.insertClassPath(path);
    for (    Map.Entry<String,TranslationEntry> mapEntry : translations.entrySet()) {
      String newFieldName=mapEntry.getKey();
      TranslationEntry entry=mapEntry.getValue();
      Class<?> objectClass=entry.getObject().getClass();
      CtClass oldClass=classPool.get(objectClass.getName());
      CtClass newClass=createdClasses.get(objectClass);
      if (newClass == null) {
        newClass=JavassistUtils.generateEmptyClass();
        JavassistUtils.copyClassAnnotations(oldClass,newClass);
        createdClasses.put(objectClass,newClass);
      }
      CtField newField=null;
      if (!entry.isMethod()) {
        newField=new CtField(oldClass.getField(entry.getParam().getName()),newClass);
      }
 else {
        CtClass fieldType=classPool.get(entry.getParam().getType().getName());
        newField=new CtField(fieldType,entry.getParam().getName(),newClass);
        CtMethod method=JavassistUtils.findMethod(oldClass,(Method)entry.getMember());
        JavassistUtils.copyMethodAnnotationsToField(method,newField);
      }
      if (entry.getPrefix().length() > 0) {
        overrideParameterPrefixes(newField,entry.getPrefixedNames());
      }
      if (entry.isRequired() && entry.hasValue()) {
        disableBooleanMember(REQUIRED_MEMBER,newField);
      }
      if (entry.isPassword() && entry.hasValue()) {
        disableBooleanMember(PASSWORD_MEMBER,newField);
      }
      newField.setName(newFieldName);
      newField.getFieldInfo().setAccessFlags(AccessFlag.PUBLIC);
      newClass.addField(newField);
    }
    for (    CtClass clz : createdClasses.values()) {
      Class<?> toClass=clz.toClass();
      Object instance=toClass.newInstance();
      translatedObjects.add(instance);
    }
  }
 catch (  RuntimeException e) {
    throw e;
  }
catch (  Exception e) {
    throw new RuntimeException(e);
  }
}