docs: private Where addWhereClauseForRowRange(String keyAlias, Select select, RowRange<?> rowRange) {
  
  		Where where = null;
  
  		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 && rowRange.getEndKey() != null) {
  
  				where = select.where(gte(keyAlias, BIND_MARKER))
  						.and(lte(keyAlias, BIND_MARKER));
  
  			} else if (rowRange.getStartKey() != null) {				
  				where = select.where(gte(keyAlias, BIND_MARKER));
  
  			} else if (rowRange.getEndKey() != null) {
  				where = select.where(lte(keyAlias, BIND_MARKER));
  			}
  
  		} else if (tokenIsPresent) {
  			String tokenOfKey ="token(" + keyAlias + ")";
  
  			if (rowRange.getStartToken() != null && rowRange.getEndToken() != null) {
  
  				where = select.where(gte(tokenOfKey, BIND_MARKER))
  						.and(lte(tokenOfKey, BIND_MARKER));
  
  			} else if (rowRange.getStartToken() != null) {
  				where = select.where(gte(tokenOfKey, BIND_MARKER));
  
  			} else if (rowRange.getEndToken() != null) {
  				where = select.where(lte(tokenOfKey, BIND_MARKER));
  			}
  		} else { 
  			where = select.where();
  		}
  
  		if (rowRange.getCount() > 0) {
  			// TODO: fix this
  			//where.limit(rowRange.getCount());
  		}
  		return where; 
  	}