code: @SuppressWarnings("unchecked")
      private static <R, T extends Throwable> R typeErasure(final Throwable throwable) throws T {
          throw (T) throwable;
      }
docs: Claim a Throwable is another Exception type using type erasure. This
  hides a checked exception from the java compiler, allowing a checked
  exception to be thrown without having the exception in the method's throw
  clause.