Program: 61618
Project: 61618
Buggy source:
/** 
 * Given a program variant, the method generates operations for modifying that variants. Each operation is related to one gen of the program variant.
 * @param variant
 * @param generation
 * @return
 * @throws Exception
 */
private boolean modifyProgramVariant(ProgramVariant variant,int generation) throws Exception {
  log.debug("String_Node_Str" + variant);
  boolean oneOperationCreated=false;
  int mut=0, notmut=0, notapplied=0;
  int nroGen=0;
  List<Gen> gensToProcess=getGenList(variant.getGenList());
  for (  Gen genProgInstance : gensToProcess) {
    genProgInstance.setProgramVariant(variant);
    GenOperationInstance operationInGen=createOperationForGen(genProgInstance);
    if (operationInGen != null) {
      if (true) {
        currentStat.numberOfAppliedOp++;
        variant.putGenOperation(generation,operationInGen);
        operationInGen.setGen(genProgInstance);
        oneOperationCreated=true;
        mut++;
        if (!ConfigurationProperties.getPropertyBool("String_Node_Str")) {
          break;
        }
      }
 else {
        currentStat.numberOfNotAppliedOp++;
        log.debug("String_Node_Str" + (nroGen++) + "String_Node_Str"+ (genProgInstance.getRootElement().getSignature())+ "String_Node_Str"+ operationInGen.getModified());
        notapplied++;
      }
    }
 else {
      currentStat.numberOfGenInmutated++;
      log.debug("String_Node_Str" + (nroGen++) + "String_Node_Str"+ StringUtil.trunc(genProgInstance.getRootElement().getSignature()));
      notmut++;
    }
  }
  if (oneOperationCreated) {
    updateVariantGenList(variant,generation);
  }
  log.debug("String_Node_Str" + variant + "String_Node_Str"+ mut+ "String_Node_Str"+ notmut+ "String_Node_Str"+ notapplied+ "String_Node_Str");
  return oneOperationCreated;
}

Fixed version (ground truth):
/** 
 * Given a program variant, the method generates operations for modifying that variants. Each operation is related to one gen of the program variant.
 * @param variant
 * @param generation
 * @return
 * @throws Exception
 */
private boolean modifyProgramVariant(ProgramVariant variant,int generation) throws Exception {
  log.debug("String_Node_Str" + variant);
  boolean oneOperationCreated=false;
  int mut=0, notmut=0, notapplied=0;
  int nroGen=0;
  List<Gen> gensToProcess=getGenList(variant.getGenList());
  for (  Gen genProgInstance : gensToProcess) {
    if (alreadyModified(genProgInstance,variant.getOperations(),generation))     continue;
    genProgInstance.setProgramVariant(variant);
    GenOperationInstance operationInGen=createOperationForGen(genProgInstance);
    if (operationInGen != null) {
      if (true) {
        currentStat.numberOfAppliedOp++;
        variant.putGenOperation(generation,operationInGen);
        operationInGen.setGen(genProgInstance);
        oneOperationCreated=true;
        mut++;
        if (!ConfigurationProperties.getPropertyBool("String_Node_Str")) {
          break;
        }
      }
 else {
        currentStat.numberOfNotAppliedOp++;
        log.debug("String_Node_Str" + (nroGen++) + "String_Node_Str"+ (genProgInstance.getRootElement().getSignature())+ "String_Node_Str"+ operationInGen.getModified());
        notapplied++;
      }
    }
 else {
      currentStat.numberOfGenInmutated++;
      log.debug("String_Node_Str" + (nroGen++) + "String_Node_Str"+ StringUtil.trunc(genProgInstance.getRootElement().getSignature()));
      notmut++;
    }
  }
  if (oneOperationCreated) {
    updateVariantGenList(variant,generation);
  }
  log.debug("String_Node_Str" + variant + "String_Node_Str"+ mut+ "String_Node_Str"+ notmut+ "String_Node_Str"+ notapplied+ "String_Node_Str");
  return oneOperationCreated;
}