private static void validateOffsetArgs(final long byteOffsetFromInc,
                                           final long byteOffsetToInc) {
        if (byteOffsetFromInc < 0) {
            throw new IllegalArgumentException(LogUtil.message("Invalid byteOffsetFromInc {}. Must be >= 0",
                    byteOffsetFromInc));
        }
        if (byteOffsetToInc < 0) {
            throw new IllegalArgumentException(LogUtil.message("Invalid byteOffsetToExc {}. Must be >= 0",
                    byteOffsetToInc));
        }
        if (byteOffsetToInc <= byteOffsetFromInc) {
            throw new IllegalArgumentException(LogUtil.message(
                    "byteOffsetFromInc {} must be less than byteOffsetToExc {}.",
                    byteOffsetFromInc,
                    byteOffsetToInc));
        }
    }
Translates a contiguous range of bytes into a set of highlight blocks defined in terms
of line/col positions in the rendered hex dump. It highlights both the middle hex pairs
block and the right hand decoded chars column. For example a range of bytes that spans
two lines of the hex dump will result in four highlight {@link TextRange}s, two for the
two hex pair lines and two for the two decoded chars lines.
stroom-util/src/main/java/stroom/util/string/HexDumpUtil.java