docs: public static void main(String[] args) throws Exception {
      Builder processingGraphBuilder = Builder.newBuilder();
  
      /**
       * A Pulsar source is constructed for a specific Pulsar installation, topic, and
       * subsecription.
       */
      Source<String> pulsarSource = new PulsarSource(
          "pulsar://localhost:6650", // Pulsar connection URL
          "persistent://sample/standalone/ns1/heron-pulsar-test-topic", // Pulsar topic
          "subscription-1" // Subscription name for the Pulsar topic
      );
  
      /**
       * In this processing graph, the source streamlet consists of messages on a
       * Pulsar topic. Those messages are simply logged without any processing logic
       * applied to them.
       */
      processingGraphBuilder.newSource(pulsarSource)
          .setName("incoming-pulsar-messages")
          .consume(s -> LOG.info(String.format("Message received from Pulsar: \"%s\"", s)));
  
      Config config = Config.defaultConfig();
  
      // Fetches the topology name from the first command-line argument
      String topologyName = StreamletUtils.getTopologyName(args);
  
      // Finally, the processing graph and configuration are passed to the Runner, which converts
      // the graph into a Heron topology that can be run in a Heron cluster.
      new Runner().run(topologyName, config, processingGraphBuilder);
    }