/// <summary>
        /// Toggles node state between checked & unchecked
        /// </summary>
        /// <param name="node"></param>
        private void ToggleNodeState(TriStateTreeNode node)
        {
            // no need to toggle state for non-existing node ( or non-tristatetreenode! )
            if (null == node)
            {
                return;
            }

            // toggle state
            CheckState nextState;

            switch (node.CheckState)
            {
            case CheckState.Unchecked:
                nextState = CheckState.Checked;
                break;

            default:
                nextState = CheckState.Unchecked;
                break;
            }

            // notify the treeview that an update is about to take place
            BeginUpdate();

            // update the node state, and dependend nodes
            node.SetCheckedState(nextState);

            // force a redraw
            EndUpdate();
        }