static ArrayDBAdapter getAdapter(DBHandle handle, OpenMode openMode, String tablePrefix,
			TaskMonitor monitor) throws VersionException, IOException, CancelledException {
		if (openMode == OpenMode.CREATE) {
			return new ArrayDBAdapterV1(handle, tablePrefix, true);
		}
		try {
			return new ArrayDBAdapterV1(handle, tablePrefix, false);
		}
		catch (VersionException e) {
			if (!e.isUpgradable() || openMode == OpenMode.UPDATE) {
				throw e;
			}
			ArrayDBAdapter adapter = findReadOnlyAdapter(handle);
			if (openMode == OpenMode.UPGRADE) {
				adapter = upgrade(handle, adapter, tablePrefix, monitor);
			}
			return adapter;
		}
	}
Gets an adapter for working with the {@link ArrayDB} database table.
@param handle handle to the database to be accessed.
@param openMode the mode this adapter is to be opened for (CREATE, UPDATE, READ_ONLY, UPGRADE).
@param tablePrefix prefix to be used with default table name
@param monitor task monitor
@return adapter instance
@throws VersionException if the database handle's version doesn't match the expected version.
@throws IOException if there is a problem accessing the database.
@throws CancelledException task cancelled
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/ArrayDBAdapter.java