public override void WriteToTopology(InternalTopologyBuilder builder)
 {
     if (ProcessorParameters != null)
     {
         builder.AddInternalTopic(RepartitionTopic, NumberOfPartition);
         builder.AddProcessor(ProcessorParameters.ProcessorName, ProcessorParameters.Processor,
                              ParentNodeNames());
         builder.AddSinkOperator(
             new StaticTopicNameExtractor <K, V>(RepartitionTopic),
             SinkName,
             Produced <K, V> .Create(KeySerdes, ValueSerdes).WithPartitioner(StreamPartitioner),
             ProcessorParameters.ProcessorName);
         builder.AddSourceOperator(
             RepartitionTopic,
             SourceName,
             new ConsumedInternal <K, V>(SourceName, KeySerdes, ValueSerdes, new FailOnInvalidTimestamp()));
     }
     else
     {
         builder.AddInternalTopic(RepartitionTopic, NumberOfPartition);
         builder.AddSinkOperator(
             new StaticTopicNameExtractor <K, V>(RepartitionTopic),
             SinkName,
             Produced <K, V> .Create(KeySerdes, ValueSerdes).WithPartitioner(StreamPartitioner),
             ParentNodeNames());
         builder.AddSourceOperator(
             RepartitionTopic,
             SourceName,
             new ConsumedInternal <K, V>(SourceName, KeySerdes, ValueSerdes, new FailOnInvalidTimestamp()));
     }
 }