Program: 122291
Project: 122291
Buggy source:
@Override public List<ModuleNeeded> getModulesNeeded(){
  List<String> moduleNames=new ArrayList<String>();
  List<ModuleNeeded> componentImportNeedsList=new ArrayList<ModuleNeeded>();
  if (!isAlreadyLoad) {
    if (compType.getCODEGENERATION().getIMPORTS() != null) {
      EList emfImportList=compType.getCODEGENERATION().getIMPORTS().getIMPORT();
      info.getImportType().addAll(emfImportList);
      for (int i=0; i < emfImportList.size(); i++) {
        IMPORTType importType=(IMPORTType)emfImportList.get(i);
        String msg=getTranslatedValue(importType.getNAME() + "String_Node_Str");
        if (msg.startsWith(Messages.KEY_NOT_FOUND_PREFIX)) {
          msg=Messages.getString("String_Node_Str");
        }
        List<String> list=getInstallURL(importType);
        ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),importType.getMODULE(),msg,importType.isREQUIRED(),list,importType.getREQUIREDIF());
        initBundleID(importType,componentImportNeeds);
        moduleNames.add(importType.getMODULE());
        componentImportNeeds.setShow(importType.isSHOW());
        componentImportNeedsList.add(componentImportNeeds);
      }
      List<String> componentList=info.getComponentNames();
      for (      IMultipleComponentManager multipleComponentManager : getMultipleComponentManagers()) {
        for (        IMultipleComponentItem multipleComponentItem : multipleComponentManager.getItemList()) {
          IComponent component=ComponentsFactoryProvider.getInstance().get(multipleComponentItem.getComponent());
          componentList.add(multipleComponentItem.getComponent());
          if (component == null) {
            continue;
          }
          for (          ModuleNeeded moduleNeeded : component.getModulesNeeded()) {
            if (!moduleNames.contains(moduleNeeded.getModuleName())) {
              ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),moduleNeeded.getModuleName(),moduleNeeded.getInformationMsg(),moduleNeeded.isRequired(),moduleNeeded.getInstallURL(),moduleNeeded.getRequiredIf());
              componentImportNeedsList.add(componentImportNeeds);
            }
          }
        }
      }
    }
  }
 else {
    if (info != null) {
      EList emfImportList=info.getImportType();
      for (int i=0; i < emfImportList.size(); i++) {
        IMPORTType importType=(IMPORTType)emfImportList.get(i);
        String msg=getTranslatedValue(importType.getNAME() + "String_Node_Str");
        if (msg.startsWith(Messages.KEY_NOT_FOUND_PREFIX)) {
          msg=Messages.getString("String_Node_Str");
        }
        List<String> list=getInstallURL(importType);
        ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),importType.getMODULE(),msg,importType.isREQUIRED(),list,importType.getREQUIREDIF());
        initBundleID(importType,componentImportNeeds);
        moduleNames.add(importType.getMODULE());
        componentImportNeeds.setShow(importType.isSHOW());
        componentImportNeedsList.add(componentImportNeeds);
      }
      for (      String name : info.getComponentNames()) {
        IComponent component=ComponentsFactoryProvider.getInstance().get(name);
        if (component == null) {
          continue;
        }
        for (        ModuleNeeded moduleNeeded : component.getModulesNeeded()) {
          if (!moduleNames.contains(moduleNeeded.getModuleName())) {
            ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),moduleNeeded.getModuleName(),moduleNeeded.getInformationMsg(),moduleNeeded.isRequired(),moduleNeeded.getInstallURL(),moduleNeeded.getRequiredIf());
            componentImportNeedsList.add(componentImportNeeds);
          }
        }
      }
    }
  }
  if (ArrayUtils.contains(JavaTypesManager.getJavaTypesLabels(),"String_Node_Str") && "String_Node_Str".equals(name)) {
    ModuleNeeded componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
  }
  if (ArrayUtils.contains(JavaTypesManager.getJavaTypesLabels(),"String_Node_Str") && "String_Node_Str".equals(name)) {
    ModuleNeeded componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
  }
  return componentImportNeedsList;
}

Fixed version (ground truth):
@Override public List<ModuleNeeded> getModulesNeeded(){
  if (componentImportNeedsList != null && componentImportNeedsList.size() > 0) {
    return componentImportNeedsList;
  }
  List<String> moduleNames=new ArrayList<String>();
  if (!isAlreadyLoad) {
    if (compType.getCODEGENERATION().getIMPORTS() != null) {
      EList emfImportList=compType.getCODEGENERATION().getIMPORTS().getIMPORT();
      for (int i=0; i < emfImportList.size(); i++) {
        IMPORTType importType=(IMPORTType)emfImportList.get(i);
        String msg=getTranslatedValue(importType.getNAME() + "String_Node_Str");
        if (msg.startsWith(Messages.KEY_NOT_FOUND_PREFIX)) {
          msg=Messages.getString("String_Node_Str");
        }
        List<String> list=getInstallURL(importType);
        ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),importType.getMODULE(),msg,importType.isREQUIRED(),list,importType.getREQUIREDIF());
        initBundleID(importType,componentImportNeeds);
        moduleNames.add(importType.getMODULE());
        componentImportNeeds.setShow(importType.isSHOW());
        componentImportNeedsList.add(componentImportNeeds);
      }
      info.getImportType().addAll(emfImportList);
      List<String> componentList=info.getComponentNames();
      for (      IMultipleComponentManager multipleComponentManager : getMultipleComponentManagers()) {
        for (        IMultipleComponentItem multipleComponentItem : multipleComponentManager.getItemList()) {
          IComponent component=ComponentsFactoryProvider.getInstance().get(multipleComponentItem.getComponent());
          componentList.add(multipleComponentItem.getComponent());
          if (component == null) {
            continue;
          }
          for (          ModuleNeeded moduleNeeded : component.getModulesNeeded()) {
            if (!moduleNames.contains(moduleNeeded.getModuleName())) {
              ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),moduleNeeded.getModuleName(),moduleNeeded.getInformationMsg(),moduleNeeded.isRequired(),moduleNeeded.getInstallURL(),moduleNeeded.getRequiredIf());
              componentImportNeedsList.add(componentImportNeeds);
            }
          }
        }
      }
    }
    EList parametersList=compType.getPARAMETERS().getPARAMETER();
    for (int i=0; i < parametersList.size(); i++) {
      PARAMETERType parameterType=(PARAMETERType)parametersList.get(i);
      if (parameterType.getNAME().equals(DB_VERSION)) {
        EList itemsList=parameterType.getITEMS().getITEM();
        for (int j=0; j < itemsList.size(); j++) {
          ITEMType itemType=(ITEMType)itemsList.get(j);
          if (itemType.getVALUE().contains("String_Node_Str")) {
            if (!moduleNames.contains(itemType.getVALUE())) {
              moduleNames.add(itemType.getVALUE());
              String msg=getTranslatedValue(itemType.getNAME() + "String_Node_Str");
              if (msg.startsWith(Messages.KEY_NOT_FOUND_PREFIX)) {
                msg=Messages.getString("String_Node_Str");
              }
              ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),itemType.getVALUE(),msg,true,new ArrayList(),null);
              componentImportNeeds.setShow(false);
              componentImportNeedsList.add(componentImportNeeds);
            }
          }
        }
      }
 else       if (parameterType.getNAME().equals(MQ_DERVIERS)) {
        EList defaultList=parameterType.getDEFAULT();
        for (int j=0; j < defaultList.size(); j++) {
          DEFAULTType defaultType=(DEFAULTType)defaultList.get(j);
          String value=defaultType.getValue();
          String[] values=value.split("String_Node_Str");
          for (int x=0; x < values.length; x++) {
            String valueIndex=values[x];
            if (!moduleNames.contains(valueIndex)) {
              moduleNames.add(valueIndex);
              String msg=Messages.getString("String_Node_Str");
              ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),valueIndex,msg,true,new ArrayList(),defaultType.getIF());
              componentImportNeeds.setShow(false);
              componentImportNeedsList.add(componentImportNeeds);
            }
          }
        }
      }
    }
  }
 else {
    if (info != null) {
      EList emfImportList=info.getImportType();
      for (int i=0; i < emfImportList.size(); i++) {
        IMPORTType importType=(IMPORTType)emfImportList.get(i);
        String msg=getTranslatedValue(importType.getNAME() + "String_Node_Str");
        if (msg.startsWith(Messages.KEY_NOT_FOUND_PREFIX)) {
          msg=Messages.getString("String_Node_Str");
        }
        List<String> list=getInstallURL(importType);
        ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),importType.getMODULE(),msg,importType.isREQUIRED(),list,importType.getREQUIREDIF());
        initBundleID(importType,componentImportNeeds);
        moduleNames.add(importType.getMODULE());
        componentImportNeeds.setShow(importType.isSHOW());
        componentImportNeedsList.add(componentImportNeeds);
      }
      for (      String name : info.getComponentNames()) {
        IComponent component=ComponentsFactoryProvider.getInstance().get(name);
        if (component == null) {
          continue;
        }
        for (        ModuleNeeded moduleNeeded : component.getModulesNeeded()) {
          if (!moduleNames.contains(moduleNeeded.getModuleName())) {
            ModuleNeeded componentImportNeeds=new ModuleNeeded(this.getName(),moduleNeeded.getModuleName(),moduleNeeded.getInformationMsg(),moduleNeeded.isRequired(),moduleNeeded.getInstallURL(),moduleNeeded.getRequiredIf());
            componentImportNeedsList.add(componentImportNeeds);
          }
        }
      }
    }
  }
  if (ArrayUtils.contains(JavaTypesManager.getJavaTypesLabels(),"String_Node_Str") && "String_Node_Str".equals(name)) {
    ModuleNeeded componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
  }
  if (ArrayUtils.contains(JavaTypesManager.getJavaTypesLabels(),"String_Node_Str") && "String_Node_Str".equals(name)) {
    ModuleNeeded componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>(),null);
    componentImportNeedsList.add(componentImportNeeds);
  }
  return componentImportNeedsList;
}