public bool Build(ContextMenuStrip _menu)
        {
            if (Taxon == null)
            {
                return(false);
            }

            ToolStripMenuItem menuItem;

            // goto
            menuItem = new ToolStripMenuItem(
                Localization.Manager.Get("_GotoTaxon", "Goto {0}", Taxon.Desc.RefMainName),
                null, new System.EventHandler(OnGoto))
            {
                Tag = Taxon
            };
            _menu.Items.Add(menuItem);

            // select
            if (TaxonUtils.SelectedTaxon() != Taxon)
            {
                menuItem = new ToolStripMenuItem(
                    Localization.Manager.Get("_SelectTaxon", "Select {0}", Taxon.Desc.RefMainName),
                    null, new System.EventHandler(OnSelect))
                {
                    Tag = Taxon
                };
                _menu.Items.Add(menuItem);
            }

            // ascendants
            List <TaxonTreeNode> Ascendants = new List <TaxonTreeNode>();

            Taxon.GetAllParents(Ascendants, false, false, false);
            if (Ascendants.Count > 0)
            {
                menuItem = new ToolStripMenuItem(Localization.Manager.Get("_SelectAscendant", "Select ascendant"));
                _menu.Items.Add(menuItem);
                foreach (TaxonTreeNode node in Ascendants)
                {
                    ToolStripMenuItem subMenuItem = new ToolStripMenuItem(
                        node.Desc.RefMainName, null, new System.EventHandler(OnSelect))
                    {
                        Tag = node
                    };
                    menuItem.DropDownItems.Add(subMenuItem);
                }
            }

            // add open image if ImagePath has been setup
            string imagePath = ImageDesc?.GetPath(Taxon.Desc);

            if (imagePath != null)
            {
                _menu.Items.Add(new ToolStripSeparator());

                menuItem = new ToolStripMenuItem(
                    Localization.Manager.Get("_OpenImage", "Open image {0}", imagePath),
                    null, new EventHandler(OnOpenImage))
                {
                    Tag = imagePath
                };
                _menu.Items.Add(menuItem);

                menuItem = new ToolStripMenuItem(
                    Localization.Manager.Get("_LocateImage", "Locate image in explorer"),
                    null, new EventHandler(OnLocateImage))
                {
                    Tag = imagePath
                };
                _menu.Items.Add(menuItem);
            }

            // add favorite menu
            menuItem = TaxonUtils.FavoritesMenuItem(Taxon);
            if (menuItem != null)
            {
                _menu.Items.Add(new ToolStripSeparator());
                _menu.Items.Add(menuItem);
            }

            menuItem = BuildAdvanced();
            if (menuItem != null)
            {
                _menu.Items.Add(new ToolStripSeparator());
                _menu.Items.Add(menuItem);
            }

            return(true);
        }