class RIO implements RIOOf<R, A>, Recoverable {

  public static <R, A extends AutoCloseable, B> RIO<R, B> bracket(RIO<R, ? extends A> acquire, 
      Function1<? super A, ? extends RIO<R, ? extends B>> use) {
    return new RIO<>(ZIO.bracket(acquire.instance, 
        resource -> use.andThen(RIOOf::narrowK).apply(resource).instance));
  }

    RIO(ZIO<R, Throwable, A> value);

}