docs: public static <T, U extends AutoCloseable> T withCloseable(U self, @ClosureParams(value=FirstParam.class) Closure<T> action) throws Exception {
          Throwable thrown = null;
          try {
              return action.call(self);
          } catch (Throwable e) {
              thrown = e;
              throw e;
          } finally {
              if (thrown != null) {
                  Throwable suppressed = tryClose(self, true);
                  if (suppressed != null) {
                      thrown.addSuppressed(suppressed);
                  }
              } else {
                  self.close();
              }
          }
      }