code: protected void addRange(int start, int end) {
  		this.icaseCache = null;
  		// System.err.println("Token#addRange(): "+start+" "+end);
  		int r1, r2;
  		if (start <= end) {
  			r1 = start;
  			r2 = end;
  		} else {
  			r1 = end;
  			r2 = start;
  		}
  
  		int pos = 0;
  		if (this.ranges == null) {
  			this.ranges = new int[2];
  			this.ranges[0] = r1;
  			this.ranges[1] = r2;
  			this.setSorted(true);
  		} else {
  			pos = this.ranges.length;
  			if (this.ranges[pos - 1] + 1 == r1) {
  				this.ranges[pos - 1] = r2;
  				return;
  			}
  			int[] temp = new int[pos + 2];
  			System.arraycopy(this.ranges, 0, temp, 0, pos);
  			this.ranges = temp;
  			if (this.ranges[pos - 1] >= r1)
  				this.setSorted(false);
  			this.ranges[pos++] = r1;
  			this.ranges[pos] = r2;
  			if (!this.sorted)
  				this.sortRanges();
  		}
  	}
docs: for RANGE or NRANGE