code: public static <X extends Throwable> void propagateIfPossible(
        @Nullable Throwable throwable, Class<X> declaredType) throws X {
      propagateIfInstanceOf(throwable, declaredType);
      propagateIfPossible(throwable);
    }
docs: Propagates {@code throwable} exactly as-is, if and only if it is an
  instance of {@link RuntimeException}, {@link Error}, or
  {@code declaredType}. Example usage:
  <pre>
  try {
  someMethodThatCouldThrowAnything();
  } catch (IKnowWhatToDoWithThisException e) {
  handle(e);
  } catch (Throwable t) {
  Throwables.propagateIfPossible(t, OtherException.class);
  throw new RuntimeException("unexpected", t);
  }
  </pre>
  
  @param throwable the Throwable to possibly propagate
  @param declaredType the single checked exception type declared by the
  calling method