docs: public static <OUT> SourceFunction.SourceContext<OUT> getSourceContext(
  			TimeCharacteristic timeCharacteristic,
  			ProcessingTimeService processingTimeService,
  			Object checkpointLock,
  			StreamStatusMaintainer streamStatusMaintainer,
  			Output<StreamRecord<OUT>> output,
  			long watermarkInterval,
  			long idleTimeout) {
  
  		final SourceFunction.SourceContext<OUT> ctx;
  		switch (timeCharacteristic) {
  			case EventTime:
  				ctx = new ManualWatermarkContext<>(
  					output,
  					processingTimeService,
  					checkpointLock,
  					streamStatusMaintainer,
  					idleTimeout);
  
  				break;
  			case IngestionTime:
  				ctx = new AutomaticWatermarkContext<>(
  					output,
  					watermarkInterval,
  					processingTimeService,
  					checkpointLock,
  					streamStatusMaintainer,
  					idleTimeout);
  
  				break;
  			case ProcessingTime:
  				ctx = new NonTimestampContext<>(checkpointLock, output);
  				break;
  			default:
  				throw new IllegalArgumentException(String.valueOf(timeCharacteristic));
  		}
  		return ctx;
  	}