code: public ResultScanner adapt(
        final com.google.cloud.bigtable.grpc.scanner.ResultScanner<FlatRow> bigtableResultScanner,
        final Span span) {
      return new AbstractClientScanner() {
        @Override
        public Result next() throws IOException {
          FlatRow row = bigtableResultScanner.next();
          if (row == null) {
            // Null signals EOF.
            span.end();
            return null;
          }
  
          if (!hasMatchingLabels(row)) {
            close();
            return null;
          }
  
          return rowAdapter.adaptResponse(row);
        }
  
        @Override
        public void close() {
          try {
            bigtableResultScanner.close();
          } catch (IOException ioe) {
            span.setStatus(Status.UNKNOWN.withDescription(ioe.getMessage()));
            throw new RuntimeException(ioe);
          } finally {
            span.end();
          }
        }
  
        /**
         * This is an HBase concept that was added in hbase 1.0.2.  It's not relevent for Cloud
         * Bigtable.  It will not be called from the hbase code and should not be called by the user.
         */
        // Developers Note: Do not add @Override so that this can remain backwards compatible with
        // 1.0.1.
        public boolean renewLease() {
          throw new UnsupportedOperationException("renewLease");
        }
      };
    }
docs: <p>
  adapt.
  </p>
  @param bigtableResultScanner a {@link com.google.cloud.bigtable.grpc.scanner.ResultScanner}
  object.
  @param span A parent {@link Span} for the scan that needs to be closed when the scanning is
  complete. The span has an HBase specific tag, which needs to be handled by the
  adapter.
  @return a {@link org.apache.hadoop.hbase.client.ResultScanner} object.