code: public static ThrowableType getThrowableType(Throwable cause) {
  		final ThrowableAnnotation annotation = cause.getClass().getAnnotation(ThrowableAnnotation.class);
  		return annotation == null ? ThrowableType.RecoverableError : annotation.value();
  	}
docs: Classify the exceptions by extracting the {@link ThrowableType} from a potential {@link ThrowableAnnotation}.
  
  @param cause the {@link Throwable} to classify.
  @return The extracted {@link ThrowableType} or ThrowableType.RecoverableError if there is no such annotation.