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 object properties.
Even though it isn't a recommended technique, you _can_ dynamically execute an object that you cannot execute statically.
Say, for example, that object X is private to the 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 'CallPrivate' failed. error: Program 'X' does not exist." 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.