Ignoring synthetic methods to always return the nearest method with the most specific return type from Reflection2.method
Using checkArgument instead of throwing an IllegalArgException directly