/// <summary>
        /// Add one more plugin (commands provider) to the listeners collection.
        /// Each provider can provide as many commands as it need.
        /// </summary>
        /// <param name="cp">Commands provider object.</param>
        public void AddProvider(ICherryCommandsProvider cp)
        {
            var plug = cp as IPlugin;

            Trace.Write(string.Format(
                            "Registering command listeners from {0}: ",
                            plug != null ? "plugin " + plug.PluginName : "one provider"));

            foreach (var cc in cp.GetCommands())
            {
                this.AddCommand(cc);

                Trace.Write(string.Format("'{0}' ", cc.Name));
            }

            Trace.WriteLine(string.Empty);
        }
        /// <summary>
        /// Add one more plugin (commands provider) to the listeners collection.
        /// Each provider can provide as many commands as it need.
        /// </summary>
        /// <param name="cp">Commands provider object.</param>
        public void AddProvider(ICherryCommandsProvider cp)
        {
            var plug = cp as IPlugin;
            Trace.Write(string.Format(
                "Registering command listeners from {0}: ",
                plug != null ? "plugin " + plug.PluginName : "one provider"));

            foreach (var cc in cp.GetCommands())
            {
                this.AddCommand(cc);

                Trace.Write(string.Format("'{0}' ", cc.Name));
            }

            Trace.WriteLine(string.Empty);
        }