Redeclaring an overloaded method might invoke another existing method because of parameter assignability.
Consider following repository declaration:
backed by a repository ReactiveSortingRepository<Object, Serializable>.
Invoking delete(serializable) may execute delete(Object), declared in the backing repository instead of delete(serializable).
Method selection does not consider direct matches but relies on the order of Class.getMethods to verify parameter assignability.