Program: 126369
Project: 126369
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;
    }
    HashMap valueMap=new HashMap<String,Object>();
    paramValues.add(valueMap);
    String uinqueTableName=node.getProcess().generateUniqueConnectionName(MultiSchemasUtil.getConnectionBaseName(newMetadatTable.getLabel()));
    String paramType=getParamType(newMetadatTable);
    if (paramType == null) {
      return;
    }
    valueMap.put(ISAPConstant.NAME,uinqueTableName);
    valueMap.put(ISAPConstant.TYPE,paramType);
    valueMap.put(ISAPConstant.FIELD_SCHEMA,uinqueTableName);
    if (MetadataSchemaType.INPUT.name().equals(tableType)) {
      valueMap.put(ISAPConstant.PARENT_ROW,"String_Node_Str");
    }
    if (oldMetadataTable != null) {
      CoreUIPlugin.getDefault().getDesignerCoreService().removeConnection(node,oldMetadataTable.getTableName());
      node.getMetadataList().remove(oldMetadataTable);
    }
    newMetadatTable.setTableName(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);
    HashMap valueMap=new HashMap<String,Object>();
    String uinqueTableName=node.getProcess().generateUniqueConnectionName(MultiSchemasUtil.getConnectionBaseName(newMetadatTable.getLabel()));
    String paramType=getParamType(newMetadatTable,isInput);
    if (paramType == null) {
      return;
    }
    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");
    }
    paramValues.add(valueMap);
    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);
  }
}