code: public static void wrapCheckedException(Statement statement) {
          try {
              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. The method
  <pre>
  public void doSomething() {
  wrapCheckedException(() -&gt; throw new IOException());
  }
  </pre>
  <p>throws a {@code WrappedException} that encloses the
  {@code IOException}.
  <p>This avoids adding {@code throws IOException} to the method's
  signature and is a replacement for the common
  try-catch-throw-RuntimeException pattern:
  <pre>
  public void doSomething() {
  try {
  throw new IOException();
  } catch (IOException e) {
  throw new RuntimeException(e);
  }
  }
  </pre>
  
  @param statement The statement that is executed.
  @see #wrapCheckedException(StatementWithReturnValue)