code: private final int getRoundKey(final int key, final boolean upORdown, final boolean acceptEqual) {
  		if (isEmpty())
  			return NULL_VALUE;
  		int slot = findSlotByKey(key);
  		if (upORdown) {
  			// ceiling / higher
  			slot = ((slot < 0) ? (-slot) - 1 : (acceptEqual ? slot : slot + 1));
  			if (slot >= allocated) {
  				return NULL_VALUE;
  			}
  		} else {
  			// floor / lower
  			slot = ((slot < 0) ? (-slot) - 2 : (acceptEqual ? slot : slot - 1));
  			if (slot < 0) {
  				return NULL_VALUE;
  			}
  		}
  		return keys[slot];
  	}
docs: find key
  
  @param key
  @param upORdown
  @param acceptEqual
  @return