Program: 117877
Project: 117877
Buggy source:
private static void getModulesInTable(final IProcess process,IElementParameter curParam,List<ModuleNeeded> modulesNeeded){
  if (!(curParam.getValue() instanceof List)) {
    return;
  }
  List<Map<String,Object>> values=(List<Map<String,Object>>)curParam.getValue();
  if (values != null && !values.isEmpty()) {
    Object[] listItemsValue=curParam.getListItemsValue();
    if (listItemsValue != null && listItemsValue.length > 0 && listItemsValue[0] instanceof IElementParameter) {
      for (      Object o : listItemsValue) {
        IElementParameter param=(IElementParameter)o;
        if (param.getFieldType() == EParameterFieldType.MODULE_LIST) {
          for (          Map<String,Object> line : values) {
            String moduleName=(String)line.get(param.getName());
            if (moduleName != null && !"String_Node_Str".equals(moduleName)) {
              boolean isContextMode=ContextParameterUtils.containContextVariables(moduleName);
              if (isContextMode) {
                List<IContext> listContext=process.getContextManager().getListContext();
                for (                IContext context : listContext) {
                  List<IContextParameter> contextParameterList=context.getContextParameterList();
                  for (                  IContextParameter contextPara : contextParameterList) {
                    String var=ContextParameterUtils.getVariableFromCode(moduleName);
                    if (var.equals(contextPara.getName())) {
                      String value=context.getContextParameter(contextPara.getName()).getValue();
                      if (curParam.getName().equals(EParameterName.DRIVER_JAR.getName()) && value.contains("String_Node_Str")) {
                        String[] jars=value.split("String_Node_Str");
                        for (                        String jar2 : jars) {
                          String jar=jar2;
                          jar=jar.substring(jar.lastIndexOf("String_Node_Str") + 1);
                          ModuleNeeded module=new ModuleNeeded(null,jar,null,true);
                          modulesNeeded.add(module);
                        }
                      }
                      if (curParam.getName().equals("String_Node_Str") && value.contains("String_Node_Str")) {
                        String[] jars=value.split("String_Node_Str");
                        for (                        String jar2 : jars) {
                          String jar=jar2;
                          jar=jar.substring(jar.lastIndexOf("String_Node_Str") + 1);
                          ModuleNeeded module=new ModuleNeeded(null,jar,null,true);
                          modulesNeeded.add(module);
                        }
                      }
 else {
                        value=value.substring(value.lastIndexOf("String_Node_Str") + 1);
                        ModuleNeeded module=new ModuleNeeded(null,value,null,true);
                        modulesNeeded.add(module);
                      }
                    }
                  }
                }
              }
 else {
                ModuleNeeded mn=getModuleValue(process,moduleName);
                if (line.get("String_Node_Str") != null) {
                  String a=moduleName.replaceFirst("String_Node_Str","String_Node_Str");
                  mn.setMavenUri("String_Node_Str" + a + "String_Node_Str"+ line.get("String_Node_Str")+ "String_Node_Str");
                }
                modulesNeeded.add(mn);
              }
            }
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
private static void getModulesInTable(final IProcess process,IElementParameter curParam,List<ModuleNeeded> modulesNeeded){
  if (!(curParam.getValue() instanceof List)) {
    return;
  }
  List<Map<String,Object>> values=(List<Map<String,Object>>)curParam.getValue();
  if (values != null && !values.isEmpty()) {
    Object[] listItemsValue=curParam.getListItemsValue();
    if (listItemsValue != null && listItemsValue.length > 0 && listItemsValue[0] instanceof IElementParameter) {
      for (      Object o : listItemsValue) {
        IElementParameter param=(IElementParameter)o;
        if (param.getFieldType() == EParameterFieldType.MODULE_LIST) {
          for (          Map<String,Object> line : values) {
            String moduleName=(String)line.get(param.getName());
            if (moduleName != null && !"String_Node_Str".equals(moduleName)) {
              boolean isContextMode=ContextParameterUtils.containContextVariables(moduleName);
              if (isContextMode) {
                List<IContext> listContext=process.getContextManager().getListContext();
                for (                IContext context : listContext) {
                  List<IContextParameter> contextParameterList=context.getContextParameterList();
                  for (                  IContextParameter contextPara : contextParameterList) {
                    String var=ContextParameterUtils.getVariableFromCode(moduleName);
                    if (var.equals(contextPara.getName())) {
                      String value=context.getContextParameter(contextPara.getName()).getValue();
                      if (curParam.getName().equals(EParameterName.DRIVER_JAR.getName()) && value.contains("String_Node_Str")) {
                        String[] jars=value.split("String_Node_Str");
                        for (                        String jar2 : jars) {
                          String jar=jar2;
                          jar=jar.substring(jar.lastIndexOf("String_Node_Str") + 1);
                          ModuleNeeded module=new ModuleNeeded(null,TalendTextUtils.removeQuotes(jar),null,true);
                          modulesNeeded.add(module);
                        }
                      }
 else                       if (curParam.getName().equals("String_Node_Str") && value.contains("String_Node_Str")) {
                        String[] jars=value.split("String_Node_Str");
                        for (                        String jar2 : jars) {
                          String jar=jar2;
                          jar=jar.substring(jar.lastIndexOf("String_Node_Str") + 1);
                          ModuleNeeded module=new ModuleNeeded(null,TalendTextUtils.removeQuotes(jar),null,true);
                          modulesNeeded.add(module);
                        }
                      }
 else {
                        value=value.substring(value.lastIndexOf("String_Node_Str") + 1);
                        ModuleNeeded module=new ModuleNeeded(null,TalendTextUtils.removeQuotes(value),null,true);
                        modulesNeeded.add(module);
                      }
                    }
                  }
                }
              }
 else {
                ModuleNeeded mn=getModuleValue(process,moduleName);
                if (line.get("String_Node_Str") != null) {
                  String a=moduleName.replaceFirst("String_Node_Str","String_Node_Str");
                  mn.setMavenUri("String_Node_Str" + a + "String_Node_Str"+ line.get("String_Node_Str")+ "String_Node_Str");
                }
                modulesNeeded.add(mn);
              }
            }
          }
        }
      }
    }
  }
}