We have a ton of generics in these APIs, coming from the time when we have had multiple specializations, perhaps (but I will not dig into long-past history).
The core point is:
We support only NETCONF and therefore we should specialize for that.
At some point netconf.git hosts both NETCONF and RESTCONF, so we should have a common API for both, but RESTCONF also has different lifecycle. Once we get around to servicing both protocols:
- the API may become slightly different
- they definitely live a different Java package
- they may even live in mdsal.git
So let's stop play-pretend and specialize the generics to their only user – which means PREF means NetconfSessionPreferences, M means NetconfMessage, etc.