No-op collect when the args don't exist.
Add test for cast(retType, argTypes...)
Add cast signatures to make it easier to specify target type.
Fix cast of virtual target + args to be named castVirtual.