private DomainObjectAdapterDB getAndLockInUseDomainObjectForMergeUpdate(String operation)
			throws IOException {
		DomainObjectAdapterDB inUseDomainObj;
		synchronized (fileSystem) {
			DomainObjectAdapter domainObj = getOpenedDomainObject();
			if (domainObj == null) {
				return null;
			}
			// If we proceed with file in-use it must be instance of DomainObjectAdapterDB
			if (!(domainObj instanceof DomainObjectAdapterDB)) {
				throw new FileInUseException(name + " is in use");
			}
			inUseDomainObj = (DomainObjectAdapterDB) domainObj;
			if (inUseDomainObj.isChanged()) {
				throw new FileInUseException(name + " is in use w/ unsaved changes");
			}
		}

		// Ensure that existing domain object will support DB merge update and is can be locked
		ContentHandler<?> contentHandler = getContentHandler();
		if (!contentHandler.canResetDBSourceFile() || !inUseDomainObj.lock(operation) ||
			inUseDomainObj.getDBHandle().hasUncommittedChanges()) {
			throw new FileInUseException(name + " is in use");
		}

		return inUseDomainObj;
	}
Performs check in to associated repository.  File must be checked-out 
and modified since checkout.
@param checkinHandler provides user input data to complete checkin process.
@param monitor the TaskMonitor.
@throws IOException if an IO or access error occurs
@throws VersionException if unable to handle domain object version in versioned filesystem.
We are unable to upgrade since this would only occur if checkout is not exclusive.
@throws CancelledException if task monitor cancelled operation
Ghidra/Framework/Project/src/main/java/ghidra/framework/data/GhidraFileData.java