class CogroupedKStreamImpl extends AbstractStream<K, VOut> implements CogroupedKStream<K, VOut> {

    @Override
    public <W extends Window> TimeWindowedCogroupedKStream<K, VOut> windowedBy(final Windows<W> windows) {
        Objects.requireNonNull(windows, "windows can't be null");
        return new TimeWindowedCogroupedKStreamImpl<>(
            windows,
            builder,
            subTopologySourceNodes,
            name,
            aggregateBuilder,
            streamsGraphNode,
            groupPatterns);
    }

      CogroupedKStreamImpl(final String name,
                         final Set<String> subTopologySourceNodes,
                         final StreamsGraphNode streamsGraphNode,
                         final InternalStreamsBuilder builder);

}