Скажите, что в библиотеке был метод
public static <E> void doSmth(Collection<E> foo, Collection<E> bar){...}
и использовался в следующем коде:
Set<Object> foo = ...;
List<Object> bar = ...;
doSmth(foo, bar);
Теперь другая версия библиотеки заменяет первую в classpath и имеет два метода:
public static <E> void doSmth(Collection<E> foo, Collecion<E> bar){...}
public static <E> void doSmth(Set<E> foo, List<E> bar){...}
Приложение не перекомпилировано и не запущено. Какой метод будет использован?