Return a map instead of a generator
Fix inference for new Arg type
use ModuleTree class to print