code: @Cached
      @DontLabel
      public Rule unicodeRange(final int low, final int high)
      {
          if (!Character.isValidCodePoint(low))
              throw new InvalidGrammarException("invalid code point " + low);
          if (!Character.isValidCodePoint(high))
              throw new InvalidGrammarException("invalid code point " + high);
          if (low > high)
              throw new InvalidGrammarException("invalid code point range: "
                  + low + " > " + high);
          return low == high ? new CodePointMatcher(low)
              : new CodePointRangeMatcher(low, high);
      }
docs: Match a Unicode character range
  
  <p>Note that this method will delegate to "regular" character matchers if
  part of, or all of, the specified range is into the basic multilingual
  plane.</p>
  
  @param low the lower code point (inclusive)
  @param high the upper code point (inclusive)
  @return a rule