public void AddController(String area, String controllerName, object controller)
        {
            if (area == null)
            {
                throw new ArgumentNullException("area");
            }
            if (controllerName == null)
            {
                throw new ArgumentNullException("controllerName");
            }
            if (controller == null)
            {
                throw new ArgumentNullException("controller");
            }

            int cmp = String.Compare(area, _area, true);

            if (cmp == 0)
            {
                _controllers[controllerName] = controller;
            }
            else
            {
                ControllerTree node = null;

                if (cmp < 0)
                {
                    if (_left == null)
                    {
                        _left = new ControllerTree(area);
                    }
                    node = _left;
                }
                else
                {
                    if (_right == null)
                    {
                        _right = new ControllerTree(area);
                    }
                    node = _right;
                }

                node.AddController(area, controllerName, controller);
            }
        }
        public object GetController(String area, String controllerName)
        {
            if (area == null)
            {
                throw new ArgumentNullException("area");
            }
            if (controllerName == null)
            {
                throw new ArgumentNullException("controllerName");
            }

            int cmp = String.Compare(area, _area, true);

            if (cmp == 0)
            {
                return(_controllers[controllerName]);
            }
            else
            {
                ControllerTree node = null;

                if (cmp < 0)
                {
                    node = _left;
                }
                else
                {
                    node = _right;
                }

                if (node != null)
                {
                    return(node.GetController(area, controllerName));
                }
            }

            return(null);
        }