Program: 124147
Project: 124147
Buggy source:
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);
        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());
              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);
        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());
            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>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    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>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
    componentImportNeeds=new ModuleNeeded("String_Node_Str","String_Node_Str",Messages.getString("String_Node_Str"),true,new ArrayList<String>());
    componentImportNeedsList.add(componentImportNeeds);
  }
  return componentImportNeedsList;
}

Fixed version (ground truth):
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;
}