Description
In an effort to maintain backwards compatibility, we often dynamically load classes as basically a strategy pattern at run time where the implementation might be in one class in an older version of OpenMRS but another class in a newer version, e.g., Spring's MappingJacksonHttpMessageConverter vs the MappingJackson2HttpMessageConverter. In these cases, we should prefer loading the more "modern" alternative before the "older" one, as, for newer implementations (which are most likely to use the newest versions of the module), we can avoid the overhead of a ClassNotFoundException.