Flexible software analysis with Moose