code: static AsyncTableEntryReader<TableEntry> readEntry(ArrayView soughtKey, long keyVersion, EntrySerializer serializer, TimeoutTimer timer) {
          return new EntryReader(soughtKey, keyVersion, serializer, timer);
      }
docs: Creates a new {@link AsyncTableEntryReader} that can be used to read a {@link TableEntry} with a an optional
  matching key.
  
  @param soughtKey  (Optional) An {@link ArrayView} representing the Key to match. If provided, a {@link TableEntry}
  will only be returned if its {@link TableEntry#getKey()} matches this value.
  @param keyVersion The version of the {@link TableEntry} that is located at this position. This will be used for
  constructing the result and has no bearing on the reading/matching logic.
  @param serializer The {@link EntrySerializer} to use for deserializing the {@link TableEntry} instance.
  @param timer      Timer for the whole operation.
  @return A new instance of the {@link AsyncTableEntryReader} class. The {@link #getResult()} will be completed with
  a {@link TableEntry} instance once the Key is matched.