JavaNativeModule: Fixed Method selection for Functional interfaces
Background: We only checked public nondefault, that matched for public statics as well.
Now checks for public nodefault abstract
Also TODO: Functional Type may not be part of functional Method's signature
JavaNative: Moved loading of method return type to a latter time
Background: If the return type was a generic parameter, that early it wouldn't have been populated yet, and why load the return type as first thing in a method anyways?
Fix approximate member choosing when Inherited methods are involved
Background: Approximate member choosing is based only on the types, so an overridden method would match twice, but with different priority. Fixes this by including a priority check before deciding whether or not to throw an error
JavaNativeModule: Don't add methods whose signature was overriden to child class
Background: Javac creates an ACC_BRIDGE method to deal with the signature change (either a covariant parameter or contravariant return type change).
Hence there are two declared methods, one that is the old one, one that is new. For Signatures where only the return type changed this caused both to be registered and an ambiguity later where ZC could not determine which to choose
[WIP, I have no idea what I'm doing] Trying to get generic parameters working
Let's see if putting them all into one TypeVariableContext works..?
Also, a lambda that returns void cannot conclude the generic header. How should we deal with this?
Fixed incorrect method signature on lambda methods
They used the signature instead of the description, so there was an AIOOB when the compiler tried to cast a 'TT;' as that only exists in signatures, not in descriptions