code: public static <A, B> FeatureGenerator<A, List<B>> productFeatureGenerator(
        Iterable<FeatureGenerator<A, B>> generators) {
      return new ProductFeatureGenerator<A, B>(generators);
    }
docs: Constructs features from several {@code FeatureGenerators} by taking
  products of their generated features (e.g., if the generated features are
  indicators, this constructs features which are the logical AND of the
  generated features). This operation will dramatically increase the size
  number of generated features.
  
  @return