code: protected boolean toPreviousKey() throws FetchException {
          byte[] initialKey = getCurrentKey();
          if (initialKey == null) {
              return false;
          }
  
          disableValue();
          try {
              while (true) {
                  if (toPrevious()) {
                      byte[] currentKey = getCurrentKey();
                      if (currentKey == null) {
                          return false;
                      }
                      if (compareKeysPartially(getCurrentKey(), initialKey) < 0) {
                          break;
                      }
                  } else {
                      return false;
                  }
              }
          } finally {
              enableKeyAndValue();
          }
  
          return true;
      }
docs: Move the cursor to the previous unique key, returning false if none. If
  false is returned, the cursor must be positioned before the first
  available entry. Subclasses may wish to override this method with a
  faster implementation.
  
  @return true if moved to previous unique key
  @throws IllegalStateException if cursor is not opened