  The migration process between different third-party libraries is hard,
complex and error-prone. Typically, during a library migration, developers need
to find methods in the new library that are most adequate in replacing the old
methods of the retired library. This process is subjective and time-consuming
as developers need to fully understand the documentation of both libraries
Application Programming Interfaces, and find the right matching between their
methods if it exists. In this context, several studies rely on mining existing
library migrations to provide developers with by-example approaches for similar
scenarios. In this paper, we introduce a novel mining approach that extracts
existing instances of library method replacements that are manually performed
by developers for a given library migration to automatically generate migration
patterns in the method level. Thereafter, our approach combines the mined
method-change patterns with method-related lexical similarity to accurately
detect mappings between replacing/replaced methods. We conduct a large scale
empirical study to evaluate our approach on a benchmark of 57,447 open-source
Java projects leading to 9 popular library migrations. Our qualitative results
indicate that our approach significantly increases the accuracy of mining
method-level mappings by an average accuracy of 12%, as well as increasing the
number of discovered method mappings, in comparison with existing
state-of-the-art studies. Finally, we provide the community with an open source
mining tool along with a dataset of all mined migrations at the method level.
