The life cycle of the AbstractDynamicMenu class is based on the
        life cycle of the SmappStatePlugin class; however, there are slight
        differences in menu functionality.
            If  you extend the 
AbstractDynamicMenu class, it implements the
                    
processMessageLogic method and the
                    
processStateLogic method.
- The processStateLogic method calls the
                            init method.
 
- processStateLogic calls both the
                            constructMenuList and
                            saveSessionVariables methods.
 
- The
                            SmappStatePlugin::getStateAttributes
                        method calls getStateAttributeList, which aggregates the
                        attributes returned by the method with attributes defined in the
                            AbstractDynamicMenu class, such as the input
                        exit-menu item and the output key-value pair. 
 
- An AbstractDynamicMenu state is initially activated as a
                        follow-up transition from a previous state, so the
                            processing engine calls its
                            processStateLogic method. The init
                        and constructMenuList methods are called sequentially to
                        initialize and construct the menu. Eventually, the menu is sent as an SMS
                        message, and the processing engine waits for the
                        response. The consumer selects a menu item.
 
- If constructMenuList returns only a single item, the
                        state immediately calls saveSessionVariables, and
                        proceeds with the default dynamic follow-up transition. You can customize
                        the state's default behavior by overriding the
                            continueWhenSingleEntry method.
 
- When a response arrives, the processing engine
                        calls the state's processMessageLogic method, which calls
                            constructMenuList to assemble the menu and interpret
                        the selected menu item. If the selection is a valid menu item,
                            saveSessionVariables is called. The state prepares
                        the selected-item details for output, and proceeds with the follow-up
                        transition, as returned by the saveSessionVariables
                        method. If null is returned, the default OK follow-up transition is
                        used.