// ISelectionPathInterpreter Members

        public DependencyObject ResolveSelectionPath(CategoryList root, SelectionPath path, out bool pendingGeneration)
        {
            pendingGeneration = false;
            if (path == null || !string.Equals(PathTypeId, path.PathTypeId))
            {
                Debug.Fail("Invalid SelectionPath specified.");
                return(null);
            }

            if (root == null)
            {
                Debug.Fail("No CategoryList specified.");
                return(null);
            }

            string editorTypeName = path.Path;

            if (string.IsNullOrEmpty(editorTypeName))
            {
                Debug.Fail("Invalid SelectionPath specified.");
                return(null);
            }

            ModelCategoryEntry category;
            CategoryEditor     editor = root.FindCategoryEditor(editorTypeName, out category);

            if (editor == null || category == null)
            {
                return(null);
            }

            return(root.FindCategoryEditorVisual(editor, category, out pendingGeneration));
        }
        // ISelectionPathInterpreter Members

        public DependencyObject ResolveSelectionPath(CategoryList root, SelectionPath path, out bool pendingGeneration) 
        {
            pendingGeneration = false;
            if (path == null || !string.Equals(PathTypeId, path.PathTypeId)) 
            {
                Debug.Fail("Invalid SelectionPath specified.");
                return null;
            }

            if (root == null) 
            {
                Debug.Fail("No CategoryList specified.");
                return null;
            }

            string editorTypeName = path.Path;

            if (string.IsNullOrEmpty(editorTypeName)) 
            {
                Debug.Fail("Invalid SelectionPath specified.");
                return null;
            }

            ModelCategoryEntry category;
            CategoryEditor editor = root.FindCategoryEditor(editorTypeName, out category);
            if (editor == null || category == null) 
            {
                return null;
            }

            return root.FindCategoryEditorVisual(editor, category, out pendingGeneration);
        }