docs: public static NodeSequence slice( final NodeSequence original,
                                        Columns columns ) {
          final int newWidth = columns.getSelectorNames().size();
          if (original.width() == newWidth) {
              return original;
          }
          // We need to return a NodeSequence that includes only the specified selectors.
  
          // Step 1: figure out which selector indexes we'll use ...
          final int[] selectorIndexes = new int[newWidth];
          int i = 0;
          for (String selectorName : columns.getSelectorNames()) {
              selectorIndexes[i++] = columns.getSelectorIndex(selectorName);
          }
  
          // Step 2: create a NodeSequence that delegates to the original but that returns Batch instances that
          // return the desired indexes ...
          return new NodeSequence() {
              @Override
              public int width() {
                  return 1;
              }
  
              @Override
              public long getRowCount() {
                  return original.getRowCount();
              }
  
              @Override
              public boolean isEmpty() {
                  return original.isEmpty();
              }
  
              @Override
              public Batch nextBatch() {
                  return slicingBatch(original.nextBatch(), selectorIndexes);
              }
  
              @Override
              public void close() {
                  original.close();
              }
  
              @Override
              public String toString() {
                  return "(slice width=" + newWidth + " indexes=" + selectorIndexes + " " + original + " )";
              }
          };
      }