public void assignOffsets() {
		// sorts the row edge segments from top to bottom
		sort();

		Map<Integer, RowSegmentList<E>> offsetMap =
			LazyMap.lazyMap(new HashMap<>(), k -> new RowSegmentList<E>(0));
		for (int i = 0; i < edgeSegments.size(); i++) {
			RowSegment<E> segment = edgeSegments.get(i);
			assignOffset(offsetMap, segment);
		}
	}
Assigns offsets for overlapping row segments. Parallel overlapping edges must be offset
from each other when assigned to layout space to avoid drawing over each other. Each
edge offset represents 1/2 the edge spacing distance. The reason offsets are assigned 2
apart from each other is to be consistent with column segment offsets which must be 2 apart
so that even numbers of edges can be centered on the grid line.
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/flowchart/RowSegmentList.java