code: public <T> CompletableFuture<VersionedMetadata<T>> getCachedData(String table, String key, Function<byte[], T> fromBytes) {
          return cache.getCachedData(new TableCacheKey<>(table, key, fromBytes))
                      .thenApply(this::getVersionedMetadata);
      }
docs: Api to read cached value for the specified key from the requested table.
  @param table name of table
  @param key key to query
  @param fromBytes deserialization function.
  @param <T> Type of object to deserialize the response into.
  @return Returns a completableFuture which when completed will have the deserialized value with its store key version.