}               //Todo: refactor with one below

        public static ToolStripButton   add_Button(this ToolStrip toolStrip, string text, string resourceName, Image image, Action onClick)
        {
            if (toolStrip.isNull())
            {
                "[ToolStripButton][add_Button] provided toolStrip was null".error();
                return(null);
            }
            return(toolStrip.invokeOnThread(
                       () =>
            {
                var button = new ToolStripButton();
                toolStrip.Items.Add(button);
                try
                {
                    if (resourceName.valid())
                    {
                        button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
                        button.applyResources(resourceName);
                    }
                    if (image.notNull())
                    {
                        button.Image = image;
                    }
                    if (text.valid())
                    {
                        button.Text = text;
                    }

                    button.Click += (sender, e) =>
                    {
                        if (onClick.notNull())
                        {
                            onClick();
                        }
                    };
                }
                catch (Exception ex)
                {
                    ex.log("inside toolStrip add_Button");
                }
                Application.DoEvents();
                if (button.toolStrip() != toolStrip)
                {
                    "[ToolStripButton][add_Button] parent was not set, so setting it manuallly".error();
                    //button.prop("Parent", toolStrip);
                    Reflection_ExtensionMethods_Properties.prop("button", "Parent", toolStrip);
                }
                return button;
            }));
        }