I noticed warnings like this in the Jenkins runs for the MDA:
The MDA codebase makes heavy use of generics, and applying -Xlint:unchecked indicates that it has many cases in which we're not passing the more extensive tests. We should take a solid look at this prior to final release.
I spent an hour or so trying to work through some of the cases I found, and was able to find some patterns in what we're not doing right. The easiest ones to understand seem to be the use of raw types like Future, and things that should be polymorphic just using wildcards in multiple places with no attempt to link them together (e.g., across parameters or between parameters and results).
In the end, though, this is happening because we didn't have a good enough understanding of the rather bonkers Java type system, and rather rather than picking at individual cases I think it needs to be done from first principles. I've therefore discarded the initial attempt.