class PubsubUnboundedSource extends PTransform<PBegin, PCollection<T>> {

  @Nullable
  public SubscriptionPath getSubscription() {
    return subscription == null ? null : subscription.get();
  }

  @VisibleForTesting  PubsubUnboundedSource(
      Clock clock,
      PubsubClientFactory pubsubFactory,
      @Nullable ValueProvider<ProjectPath> project,
      @Nullable ValueProvider<TopicPath> topic,
      @Nullable ValueProvider<SubscriptionPath> subscription,
      Coder<T> elementCoder,
      @Nullable String timestampLabel,
      @Nullable String idLabel,
      @Nullable SimpleFunction<PubsubIO.PubsubMessage, T> parseFn);
  public  PubsubUnboundedSource(
      PubsubClientFactory pubsubFactory,
      @Nullable ValueProvider<ProjectPath> project,
      @Nullable ValueProvider<TopicPath> topic,
      @Nullable ValueProvider<SubscriptionPath> subscription,
      Coder<T> elementCoder,
      @Nullable String timestampLabel,
      @Nullable String idLabel,
      @Nullable SimpleFunction<PubsubIO.PubsubMessage, T> parseFn);

}