code: @CanIgnoreReturnValue
    @GwtIncompatible
    @Deprecated
    public static RuntimeException propagate(Throwable throwable) {
      throwIfUnchecked(throwable);
      throw new RuntimeException(throwable);
    }
docs: Propagates {@code throwable} as-is if it is an instance of {@link RuntimeException} or {@link
  Error}, or else as a last resort, wraps it in a {@code RuntimeException} and then propagates.
  
  <p>This method always throws an exception. The {@code RuntimeException} return type allows
  client code to signal to the compiler that statements after the call are unreachable. Example
  usage:
  
  <pre>
  T doSomething() {
  try {
  return someMethodThatCouldThrowAnything();
  } catch (IKnowWhatToDoWithThisException e) {
  return handle(e);
  } catch (Throwable t) {
  throw Throwables.propagate(t);
  }
  }
  </pre>
  
  @param throwable the Throwable to propagate
  @return nothing will ever be returned; this return type is only for your convenience, as
  illustrated in the example above
  @deprecated Use {@code throw e} or {@code throw new RuntimeException(e)} directly, or use a
  combination of {@link #throwIfUnchecked} and {@code throw new RuntimeException(e)}. For
  background on the deprecation, read <a href="https://goo.gl/Ivn2kc">Why we deprecated
  {@code Throwables.propagate}</a>.