I'm trying to 100% grok what the Java Language Specification (*JLS*) means when [*it says*](https://docs.oracle.com/javase/specs/jls/se14/html/jls-8.html#jls-8.4.2-100): "...*adapting the formal parameter types of `N` to the type parameters of `M`*..."

Going by [*what that same section used to say in earlier versions of the JLS*](https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.2-110-C), my best guess is that "*adapting*" in that context means something along the lines of "*do something to make the formal parameters of a method compatible with the generic type parameters declared for that method*".

I've given the JLS a pretty good search. But it doesn't explain anywhere what that phrase means exactly.

So I gather that the JLS assumes that people immersed in the domain of type systems — *language designers, compiler implementers, etc.* — would already know the more specific, more technical meaning of "*to adapt a formal parameter type*".

Please can anybody here break down precisely what "...*adapting the formal parameter types of `N` to the type parameters of `M`*..." means in layman's terms?

TIA.