Many GeneXus commands and functions support dynamic execution of objects (see Call command, Link Command, etc. for details). This article describes how dynamic execution interacts with Module objects
Even though it isn't a recomended technique, you _can_ dynamically execute an object that you cannot execute statically.
Say, for example, that object X is private to Module M (see Object visibility property) and object Y (out of module M) tries to execute it.
If Y uses a static call:
It gets an error message "Validation of Procedure 'Y' failed. Call to program 'X' is not valid." when saving Y or at specification time. However, if Y uses a dynamic call:
&MX = "M.X"
There will be no errors either at specification or execution time, related to object privacy.
When dynamic calls are expanded, objects that are not accessible by the caller (i.e. private to other modules) are not included.