code: public static <V> V wrapCheckedException(StatementWithReturnValue<V> statement) {
          try {
              return statement.evaluate();
          } catch (RuntimeException e) {
              throw e;
          } catch (Error e) {
              throw e;
          } catch (Throwable e) {
              throw new WrappedException(e);
          }
      }
docs: Executes the given statement and encloses any checked exception
  thrown with an unchecked {@link WrappedException}, that
  is thrown instead. Returns the statement's return value if no
  exception is thrown.
  <pre>
  public void doSomething() {
  URL url = wrapCheckedException(() -&gt; new URL("http://something/"));
  ...
  }
  </pre>
  <p>This avoids adding {@code throws MalformedURLException} to the
  method's signature and is a replacement for the common
  try-catch-throw-RuntimeException pattern:
  <pre>
  public void doSomething() {
  URL url;
  try {
  url = new URL("http://something/");
  } catch (MalformedURLException e) {
  throw new RuntimeException(e);
  }
  ...
  }
  </pre>
  
  @param statement The statement that is executed.
  @param <V> type of the value that is returned by the statement.
  @return the return value of the statement.
  @see #wrapCheckedException(Statement)