@Override
	public int[] getComponentPath() {
		try (LockHold hold = LockHold.lock(root.space.lock.writeLock())) {
			if (path != null) {
				return path;
			}
			path = new int[level];
			DBTraceDefinedDataAdapter a = this;
			for (int i = level - 1; i >= 0; i--) {
				path[i] = a.getComponentIndex();
				a = a.getParent();
			}
			assert a.getRoot() == a;
			return path;
		}
	}
Create a data component

@param root the root data unit
@param parent the parent component, possibly the root
@param index the index of this component in its parent
@param address the minimum address of this component
@param dataType the data type of this component
@param length the length of this component
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/database/listing/AbstractDBTraceDataComponent.java