public void ConstructMenu(GetSmartTagItemsEventArgs ea)
        {
            var artifacts = new ApprovalArtifacts(CodeRush.Source.ActiveMethod);

            ea.Add(new RunTestItem("Test"));

            if (artifacts.HasReceivedFile())
            {
                var received = new SmartTagItem("Received File");
                received.AddItem(new OpenFileItem("View", artifacts.Received));
                received.AddItem(new CopyPathItem("Copy File Path", artifacts.Received));
                received.AddItem(new OpenInExplorerItem("Show in Explorer", artifacts.Received));
                ea.Add(received);
            }

            var approved = new SmartTagItem("Approved File");
            approved.AddItem(new OpenFileItem("View", artifacts.Approved));
            approved.AddItem(new CopyPathItem("Copy File Path", artifacts.Approved));
            approved.AddItem(new OpenInExplorerItem("Show in Explorer", artifacts.Approved));
            approved.AddItem(new LoadApproveItem("Set Approval", artifacts.Approved));
            ea.Add(approved);

            if (artifacts.HasReceivedFile() && artifacts.HasApprovalFile())
                ea.Add(new DiffItem("Diff", artifacts.Received, artifacts.Approved));

            if (artifacts.HasReceivedFile()) {
                ea.Add(new OpenFileItem("View Received", artifacts.Received));
                ea.Add(new ApproveItem("Approve", artifacts.Received, artifacts.Approved));
            }
        }
        /// <summary>
        /// Do all the busy work to add a menuitem to a smart tag
        /// </summary>
        /// <param name="ea">Where to put new menu item</param>
        /// <param name="menuText">What to put into the smartTagItem</param>
        /// <param name="handler">What will respond to the user selecting the smart tag item</param>
        private static void AddSmartTagItem(GetSmartTagItemsEventArgs ea, string menuText, System.EventHandler handler)
        {
            SmartTagItem menuItem = new SmartTagItem(menuText);

            menuItem.Execute += handler;
            ea.Add(menuItem);
        }
 /// <summary>
 /// Do all the busy work to add a menuitem to a smart tag
 /// </summary>
 /// <param name="ea">Where to put new menu item</param>
 /// <param name="menuText">What to put into the smartTagItem</param>
 /// <param name="handler">What will respond to the user selecting the smart tag item</param>
 private static void AddSmartTagItem(GetSmartTagItemsEventArgs ea, string menuText, System.EventHandler handler)
 {
     SmartTagItem menuItem = new SmartTagItem(menuText);
     menuItem.Execute += handler;
     ea.Add(menuItem);
 }