@Override
	public SourceArchive resolveSourceArchive(SourceArchive sourceArchive) {
		if (sourceArchive == null) {
			return null;
		}
		lock.acquire();
		try {
			SourceArchive existingArchive = getSourceArchive(sourceArchive.getSourceArchiveID());
			if (existingArchive != null) {
				return existingArchive;  // already have it
			}
			DBRecord record = sourceArchiveAdapter.createRecord(sourceArchive);
			SourceArchive newSourceArchive = getSourceArchiveDB(record);
			invalidateSourceArchiveCache();
			sourceArchiveAdded(newSourceArchive.getSourceArchiveID());
			return newSourceArchive;
		}
		catch (IOException e) {
			dbError(e);
		}
		finally {
			lock.release();
		}
		return null;
	}
Complete datatype resolution after having attempted to find an existing equivalent type. 
An attempt is made to identify a conflicting datatype and determine a conflict resolution
using the specified conflict handler.
@param dataType datatype being resolved
@param sourceArchive source archive associated with new type (may be null)
@return resolved datatype (may be existing or newly added datatype)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeManagerDB.java