public void assignOffsets() {
		// First partition the column segments into non-overlapping groups. Since column segments
		// may attach to vertices, it is easier to center them on the vertices if not trying to
		// consider all the segments in a column at the same time.
		List<ColSegmentList<E>> groups = sortIntoNonOverlappingGroups(edgeSegments);
		for (ColSegmentList<E> group : groups) {
			assignOffsets(group);
		}
	}
Assigns offsets for overlapping column 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 so that even numbers of columns can be centered. So for example,
a column with 3 parallel edges are assigned offsets of -2,0,2, but 4 edges would be assigned
-3,-1, 1, 3. (offset in each direction by 1/2 of an edge spacing)
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/flowchart/ColSegmentList.java