class NullableCoder extends StructuredCoder<T> {

  public static <T> NullableCoder<T> of(Coder<T> valueCoder) {
    if (valueCoder instanceof NullableCoder) {
      return (NullableCoder<T>) valueCoder;
    }
    return new NullableCoder<>(valueCoder);
  }

  private  NullableCoder(Coder<T> valueCoder);

}