Program: 123861
Project: 123861
Buggy source:
private void initwebServiceMappingData(String currentURL){
  if (currentURL != null && !currentURL.equals("String_Node_Str")) {
    isFirst=false;
    Function fun=new Function(currentURL);
    IElementParameter METHODPara=this.connector.getElementParameter("String_Node_Str");
    Object obj=METHODPara.getValue();
    if (obj == null) {
      return;
    }
    if (obj instanceof String) {
      String str=(String)obj;
      fun.setName(str);
    }
    ParameterInfo para=new ParameterInfo();
    IElementParameter OUTPUT_PARAMSPara=connector.getElementParameter("String_Node_Str");
    List<Map<String,String>> outputMap=(List<Map<String,String>>)OUTPUT_PARAMSPara.getValue();
    List<ParameterInfo> paraoutList=new ArrayList<ParameterInfo>();
    ParameterInfo paraout=new ParameterInfo();
    for (    Map<String,String> map : outputMap) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        int arraySize=0;
        String paraIndex=null;
        if (map.get("String_Node_Str") != null) {
          if (!map.get("String_Node_Str").equals("String_Node_Str"))           arraySize=Integer.valueOf(map.get("String_Node_Str"));
        }
        if (map.get("String_Node_Str") != null && !map.get("String_Node_Str").equals("String_Node_Str")) {
          paraIndex=map.get("String_Node_Str");
        }
        if (!ele.equals("String_Node_Str")) {
          if (!map.get("String_Node_Str").equals("String_Node_Str")) {
            String paraParent=map.get("String_Node_Str");
            if (paraParent.equals(ele)) {
              ParameterInfo parain=new ParameterInfo();
              parain.setName(ele);
            }
 else {
              for (int i=0; i < paraoutList.size(); i++) {
                ParameterInfo para2=paraoutList.get(i);
                if (paraParent.equals(para2.getName())) {
                  ParameterInfo parain=new ParameterInfo();
                  parain.setName(ele);
                  parain.setArraySize(arraySize);
                  parain.setIndex(paraIndex);
                  para2.getParameterInfos().add(parain);
                  parain.setParent(para2);
                  paraoutList.add(parain);
                }
              }
            }
          }
 else {
            paraout=new ParameterInfo();
            paraout.setName(ele);
            paraoutList.add(paraout);
          }
        }
      }
    }
    fun.setOutputParameters(paraoutList);
    for (    Map<String,String> map : outputMap) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        if (!ele.equals("String_Node_Str")) {
          OutPutMappingData data=new OutPutMappingData();
          if (para.getName() == null) {
            para.setName(ele);
            para.getParameterInfos().add(new ParameterInfo());
            if (!paraoutList.isEmpty()) {
              data.setParameter(paraoutList.get(0));
            }
 else {
              data.setParameter(new ParameterInfo());
            }
            data.setParameterName(ele);
          }
 else {
            ParameterInfo para2=new ParameterInfo();
            para2.setParent(para);
            para2.setName(ele);
            if (para.getParameterInfos().get(0).getName() == null) {
              para.getParameterInfos().clear();
            }
            para.getParameterInfos().add(para2);
            data.setParameter(para2);
            data.setParameterName(ele);
          }
          outParaList.add(data);
        }
      }
    }
    ParameterInfo inpara=new ParameterInfo();
    List<ParameterInfo> paraList=new ArrayList<ParameterInfo>();
    ParameterInfo paraiun=new ParameterInfo();
    IElementParameter INPUT_PARAMSPara=connector.getElementParameter("String_Node_Str");
    List<Map<String,String>> inputparaValue=(List<Map<String,String>>)INPUT_PARAMSPara.getValue();
    for (    Map<String,String> map : inputparaValue) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        int arraySize=0;
        String paraIndex=null;
        if (map.get("String_Node_Str") != null) {
          if (!map.get("String_Node_Str").equals("String_Node_Str"))           arraySize=Integer.valueOf(map.get("String_Node_Str"));
        }
        if (map.get("String_Node_Str") != null && !map.get("String_Node_Str").equals("String_Node_Str")) {
          paraIndex=map.get("String_Node_Str");
        }
        if (!ele.equals("String_Node_Str")) {
          if (!map.get("String_Node_Str").equals("String_Node_Str")) {
            String paraParent=map.get("String_Node_Str");
            if (paraParent.equals(ele)) {
              ParameterInfo parain=new ParameterInfo();
              parain.setName(ele);
            }
 else {
              for (int i=0; i < paraList.size(); i++) {
                ParameterInfo para2=paraList.get(i);
                if (paraParent.equals(para2.getName())) {
                  ParameterInfo parain=new ParameterInfo();
                  parain.setName(ele);
                  parain.setArraySize(arraySize);
                  parain.setIndex(paraIndex);
                  para2.getParameterInfos().add(parain);
                  parain.setParent(para2);
                  paraList.add(parain);
                }
              }
            }
          }
 else {
            paraiun=new ParameterInfo();
            paraiun.setName(ele);
            paraList.add(paraiun);
          }
        }
      }
    }
    fun.setInputParameters(paraList);
    for (    Map<String,String> map : inputparaValue) {
      InputMappingData data=new InputMappingData();
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String expr=(String)map.get("String_Node_Str");
        data.setInputColumnValue(expr);
      }
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String && !map.get("String_Node_Str").equals("String_Node_Str")) {
        String paraName=map.get("String_Node_Str");
        if (inpara.getName() == null) {
          inpara.setName(paraName);
          inpara.getParameterInfos().add(new ParameterInfo());
          if (!paraList.isEmpty()) {
            data.setParameter(paraList.get(0));
          }
 else {
            data.setParameter(new ParameterInfo());
          }
          data.setParameterName(paraName);
        }
 else {
          ParameterInfo para2=new ParameterInfo();
          para2.setParent(inpara);
          para2.setName(paraName);
          if (inpara.getParameterInfos().get(0).getName() == null) {
            inpara.getParameterInfos().clear();
          }
          inpara.getParameterInfos().add(para2);
          data.setParameter(para2);
          data.setParameterName(paraName);
        }
        inputMappingList.add(data);
      }
    }
    getInputElementList();
    getOutputElementList();
    currentFunction=fun;
  }
}

Fixed version (ground truth):
private void initwebServiceMappingData(String currentURL){
  if (currentURL != null && !currentURL.equals("String_Node_Str")) {
    isFirst=false;
    Function fun=new Function(currentURL);
    IElementParameter METHODPara=this.connector.getElementParameter("String_Node_Str");
    Object obj=METHODPara.getValue();
    if (obj == null) {
      return;
    }
    if (obj instanceof String) {
      String str=(String)obj;
      fun.setName(str);
    }
    ParameterInfo para=new ParameterInfo();
    IElementParameter OUTPUT_PARAMSPara=connector.getElementParameter("String_Node_Str");
    List<Map<String,String>> outputMap=(List<Map<String,String>>)OUTPUT_PARAMSPara.getValue();
    List<ParameterInfo> paraoutList=new ArrayList<ParameterInfo>();
    ParameterInfo paraout=new ParameterInfo();
    for (    Map<String,String> map : outputMap) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        int arraySize=0;
        String paraIndex=null;
        if (map.get("String_Node_Str") != null) {
          if (!map.get("String_Node_Str").equals("String_Node_Str"))           arraySize=Integer.valueOf(map.get("String_Node_Str"));
        }
        if (map.get("String_Node_Str") != null && !map.get("String_Node_Str").equals("String_Node_Str")) {
          paraIndex=map.get("String_Node_Str");
        }
        if (!ele.equals("String_Node_Str")) {
          if (!map.get("String_Node_Str").equals("String_Node_Str")) {
            String paraParent=map.get("String_Node_Str");
            for (int i=0; i < paraoutList.size(); i++) {
              ParameterInfo para2=paraoutList.get(i);
              if (paraParent.equals(para2.getName())) {
                ParameterInfo parain=new ParameterInfo();
                parain.setName(ele);
                parain.setArraySize(arraySize);
                parain.setIndex(paraIndex);
                para2.getParameterInfos().add(parain);
                parain.setParent(para2);
                paraoutList.add(parain);
                break;
              }
            }
          }
 else {
            paraout=new ParameterInfo();
            paraout.setName(ele);
            paraoutList.add(paraout);
          }
        }
      }
    }
    fun.setOutputParameters(paraoutList);
    for (    Map<String,String> map : outputMap) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        if (!ele.equals("String_Node_Str")) {
          OutPutMappingData data=new OutPutMappingData();
          if (para.getName() == null) {
            para.setName(ele);
            para.getParameterInfos().add(new ParameterInfo());
            if (!paraoutList.isEmpty()) {
              data.setParameter(paraoutList.get(0));
            }
 else {
              data.setParameter(new ParameterInfo());
            }
            data.setParameterName(ele);
          }
 else {
            ParameterInfo para2=new ParameterInfo();
            para2.setParent(para);
            para2.setName(ele);
            if (para.getParameterInfos().get(0).getName() == null) {
              para.getParameterInfos().clear();
            }
            para.getParameterInfos().add(para2);
            data.setParameter(para2);
            data.setParameterName(ele);
          }
          outParaList.add(data);
        }
      }
    }
    ParameterInfo inpara=new ParameterInfo();
    List<ParameterInfo> paraList=new ArrayList<ParameterInfo>();
    ParameterInfo paraiun=new ParameterInfo();
    IElementParameter INPUT_PARAMSPara=connector.getElementParameter("String_Node_Str");
    List<Map<String,String>> inputparaValue=(List<Map<String,String>>)INPUT_PARAMSPara.getValue();
    for (    Map<String,String> map : inputparaValue) {
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String ele=(String)map.get("String_Node_Str");
        int arraySize=0;
        String paraIndex=null;
        if (map.get("String_Node_Str") != null) {
          if (!map.get("String_Node_Str").equals("String_Node_Str"))           arraySize=Integer.valueOf(map.get("String_Node_Str"));
        }
        if (map.get("String_Node_Str") != null && !map.get("String_Node_Str").equals("String_Node_Str")) {
          paraIndex=map.get("String_Node_Str");
        }
        if (!ele.equals("String_Node_Str")) {
          if (!map.get("String_Node_Str").equals("String_Node_Str")) {
            String paraParent=map.get("String_Node_Str");
            if (paraParent.equals(ele)) {
              ParameterInfo parain=new ParameterInfo();
              parain.setName(ele);
            }
 else {
              for (int i=0; i < paraList.size(); i++) {
                ParameterInfo para2=paraList.get(i);
                if (paraParent.equals(para2.getName())) {
                  ParameterInfo parain=new ParameterInfo();
                  parain.setName(ele);
                  parain.setArraySize(arraySize);
                  parain.setIndex(paraIndex);
                  para2.getParameterInfos().add(parain);
                  parain.setParent(para2);
                  paraList.add(parain);
                }
              }
            }
          }
 else {
            paraiun=new ParameterInfo();
            paraiun.setName(ele);
            paraList.add(paraiun);
          }
        }
      }
    }
    fun.setInputParameters(paraList);
    for (    Map<String,String> map : inputparaValue) {
      InputMappingData data=new InputMappingData();
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String) {
        String expr=(String)map.get("String_Node_Str");
        data.setInputColumnValue(expr);
      }
      if (map.get("String_Node_Str") != null && map.get("String_Node_Str") instanceof String && !map.get("String_Node_Str").equals("String_Node_Str")) {
        String paraName=map.get("String_Node_Str");
        if (inpara.getName() == null) {
          inpara.setName(paraName);
          inpara.getParameterInfos().add(new ParameterInfo());
          if (!paraList.isEmpty()) {
            data.setParameter(paraList.get(0));
          }
 else {
            data.setParameter(new ParameterInfo());
          }
          data.setParameterName(paraName);
        }
 else {
          ParameterInfo para2=new ParameterInfo();
          para2.setParent(inpara);
          para2.setName(paraName);
          if (inpara.getParameterInfos().get(0).getName() == null) {
            inpara.getParameterInfos().clear();
          }
          inpara.getParameterInfos().add(para2);
          data.setParameter(para2);
          data.setParameterName(paraName);
        }
        inputMappingList.add(data);
      }
    }
    getInputElementList();
    getOutputElementList();
    currentFunction=fun;
  }
}