code: protected void parseRange(String range) {
          String prefix = "bytes=";
          if (!range.startsWith(prefix) || StringUtils.containsNone(range, "-")) {
              throw new IllegalArgumentException(getUsage(range));
          } else {
              // Strip the prefix and drop all but the first range (if there is a list)
              String byteRange = range.substring(prefix.length()).split(",")[0];
  
              try {
                  // Parse out the range values
                  setRangeStart(byteRange.substring(0, byteRange.indexOf("-")));
                  setRangeEnd(byteRange.substring(byteRange.indexOf("-") + 1, byteRange.length()));
              } catch (NumberFormatException e) {
                  throw new IllegalArgumentException(getUsage(range));
              }
  
              // Verify that there is either a start or end value for the range (or both)
              if (null == getRangeStart() && null == getRangeEnd()) {
                  throw new IllegalArgumentException(getUsage(range));
              }
          }
      }
docs: Parses the Range HTTP header value. Only a single range is supported (others are dropped).
  
  @param range Range header included in HTTP request
  @throws IllegalArgumentException if range value is not valid