class PTransform implements Serializable /* See the note above */, HasDisplayData {

  @Experimental
  public static <InputT extends PInput, OutputT extends POutput>
      PTransform<InputT, OutputT> compose(SerializableFunction<InputT, OutputT> fn) {
    return new PTransform<InputT, OutputT>() {
      @Override
      public OutputT expand(InputT input) {
        return fn.apply(input);
      }
    };
  }

  protected  PTransform();
  protected  PTransform(@Nullable String name);

}