docs: public static ExtractFromRow extractorWith( final Collection<ExtractFromRow> extractors ) {
          final int len = extractors.size();
          assert len > 0;
          // There are a few cases where specific row extractor implementations would be better ...
          if (len == 1) {
              return extractors.iterator().next();
          }
          if (len == 2) {
              Iterator<ExtractFromRow> iter = extractors.iterator();
              ExtractFromRow first = iter.next();
              ExtractFromRow second = iter.next();
              return extractorWith(first, second);
          }
          if (len == 3) {
              Iterator<ExtractFromRow> iter = extractors.iterator();
              ExtractFromRow first = iter.next();
              ExtractFromRow second = iter.next();
              ExtractFromRow third = iter.next();
              return extractorWith(first, second, third);
          }
          if (len == 4) {
              Iterator<ExtractFromRow> iter = extractors.iterator();
              ExtractFromRow first = iter.next();
              ExtractFromRow second = iter.next();
              ExtractFromRow third = iter.next();
              ExtractFromRow fourth = iter.next();
              return extractorWith(first, second, third, fourth);
          }
          // Okay, there are at least 4 extractors, so we need to return a general-case row extractor ...
          Collection<TypeFactory<?>> types = new ArrayList<TypeFactory<?>>();
          final ExtractFromRow[] extracts = new ExtractFromRow[len];
          int i = 0;
          for (ExtractFromRow extractor : extractors) {
              extracts[i++] = extractor;
              types.add(extractor.getType());
          }
          final TypeFactory<?> type = Tuples.typeFactory(types);
          return new ExtractFromRow() {
              @Override
              public TypeFactory<?> getType() {
                  return type;
              }
  
              @Override
              public Object getValueInRow( RowAccessor row ) {
                  Object[] values = new Object[len];
                  for (int i = 0; i != len; ++i) {
                      values[i] = extracts[i].getValueInRow(row);
                  }
                  return Tuples.tuple(values);
              }
          };
      }