...
/**
 * Base class for all objects that need to collaborate through notifications.
 * <b>Role</b>: To provide the basic command behavior, that is, to
 * send notifications, that usually depicts a user interaction, to other commands
 * and to receive notifications sent by other commands.
 * This behavior is known as the send/receive communication protocol.
 * <p>
 * All the existing commands are organized as a tree structure.
 * Each command has a parent command and possibly children.
 * The parent is passed as a parameter of the command constructor.
 * <p>
 * When the end-user interacts with the application, system events are produced
 * that are turned into notifications, and sent to either the command
 * that is involved, such as the push button pushed by the end user,
 * or to the command that is the nearest to the 
 * user interaction, such as the manipulator set onto a document object's representation
 * selected by the end user in a graphics viewer.
 * <p>
 * The notification is sent from command to command along the tree structure
 * until it can be processed.
 * If no command able to process the notification is
 * found, it is sent to the command selector that resends it to
 * the active command.
 * This can decide to process the notification,
 * or otherwise to do something else, possibly nothing.
 *
 * @see CATCallbackManager, CATNotification
 */
class ExportedByJS0FM CATCommand : public CATEventSubscriber
{
...