public IEnumerable <TypeDescriptor <EventDescriptor> > DescribeEvents()
        {
            var context = new DescribeEventContext();

            foreach (var provider in _eventProviders)
            {
                provider.Describe(context);
            }
            return(context.Describe());
        }
        public void Describe(DescribeEventContext describe)
        {
            Func <dynamic, bool> contentHasPart = ContentHasPart;

            describe.For("Content", T("Content Items"), T("Content Items"))
            .Element("Created", T("Content Created"), T("Content is actually created."), contentHasPart, context => T("When content with types ({0}) is created.", FormatPartsList(context)), "SelectContentTypes")
            .Element("Versioned", T("Content Versioned"), T("Content is actually versioned."), contentHasPart, context => T("When content with types ({0}) is versioned.", FormatPartsList(context)), "SelectContentTypes")
            .Element("Published", T("Content Published"), T("Content is actually published."), contentHasPart, context => T("When content with types ({0}) is published.", FormatPartsList(context)), "SelectContentTypes")
            .Element("Removed", T("Content Removed"), T("Content is actually removed."), contentHasPart, context => T("When content with types ({0}) is removed.", FormatPartsList(context)), "SelectContentTypes");
        }