public static void checkPositionIndexes(int start, int end, int size) {
    // Carefully optimized for execution by hotspot (explanatory comment above)
    if (start < 0 || end < start || end > size) {
      throw new IndexOutOfBoundsException(badPositionIndexes(start, end, size));
    }
  }
Ensures that {@code start} and {@code end} specify a valid <i>positions</i> in an array, list
or string of size {@code size}, and are in order. A position index may range from zero to
{@code size}, inclusive.

@param start a user-supplied index identifying a starting position in an array, list or string
@param end a user-supplied index identifying a ending position in an array, list or string
@param size the size of that array, list or string
@throws IndexOutOfBoundsException if either index is negative or is greater than {@code size},
    or if {@code end} is less than {@code start}
@throws IllegalArgumentException if {@code size} is negative
common/util/src/main/java/io/apiman/common/util/Preconditions.java