protected boolean checkIsValid(DBRecord record) {
		if (isInvalid()) {
			if (refreshing) {
				// NOTE: We need to correct such recursion cases which should be
				// avoided since object is not in a valid state until refresh completed.
				return !deleted;
			}
			refreshing = true;
			try {
				if (refresh(record)) {
					// Object is valid
					setValid();
					return true;
				}

				// Object has been deleted
				if (cache != null) {
					cache.delete(key);
				}
				setDeleted();
				return false;
			}
			finally {
				refreshing = false;
			}
		}
		return !deleted;
	}
Check whether this object is still valid. If the object is invalid and not deleted, the 
object will attempt to refresh itself using the specified record. If the refresh fails, 
the object will be marked as deleted and removed from cache. If this object is already 
marked as deleted a refresh will not be perormed.
<P>
This method may invoke {@link #refresh(DBRecord)} to perform a refresh.  It is important 
that such a refresh avoid recursing back into this method.

@param record optional record which may be used to refresh invalid object
@return true if the object is valid or false if it has been deleted.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/DatabaseObject.java