code: public static <A extends AutoCloseable, B extends AutoCloseable, C extends AutoCloseable, D> Try<Exception, D> withResources(
              CheckedSupplier<? extends Exception, ? extends A> aSupplier,
              CheckedFn1<? extends Exception, ? super A, ? extends B> bFn,
              CheckedFn1<? extends Exception, ? super B, ? extends C> cFn,
              CheckedFn1<? extends Exception, ? super C, ? extends Try<? extends Exception, ? extends D>> fn) {
          return withResources(aSupplier, bFn, b -> withResources(() -> cFn.apply(b), fn::apply));
      }
docs: Convenience overload of {@link Try#withResources(CheckedSupplier, CheckedFn1, CheckedFn1) withResources} that
  cascades
  two dependent resource creations via nested calls.
  
  @param aSupplier the first resource supplier
  @param bFn       the second resource function
  @param cFn       the final resource function
  @param fn        the function body
  @param <A>       the first resource type
  @param <B>       the second resource type
  @param <C>       the final resource type
  @param <D>       the function return type
  @return a {@link Try} representing the result of the function's application to the final dependent resource