code: private void moveIndex() {
  		int i = rightmostIndexBelowMax();
  		if (i >= 0) {
  			index[i] = index[i]+1; 
  			for (int j = i+1; j<r; j++)
  				index[j] = index[j-1] + 1;
  		}
  		else hasNext = false;
  	}
docs: {1, 2, 3}. This will be followed by {1, 2, 4}, {1, 3, 4}, and {2, 3, 4}.