code: @Override
      public void setRange(int start, int limit)
      {
          if (start >= limit) {
              throw new IllegalArgumentException(
                  "start or limit has to be valid Unicode codepoints and start < limit");
          }
          if (start < UCharacter.MIN_VALUE) {
              m_start_ = UCharacter.MIN_VALUE;
          }
          else {
              m_start_ = start;
          }
  
          if (limit > UCharacter.MAX_VALUE + 1) {
              m_limit_ = UCharacter.MAX_VALUE + 1;
          }
          else {
              m_limit_ = limit;
          }
          m_current_ = m_start_;
      }
docs: <p>Restricts the range of integers to iterate and resets the iteration
  to begin at the index argument start.</p>
  <p>If setRange(start, end) is not performed before next(element) is
  called, the iteration will start from the integer index
  UCharacter.MIN_VALUE and end at UCharacter.MAX_VALUE.</p>
  <p>
  If this range is set outside the range of UCharacter.MIN_VALUE and
  UCharacter.MAX_VALUE, next(element) will always return false.
  </p>
  @param start first integer in range to iterate
  @param limit 1 integer after the last integer in range
  @exception IllegalArgumentException thrown when attempting to set an
  illegal range. E.g limit <= start