protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _languageService.Dispose();
                _languageService = null;
            }

            try
            {
                if (_componentID != 0)
                {
                    IOleComponentManager mgr = GetService(typeof(SOleComponentManager)) as IOleComponentManager;
                    if (mgr != null)
                    {
                        mgr.FRevokeComponent(_componentID);
                    }

                    _componentID = 0;
                }
            }
            finally
            {
                base.Dispose(disposing);
            }
        }
        /////////////////////////////////////////////////////////////////////////////
        // Overriden Package Implementation
        #region Package Members

        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initilaization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString()));
            base.Initialize();

            _languageService = new Babel.LanguageService();
            _languageService.SetSite(this);

            IServiceContainer serviceContainter = (IServiceContainer)this;

            serviceContainter.AddService(typeof(Babel.LanguageService), _languageService, true);

            // Remeber the DTE for future use;
            _envDte = GetService(typeof(DTE)) as DTE;

            // Remember the dialog page object
            _languageService.FormattingPage = GetDialogPage(typeof(DaxFormattingPage)) as DaxFormattingPage;

            // Register for idle timer callbacks
            IOleComponentManager mgr = GetService(typeof(SOleComponentManager)) as IOleComponentManager;

            if (_componentID == 0 && mgr != null)
            {
                OLECRINFO[] crinfo = new OLECRINFO[1];
                crinfo[0].cbSize            = (uint)Marshal.SizeOf(typeof(OLECRINFO));
                crinfo[0].grfcrf            = (uint)(_OLECRF.olecrfNeedIdleTime | _OLECRF.olecrfNeedPeriodicIdleTime);
                crinfo[0].grfcadvf          = (uint)(_OLECADVF.olecadvfModal | _OLECADVF.olecadvfRedrawOff | _OLECADVF.olecadvfWarningsOff);
                crinfo[0].uIdleTimeInterval = 1000;
                mgr.FRegisterComponent(this, crinfo, out _componentID);
            }

            AddMenuButtons();

#if DEBUG
            // Redirect console to Debug so log from Parser is visible
            Console.SetError(new ConsoleToDebugRedirector());
#endif
            SyncSnippets();

            Instance = this;
            //commandBars.Add("My Command Bar", new Point(400,400), new CommandBarPopup(),)
        }