default List<S> subtract(S s1, S s2) {
			if (s1.isEmpty()) {
				return List.of();
			}
			if (s2.isEmpty()) {
				return List.of(s1);
			}
			if (compare(s1.max(), s2.min()) < 0 || compare(s2.max(), s1.min()) < 0) {
				return List.of(s1);
			}
			if (compare(s1.min(), s2.min()) < 0) {
				if (compare(s1.max(), s2.max()) > 0) {
					return List.of(
						closed(s1.min(), dec(s2.min())),
						closed(inc(s2.max()), s1.max()));
				}
				return List.of(closed(s1.min(), dec(s2.min())));
			}
			if (compare(s1.max(), s2.max()) > 0) {
				return List.of(closed(inc(s2.max()), s1.max()));
			}
			return List.of();
		}
Subtract two spans

<p>
If the first span is empty, this returns 0 spans.

@param s1 a span
@param s2 another span
@return 0, 1, or 2 spans
Ghidra/Framework/Emulation/src/main/java/generic/Span.java