public Table getOrCreateTable(String name, Class<? extends DBAnnotatedObject> cls,
			boolean upgradable) throws IOException, VersionException {
		// TODO: System of upgraders
		Table table = handle.getTable(name);
		TableInfo<?> info = getInfo(cls);
		if (table == null) {
			table = handle.createTable(name, info.schema, info.indexColumns);
		}
		int tableVersion = table.getSchema().getVersion();
		int latestVersion = info.schema.getVersion();
		if (tableVersion != latestVersion) {
			throw new VersionException(upgradable && tableVersion < latestVersion);
		}
		return table;
	}
Get or create the table needed to store objects of the given class

<p>
See {@link #getOrCreateCachedStore(String, Class, DBAnnotatedObjectFactory, boolean)}

@param name the table name
@param cls the type of objects to store
@param upgradable true if {@link VersionException}s should be marked upgradable when an
           existing table's version is earlier than expected
@return the table
@throws IOException if there's an issue accessing the database
@throws VersionException if an existing table's version does not match that expected
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/DBCachedObjectStoreFactory.java