code: function Controller(context)
  {
          /**
           * @member {ClientContext} context
           * @memberOf Controller
           * @instance
           */
          this.context = context;
  
          /**
           * @member {ControllerState} currentState
           * @memberOf Controller
           * @instance
           */
          this.currentState = null;
  
          /**
           * @member {Controller} __child__
           * @memberOf Controller
           * @private
           * @instance
           */
          this.__child__ = null;
  
          /**
           * @member {Controller} __parent__
           * @memberOf Controller
           * @private
           * @instance
           */
          this.__parent__ = null;
  
          /**
           * @member {Object} _currentTransition
           * @memberOf Controller
           * @private
           * @instance
           */
          this._currentTransition = null;
  }
docs: An object that describes a state. This object must be immutable (by contract).
  @typedef {Object} ControllerStateObject
  @property {string} stateName If a state is an object, this property is used to determine
  the name of the enter method (see Controller.stateMethodName)
  @property {function} isStateEqual If a state is an object, this function must be present.
  It must return true if the first argument is the same state (even if it is not the same instance)
   
  You can use either a string or an immutable object to describe a state.
  @typedef {(string|ControllerStateObject)} ControllerState
   
  @typedef {ControllerState[]} ControllerStateList
   
  @typedef {Object} ClientContext
   
  The base class for Controllers.
  Implements the stateful controller pattern. Users can inherit from this class to
  implement their own stateful controllers. This pattern is useful for implementing
  single page web applications, as opposed to a more traditional web application following
  the stateless REST architecture.
  @param {ClientContext} context
  @constructor