code: @Override
    public ApiFuture<List<KeyOffset>> sampleRowKeysAsync(String tableId) {
      String fullTableName = NameUtil
          .formatTableName(requestContext.getProjectId(), requestContext.getInstanceId(), tableId);
      SampleRowKeysRequest requestProto =
          SampleRowKeysRequest.newBuilder().setTableName(fullTableName).build();
      ListenableFuture<List<SampleRowKeysResponse>> responseProto =
          delegate.sampleRowKeysAsync(requestProto);
  
      return ApiFutureUtil.transformAndAdapt(responseProto,
          new Function<List<SampleRowKeysResponse>, List<KeyOffset>>() {
            @Override
            public List<KeyOffset> apply(@Nonnull List<SampleRowKeysResponse> rowKeysList) {
              if (rowKeysList == null || rowKeysList.isEmpty()) {
                return Collections.EMPTY_LIST;
              }
              ImmutableList.Builder<KeyOffset> keyOffsetBuilder =
                  ImmutableList.builderWithExpectedSize(rowKeysList.size());
              for (SampleRowKeysResponse rowKeys : rowKeysList) {
                keyOffsetBuilder.add(KeyOffset.create(rowKeys.getRowKey(), rowKeys.getOffsetBytes()));
              }
  
              return keyOffsetBuilder.build();
            }
          });
    }
docs: {@inheritDoc}