class KGroupedStreamImpl extends AbstractStream<K, V> implements KGroupedStream<K, V> {

    @Override
    public <VOut> CogroupedKStream<K, VOut> cogroup(final Aggregator<? super K, ? super V, VOut> aggregator) {
        Objects.requireNonNull(aggregator, "aggregator can't be null");
        return new CogroupedKStreamImpl<K, VOut>(name, subTopologySourceNodes, streamsGraphNode, builder)
            .cogroup(this, aggregator);
    }

      KGroupedStreamImpl(final String name,
                       final Set<String> subTopologySourceNodes,
                       final GroupedInternal<K, V> groupedInternal,
                       final boolean repartitionRequired,
                       final StreamsGraphNode streamsGraphNode,
                       final InternalStreamsBuilder builder);

}