class BoundedSourceRunner {

  @Deprecated
  public void start() throws Exception {
    try {
      // The representation here is defined as the java serialized representation of the
      // bounded source object packed into a protobuf Any using a protobuf BytesValue wrapper.
      byte[] bytes = definition.getParameter().unpack(BytesValue.class).getValue().toByteArray();
      @SuppressWarnings("unchecked")
      InputT boundedSource =
          (InputT) SerializableUtils.deserializeFromByteArray(bytes, definition.toString());
      runReadLoop(WindowedValue.valueInGlobalWindow(boundedSource));
    } catch (InvalidProtocolBufferException e) {
      throw new IOException(
          String.format("Failed to decode %s, expected %s",
              definition.getParameter().getTypeUrl(), BytesValue.getDescriptor().getFullName()),
          e);
    }
  }

    BoundedSourceRunner(
      PipelineOptions pipelineOptions,
      RunnerApi.FunctionSpec definition,
      Collection<ThrowingConsumer<WindowedValue<OutputT>>> consumers);

}