private void assignOffsets(ColSegmentList<E> group) {
		// First sort the column segments in a left to right ordering.
		group.sort();

		// Column segments are extend both to the right and left of the grid line, so first
		// find a starting edge to assign to 0 and then work in both directions giving offsets
		// to columns to avoid overlaps.

		// see if there is a natural center line (from a vertex to vertex in one straight line)
		int naturalCenter = findNaturalCenter(group);
		int centerIndex = naturalCenter >= 0 ? naturalCenter : group.edgeSegments.size() / 2;
		assignOffsets(group, centerIndex);

		// if used an arbitrary center index, our edges might not be centered around
		// the grid line, so adjust the offsets so the are.
		if (naturalCenter < 0) {
			int bias = group.getMaxOffset() + group.getMinOffset();
			int adjustment = -bias / 2;
			for (EdgeSegment<E> segment : group.edgeSegments) {
				segment.setOffset(segment.getOffset() + adjustment);
			}
		}
	}
Checks if the range of y values in a given column segment list intersects the
range of y values in this column segment.
@param other the column segment list to compare
@return true if they intersect ranges.
Ghidra/Features/FunctionGraph/src/main/java/ghidra/app/plugin/core/functiongraph/graph/layout/flowchart/ColSegmentList.java