/// <summary>
		/// Initialization method called by the package base class when this package is loaded.
		/// </summary>
		protected override void Initialize()
		{
			base.Initialize();

			// Register the editor factory used to create the DSL editor.
			this.RegisterEditorFactory(new AsyncDslEditorFactory(this));

			// Create the command set that handles menu commands provided by this package.
			AsyncDslCommandSet commandSet = new AsyncDslCommandSet(this);
			commandSet.Initialize();
			
			// Register the model explorer tool window for this DSL.
			this.AddToolWindow(typeof(AsyncDslExplorerToolWindow));

			if (this.DesignTimeRunMode)
			{
				// Toolbar registration doesn't work well under design run mode as the toolbox needs to be reset
				// Instead we'll dynamically zap and recreate our toolbox every time
				// Regular users of the finished tool will get the toolbox setup in the perfectly normal way
				this.SetupDynamicToolbox();
			}
		}
		/// <summary>
		/// Initialization method called by the package base class when this package is loaded.
		/// </summary>
		protected override void Initialize()
		{
			base.Initialize();

			// Register the editor factory used to create the DSL editor.
			this.RegisterEditorFactory(new AsyncDslEditorFactory(this));
			
			// Initialize the toolbox helper
			toolboxHelper = new global::DmitriNesteruk.AsyncDsl.AsyncDslToolboxHelper(this);

			// Create the command set that handles menu commands provided by this package.
			AsyncDslCommandSet commandSet = new AsyncDslCommandSet(this);
			commandSet.Initialize();
			
			// Register the model explorer tool window for this DSL.
			this.AddToolWindow(typeof(AsyncDslExplorerToolWindow));

			// Initialize Extension Registars
			// this is a partial method call
			this.InitializeExtensions();

			// Add dynamic toolbox items
			this.SetupDynamicToolbox();
		}