Program: 125729
Project: 125729
Buggy source:
private void createNewSchema(List<Map<String,Object>> paramValues,IMetadataTable newMetadatTable,String tableType){
  if (newMetadatTable != null && tableType.equals(newMetadatTable.getTableType())) {
    boolean found=false;
    if (paramValues.size() > 0) {
      List<IMetadataTable> metadataList=node.getMetadataList();
      for (      IMetadataTable metadata : metadataList) {
        if (tableType.equals(metadata.getTableType())) {
          if (metadata.getLabel() != null && metadata.getLabel().equals(newMetadatTable.getLabel())) {
            found=true;
            MetadataToolHelper.copyTable(newMetadatTable,metadata);
          }
        }
      }
    }
    if (found) {
      return;
    }
    Boolean isInput=MetadataSchemaType.INPUT.name().equals(tableType);
    Map valueMap=null;
    String uinqueTableName=node.getProcess().generateUniqueConnectionName(MultiSchemasUtil.getConnectionBaseName(newMetadatTable.getLabel()));
    String paramType=getParamType(newMetadatTable,isInput);
    if (paramType == null) {
      return;
    }
    if (selectionIndex != null && selectionIndex < paramValues.size()) {
      valueMap=paramValues.get(selectionIndex);
    }
    if (valueMap == null) {
      valueMap=new HashMap();
      paramValues.add(valueMap);
    }
    valueMap.put(ISAPConstant.NAME,TalendQuoteUtils.addQuotes(newMetadatTable.getLabel()));
    valueMap.put(ISAPConstant.TYPE,paramType);
    valueMap.put(ISAPConstant.FIELD_SCHEMA,uinqueTableName);
    if (isInput) {
      valueMap.put(ISAPConstant.PARENT_ROW,"String_Node_Str");
      Map<String,String> properties=newMetadatTable.getAdditionalProperties();
      if (properties != null) {
        properties.put(ISINPUT,TRUE);
      }
    }
    if (oldMetadataTable != null) {
      CoreUIPlugin.getDefault().getDesignerCoreService().removeConnection(node,oldMetadataTable.getTableName());
      node.getMetadataList().remove(oldMetadataTable);
    }
    newMetadatTable.setTableName(uinqueTableName);
    newMetadatTable.setLabel(uinqueTableName);
    node.getProcess().addUniqueConnectionName(uinqueTableName);
    node.getMetadataList().add(newMetadatTable);
  }
}

Fixed version (ground truth):
private void createNewSchema(List<Map<String,Object>> paramValues,IMetadataTable newMetadatTable,String tableType){
  if (newMetadatTable != null && tableType.equals(newMetadatTable.getTableType())) {
    boolean found=false;
    if (paramValues.size() > 0) {
      List<IMetadataTable> metadataList=node.getMetadataList();
      for (      IMetadataTable metadata : metadataList) {
        if (tableType.equals(metadata.getTableType())) {
          if (metadata.getLabel() != null && metadata.getLabel().equals(newMetadatTable.getLabel())) {
            found=true;
            MetadataToolHelper.copyTable(newMetadatTable,metadata);
          }
        }
      }
    }
    if (found) {
      return;
    }
    Boolean isInput=MetadataSchemaType.INPUT.name().equals(tableType);
    Map valueMap=null;
    String uinqueTableName=node.getProcess().generateUniqueConnectionName(MultiSchemasUtil.getConnectionBaseName(newMetadatTable.getLabel()));
    String paramType=getParamType(newMetadatTable,isInput);
    if (paramType == null) {
      return;
    }
    if (selectionIndex != null && selectionIndex < paramValues.size()) {
      valueMap=paramValues.get(selectionIndex);
    }
    if (valueMap == null) {
      valueMap=new HashMap();
      paramValues.add(valueMap);
    }
    valueMap.put(ISAPConstant.NAME,TalendQuoteUtils.addQuotes(newMetadatTable.getLabel()));
    valueMap.put(ISAPConstant.TYPE,paramType);
    valueMap.put(ISAPConstant.FIELD_SCHEMA,uinqueTableName);
    if (isInput) {
      valueMap.put(ISAPConstant.PARENT_ROW,"String_Node_Str");
      if (functionUnit != null && functionUnit.getParamData() != null && functionUnit.getParamData().getInputRoot() != null) {
        for (        SAPFunctionParameter param : functionUnit.getParamData().getInputRoot().getChildren()) {
          if (param.getName().equals(newMetadatTable.getTableName())) {
            valueMap.put(ISAPConstant.CHANGING,param.isChanging());
          }
        }
      }
      Map<String,String> properties=newMetadatTable.getAdditionalProperties();
      if (properties != null) {
        properties.put(ISINPUT,TRUE);
      }
    }
    if (oldMetadataTable != null) {
      CoreUIPlugin.getDefault().getDesignerCoreService().removeConnection(node,oldMetadataTable.getTableName());
      node.getMetadataList().remove(oldMetadataTable);
    }
    newMetadatTable.setTableName(uinqueTableName);
    newMetadatTable.setLabel(uinqueTableName);
    node.getProcess().addUniqueConnectionName(uinqueTableName);
    node.getMetadataList().add(newMetadatTable);
  }
}