function buildUniqueTableName (schemaName, firstTableName, secondTableName, schemaToTableNameSetMap) {
  let newTableName = `${firstTableName}_${secondTableName}`;
  let count = 1;

  const tableNameSet = schemaToTableNameSetMap.get(schemaName);
  if (!tableNameSet) {
    return newTableName;
  }

  while (tableNameSet.has(newTableName)) {
    newTableName = `${firstTableName}_${secondTableName}(${count})`;
    count += 1;
  }
  return newTableName;
}
@param {string} schemaName
@param {string} firstTableName
@param {string} secondTableName
@param {Map<string, Set>} schemaToTableNameSetMap
@returns string
@description This function is a clone version of the buildNewTableName, but without side effect - update the original usedTableNames