public PulsarSourceBuilder<OUT> setBoundedStopCursor(StopCursor stopCursor) {
        this.boundedness = Boundedness.BOUNDED;
        this.stopCursor = checkNotNull(stopCursor);
        return this;
    }
By default, the PulsarSource is set to run in {@link Boundedness#CONTINUOUS_UNBOUNDED} manner
and thus never stops until the Flink job fails or is canceled. To let the PulsarSource run in
{@link Boundedness#BOUNDED} manner and stops at some point, one can set an {@link StopCursor}
to specify the stopping offsets for each partition. When all the partitions have reached
their stopping offsets, the PulsarSource will then exit.

<p>This method is different from {@link #setUnboundedStopCursor(StopCursor)} that after
setting the stopping offsets with this method, {@link PulsarSource#getBoundedness()} will
return {@link Boundedness#BOUNDED} instead of {@link Boundedness#CONTINUOUS_UNBOUNDED}.

@param stopCursor the {@link StopCursor} to specify the stopping offsets.
@return this PulsarSourceBuilder.
@see #setUnboundedStopCursor(StopCursor)
inlong-sort/sort-flink/sort-flink-v1.18/sort-connectors/pulsar/src/main/java/org/apache/inlong/sort/pulsar/source/PulsarSourceBuilder.java