@Override
	public void setNameAndNamespace(String newName, Namespace newNamespace, SourceType newSource)
			throws DuplicateNameException, InvalidInputException, CircularDependencyException {
		assertNotGlobal();
		Pair<String, SourceType> validated = validateNameAndSource(newName, newSource);
		newName = validated.getLeft();
		newSource = validated.getRight();
		try (LockHold hold = LockHold.lock(manager.lock.writeLock())) {
			TraceChangeRecord<?, ?> parentEvent = doSetParent(manager.assertIsMine(newNamespace));
			TraceChangeRecord<?, ?> nameEvent = doSetNameWithEvent(newName);
			TraceChangeRecord<?, ?> sourceEvent = doSetSourceWithEvent(newSource);
			if (parentEvent != null || nameEvent != null || sourceEvent != null) {
				update(NAME_COLUMN, PARENT_COLUMN, FLAGS_COLUMN);
			}
			if (parentEvent != null) {
				manager.trace.setChanged(parentEvent);
			}
			if (nameEvent != null) {
				manager.trace.setChanged(nameEvent);
			}
			if (sourceEvent != null) {
				manager.trace.setChanged(sourceEvent);
			}
		}
	}
Sets the flags for the given source.

The caller must still call {@link #update(DBObjectColumn...)} for {@link #FLAGS_COLUMN}. The
update should be called before the returned event, if applicable, is fired.

@param newSource the source type
@return the appropriate change event, if a change was actually made
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/symbol/AbstractDBTraceSymbol.java