Program: 119705
Project: 119705
Buggy source:
private void autoMapForInput(){
  TableItem[] inputItems=columnInPutTableView.getTable().getItems();
  TableItem[] expressItems=expressinPutTableView.getTable().getItems();
  tabTotabLinkForin.clearLinks();
  for (  TableItem inputItem : inputItems) {
    Object inputData=inputItem.getData();
    if (inputData instanceof IMetadataColumn) {
      IMetadataColumn inputColumn=(IMetadataColumn)inputData;
      String inputlabel=inputColumn.getLabel();
      for (      TableItem expressItem : expressItems) {
        Object expressData=expressItem.getData();
        if (expressData instanceof InputMappingData) {
          InputMappingData imData=(InputMappingData)expressData;
          ParameterInfo parameter=imData.getParameter();
          if (parameter.getParent() != null) {
            String columnValue=imData.getInputColumnValue();
            if (columnValue == null || "String_Node_Str".equals(columnValue)) {
              String paraName=parameter.getName();
              if (paraName.equals(inputlabel)) {
                imData.setInputColumnValue(connector.initInRoWName() + "String_Node_Str" + paraName);
                if (!imData.getMetadataColumnList().contains(inputColumn)) {
                  imData.getMetadataColumnList().add(inputColumn);
                }
                tabTotabLinkForin.addLinks(inputItem,inputData,expressItem.getParent(),expressData,"String_Node_Str");
              }
            }
 else {
              if (columnValue.contains("String_Node_Str")) {
                String originalValue=columnValue.substring(columnValue.lastIndexOf("String_Node_Str") + 1);
                if (originalValue.equals(inputlabel)) {
                  tabTotabLinkForin.addLinks(inputItem,inputData,expressItem.getParent(),expressData,"String_Node_Str");
                }
              }
            }
          }
        }
      }
    }
  }
  tabTotabLinkForin.updateLinksStyleAndControlsSelection(expressinPutTableView.getTable(),true);
  columnInPutTableView.getTableViewerCreator().getTableViewer().refresh();
  expressinPutTableView.getTableViewerCreator().getTableViewer().refresh();
}

Fixed version (ground truth):
private void autoMapForInput(){
  TableItem[] inputItems=columnInPutTableView.getTable().getItems();
  TableItem[] expressItems=expressinPutTableView.getTable().getItems();
  tabTotabLinkForin.clearLinks();
  for (  TableItem inputItem : inputItems) {
    Object inputData=inputItem.getData();
    if (inputData instanceof IMetadataColumn) {
      IMetadataColumn inputColumn=(IMetadataColumn)inputData;
      String inputlabel=inputColumn.getLabel();
      for (      TableItem expressItem : expressItems) {
        Object expressData=expressItem.getData();
        if (expressData instanceof InputMappingData) {
          InputMappingData imData=(InputMappingData)expressData;
          ParameterInfo parameter=imData.getParameter();
          if (parameter.getParent() != null) {
            String columnValue=imData.getInputColumnValue();
            if (columnValue == null || "String_Node_Str".equals(columnValue)) {
              String paraName=parameter.getName();
              if (paraName.startsWith(parameter.getParent().getName()) && parameter.getName().contains("String_Node_Str")) {
                paraName=paraName.substring(paraName.lastIndexOf("String_Node_Str") + 1);
              }
              if (paraName.equals(inputlabel)) {
                imData.setInputColumnValue(connector.initInRoWName() + "String_Node_Str" + paraName);
                if (!imData.getMetadataColumnList().contains(inputColumn)) {
                  imData.getMetadataColumnList().add(inputColumn);
                }
                tabTotabLinkForin.addLinks(inputItem,inputData,expressItem.getParent(),expressData,"String_Node_Str");
              }
            }
 else {
              if (columnValue.contains("String_Node_Str")) {
                String originalValue=columnValue.substring(columnValue.lastIndexOf("String_Node_Str") + 1);
                if (originalValue.equals(inputlabel)) {
                  tabTotabLinkForin.addLinks(inputItem,inputData,expressItem.getParent(),expressData,"String_Node_Str");
                }
              }
            }
          }
        }
      }
    }
  }
  tabTotabLinkForin.updateLinksStyleAndControlsSelection(expressinPutTableView.getTable(),true);
  columnInPutTableView.getTableViewerCreator().getTableViewer().refresh();
  expressinPutTableView.getTableViewerCreator().getTableViewer().refresh();
}