code: public static <T extends JCGLBufferWritableType> JCGLBufferUpdate<T>
    newUpdateReplacingRange(
      final T buffer,
      final UnsignedRangeInclusiveL range)
      throws RangeCheckException
    {
      NullCheck.notNull(buffer, "Buffer");
      NullCheck.notNull(range, "Range");
  
      final UnsignedRangeInclusiveL buffer_range = buffer.byteRange();
      UnsignedRangeCheck.checkRangeIncludedInLong(
        range, "Update range", buffer_range, "Buffer range");
  
      final ByteBuffer data =
        ByteBuffer.allocateDirect((int) range.getInterval());
      data.order(ByteOrder.nativeOrder());
      return JCGLBufferUpdate.of(buffer, data, range);
    }
docs: Construct an update that will replace the range of bytes given by {@code
  range} in {@code buffer}.
  
  @param buffer The buffer
  @param range  The range
  @param <T>    The precise type of buffer
  
  @return An update
  
  @throws RangeCheckException Iff {@code range} is not included in the
  buffer's range