@Override
  public TaskApplicationDescriptor withOutputStream(OutputDescriptor outputDescriptor) {
    addOutputDescriptor(outputDescriptor);
    getOrCreateStreamSerdes(outputDescriptor.getStreamId(), outputDescriptor.getSerde());
    return this;
  }
This class implements interface {@link TaskApplicationDescriptor}.
<p>
In addition to the common objects for an application defined in {@link ApplicationDescriptorImpl}, this class also includes
the low-level {@link TaskFactory} that creates user-defined task instances, the lists of input/broadcast/output streams,
and the list of {@link TableDescriptor}s used in the application.
samza-core/src/main/java/org/apache/samza/application/descriptors/TaskApplicationDescriptorImpl.java