Program: 120965
Project: 120965
Buggy source:
private void loadColumnsBasedOnSchema(Node nc,EList listParamType){
  List<IMetadataTable> metadataList=nc.getMetadataList();
  if (listParamType == null || metadataList == null || metadataList.size() == 0) {
    return;
  }
  List<IMetadataColumn> listColumns=metadataList.get(0).getListColumns();
  if (listColumns == null) {
    return;
  }
  for (  IElementParameter parameter : nc.getElementParameters()) {
    if (EParameterFieldType.TABLE.equals(parameter.getFieldType()) && parameter.isColumnsBasedOnSchema()) {
      String[] listItemsDisplayValue=new String[listColumns.size()];
      String[] listItemsDisplayCodeValue=new String[listColumns.size()];
      Object[] listItemsValue=new Object[listColumns.size()];
      ElementParameter newParam=null;
      for (int i=0; i < listColumns.size(); i++) {
        IMetadataColumn column=listColumns.get(i);
        listItemsDisplayCodeValue[i]=column.getLabel();
        listItemsDisplayValue[i]=column.getLabel();
        newParam=new ElementParameter(nc);
        newParam.setName(column.getLabel());
        newParam.setDisplayName("String_Node_Str");
        newParam.setFieldType(EParameterFieldType.TEXT);
        newParam.setValue("String_Node_Str");
        listItemsValue[i]=newParam;
      }
      parameter.setListItemsDisplayName(listItemsDisplayValue);
      parameter.setListItemsDisplayCodeName(listItemsDisplayCodeValue);
      parameter.setListItemsValue(listItemsValue);
      for (int j=0; j < listParamType.size(); j++) {
        ElementParameterType pType=(ElementParameterType)listParamType.get(j);
        if (pType != null) {
          if (parameter.getFieldType().getName().equals(pType.getField()) && parameter.getName().equals(pType.getName())) {
            List<Map<String,Object>> tableValues=new ArrayList<Map<String,Object>>();
            String[] codeList=parameter.getListItemsDisplayCodeName();
            Map<String,Object> lineValues=null;
            for (            ElementValueType elementValue : (List<ElementValueType>)pType.getElementValue()) {
              boolean found=false;
              for (int i=0; i < codeList.length && !found; i++) {
                if (codeList[i].equals(elementValue.getElementRef())) {
                  found=true;
                }
              }
              if (found) {
                if ((lineValues == null) || (lineValues.get(elementValue.getElementRef()) != null)) {
                  lineValues=new HashMap<String,Object>();
                  tableValues.add(lineValues);
                }
                lineValues.put(elementValue.getElementRef(),elementValue.getValue());
                if (elementValue.getType() != null) {
                  lineValues.put(elementValue.getElementRef() + IEbcdicConstant.REF_TYPE,elementValue.getType());
                }
              }
            }
            for (            Map<String,Object> line : tableValues) {
              for (int i=0; i < codeList.length; i++) {
                if (!line.containsKey(codeList[i])) {
                  IElementParameter itemParam=(IElementParameter)parameter.getListItemsValue()[i];
                  line.put(codeList[i],itemParam.getValue());
                }
              }
            }
            nc.setPropertyValue(pType.getName(),tableValues);
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
private void loadColumnsBasedOnSchema(Node nc,EList listParamType){
  List<IMetadataTable> metadataList=nc.getMetadataList();
  if (listParamType == null || metadataList == null || metadataList.size() == 0) {
    return;
  }
  List<IMetadataColumn> listColumns=metadataList.get(0).getListColumns();
  if (listColumns == null) {
    return;
  }
  for (  IElementParameter parameter : nc.getElementParameters()) {
    if (EParameterFieldType.TABLE.equals(parameter.getFieldType()) && parameter.isColumnsBasedOnSchema()) {
      String[] listItemsDisplayValue=new String[listColumns.size()];
      String[] listItemsDisplayCodeValue=new String[listColumns.size()];
      Object[] listItemsValue=new Object[listColumns.size()];
      ElementParameter newParam=null;
      for (int i=0; i < listColumns.size(); i++) {
        IMetadataColumn column=listColumns.get(i);
        listItemsDisplayCodeValue[i]=column.getLabel();
        listItemsDisplayValue[i]=column.getLabel();
        newParam=new ElementParameter(nc);
        newParam.setName(column.getLabel());
        newParam.setDisplayName("String_Node_Str");
        newParam.setFieldType(EParameterFieldType.TEXT);
        newParam.setValue("String_Node_Str");
        listItemsValue[i]=newParam;
      }
      parameter.setListItemsDisplayName(listItemsDisplayValue);
      parameter.setListItemsDisplayCodeName(listItemsDisplayCodeValue);
      parameter.setListItemsValue(listItemsValue);
      for (int j=0; j < listParamType.size(); j++) {
        ElementParameterType pType=(ElementParameterType)listParamType.get(j);
        if (pType != null) {
          if (parameter.getName().equals(pType.getName())) {
            List<Map<String,Object>> tableValues=new ArrayList<Map<String,Object>>();
            String[] codeList=parameter.getListItemsDisplayCodeName();
            Map<String,Object> lineValues=null;
            for (            ElementValueType elementValue : (List<ElementValueType>)pType.getElementValue()) {
              boolean found=false;
              for (int i=0; i < codeList.length && !found; i++) {
                if (codeList[i].equals(elementValue.getElementRef())) {
                  found=true;
                }
              }
              if (found) {
                if ((lineValues == null) || (lineValues.get(elementValue.getElementRef()) != null)) {
                  lineValues=new HashMap<String,Object>();
                  tableValues.add(lineValues);
                }
                lineValues.put(elementValue.getElementRef(),elementValue.getValue());
                if (elementValue.getType() != null) {
                  lineValues.put(elementValue.getElementRef() + IEbcdicConstant.REF_TYPE,elementValue.getType());
                }
              }
            }
            for (            Map<String,Object> line : tableValues) {
              for (int i=0; i < codeList.length; i++) {
                if (!line.containsKey(codeList[i])) {
                  IElementParameter itemParam=(IElementParameter)parameter.getListItemsValue()[i];
                  line.put(codeList[i],itemParam.getValue());
                }
              }
            }
            nc.setPropertyValue(pType.getName(),tableValues);
          }
        }
      }
    }
  }
}