getCause(Throwable): Refactored into two methods which are called internally. This will allow more cause method names to be added with ease. getCauseUsingWellKnownTypes(Throwable): Extracted from getCause(). getCauseUsingMethodName(String, Throwable): Extracted from getCause().