public <T, E extends Throwable> T with(final @NotNull ThrowableComputable<T, E> func) throws E {
      final CreationTimeOptions previousOptions = setThreadLocalOptions(this);
      try {
        return func.compute();
      }
      finally {
        setThreadLocalOptions(previousOptions);
      }
    }
public <T, E extends Throwable> T with(final @NotNull ThrowableComputable<T, E> func)