We have been discussing here for long time that the meta-model approach of Moose is not that much adapted to the problems of reverse engineering.
Because we need to model detailed informations on the programs being modeled, Famix has many entities that are language specific.
Up to now we manage because Moose "core" deals with only two languages: Java and Smalltalk But if we wanted to deal with other languages C#, PHP, Python, Java-script, Cobol, Pascal, Lisp, ... we would have to add entities and/or constructs specific to each language and the tools would become less and less generic.
More recently, it occurred to me that this is very similar to the kind of issues one has to deal with in a statically typed language (Java is evil :-) ).
So basically Famix introduced static typing in Moose.
If this analysis is correct, the questions would be: - was it necessary to go that way? why? - is there another way to do it? more in tune with the smalltalk way of life?
nicolas