$NAMESPACE app::messages
namespace app
{
namespace messages
{
...
} // end namespace -- messages
} // end namespace -- app
An empty $NAMESPACE means the global namespace. The last $NAMESPACE in the module wins.
A function generated MEMBER OF a class is defined inside this namespace, so C++ requires the class to be declared in it (or in a namespace nested in it).

