public synchronized TopologyDescription describe() {
        return internalTopologyBuilder.describe();
    }
@Test
    public void slidingWindowedCogroupedNamedMaterializedCountShouldPreserveTopologyStructure() {
        final StreamsBuilder builder = new StreamsBuilder();
        builder.stream("input-topic")
            .groupByKey()
            .cogroup((key, value, aggregate) -> value)
            .windowedBy(SlidingWindows.ofTimeDifferenceWithNoGrace(ofMillis(1)))
            .aggregate(() -> "", Materialized.<Object, Object, WindowStore<Bytes, byte[]>>as("aggregate-store")
                .withStoreType(Materialized.StoreType.IN_MEMORY));
        final Topology topology = builder.build();
        final TopologyDescription describe = topology.describe();

        assertEquals(
            "Topologies:\n" +
                "   Sub-topology: 0\n" +
                "    Source: KSTREAM-SOURCE-0000000000 (topics: [input-topic])\n" +
                "      --> COGROUPKSTREAM-AGGREGATE-0000000001\n" +
                "    Processor: COGROUPKSTREAM-AGGREGATE-0000000001 (stores: [aggregate-store])\n" +
                "      --> COGROUPKSTREAM-MERGE-0000000002\n" +
                "      <-- KSTREAM-SOURCE-0000000000\n" +
                "    Processor: COGROUPKSTREAM-MERGE-0000000002 (stores: [])\n" +
                "      --> none\n" +
                "      <-- COGROUPKSTREAM-AGGREGATE-0000000001\n\n",
            describe.toString()
        );

        topology.internalTopologyBuilder.setStreamsConfig(streamsConfig);
        assertThat(topology.internalTopologyBuilder.setApplicationId("test").buildTopology().hasPersistentLocalStore(), is(false));
    }