You might want to take a look at DeprecationFinder (on smalltalkhub).
You could make a data structure representing all missing dependencies for a package, so
you can create independent models for all versions of packages. If you can reason about
multiple versions of packages you calculate which versions can (not) work together based
on class/method signatures.
To do this over something as large as Moose, you currently need to create deltas or at
least a structure more memory efficient than Famix, otherwise you'll run out of
memory. I'm looking forward to a 64 bit image+vm
Stephan