code: private void bindWhereClauseForRowRange(List<Object> values, RowRange<?> rowRange) {
  
  		boolean keyIsPresent = false;
  		boolean tokenIsPresent = false; 
  
  		if (rowRange.getStartKey() != null || rowRange.getEndKey() != null) {
  			keyIsPresent = true;
  		}
  		if (rowRange.getStartToken() != null || rowRange.getEndToken() != null) {
  			tokenIsPresent = true;
  		}
  
  		if (keyIsPresent && tokenIsPresent) {
  			throw new RuntimeException("Cannot provide both token and keys for range query");
  		}
  
  		if (keyIsPresent) {
  			if (rowRange.getStartKey() != null) {
  				values.add(rowRange.getStartKey());
  			}
  			if (rowRange.getEndKey() != null) {
  				values.add(rowRange.getEndKey());
  			}
  
  		} else if (tokenIsPresent) {
  
  			BigInteger startTokenB = rowRange.getStartToken() != null ? new BigInteger(rowRange.getStartToken()) : null; 
  			BigInteger endTokenB = rowRange.getEndToken() != null ? new BigInteger(rowRange.getEndToken()) : null; 
  
  			Long startToken = startTokenB.longValue();
  			Long endToken = endTokenB.longValue();
  			
  			if (startToken != null && endToken != null) {
  				if (startToken != null) {
  					values.add(startToken);
  				}
  				if (endToken != null) {
  					values.add(endToken);
  				}
  			}
  
  			if (rowRange.getCount() > 0) {
  				// TODO: fix this
  				//where.limit(rowRange.getCount());
  			}
  			return; 
  		}
  	}
docs: Private helper for constructing the bind values for the given row range. Note that the assumption here is that
  we have a previously constructed prepared statement that we can bind these values with.
  
  @param keyAlias
  @param select
  @param rowRange
  @return