private void next_parse_mark(OutputGroup og)
        {
            string path = og.GetPath();

            for (int i = current_capture_label_index + 1; i < CaptureLabels.Count; i++)
            {
                CaptureLabel cl = CaptureLabels[i];
                if (cl.level == og.Level &&
                    cl.get_path() == path
                    )
                {
                    if (current_capture_label_index >= 0 && current_capture_label_index < CaptureLabels.Count)
                    {
                        unmark_capture_branch(CaptureLabels[current_capture_label_index]);
                    }
                    mark_capture_branch(cl, og, path);
                    current_capture_label_index = i;
                    break;
                }
            }

            if (current_capture_label_index >= 0 && current_capture_label_index < CaptureLabels.Count)
            {
                NextMark.Enabled = CaptureLabels[current_capture_label_index].index_in_path < current_path_capture_count - 1;
                PrevMark.Enabled = CaptureLabels[current_capture_label_index].index_in_path > 0;
            }
        }
        void set_number_of_captures(OutputGroup og)
        {
            int    count = 0;
            string path  = og.GetPath();

            foreach (CaptureLabel cl in CaptureLabels)
            {
                if (cl.level != og.Level)
                {
                    continue;
                }
                string cl_path = cl.get_path();
                if (cl_path != path)
                {
                    continue;
                }
                count++;
            }
            SetStatus("Number of [" + path + "] captures: " + count);
            current_path_capture_count = count;
        }