public IPathNode NewItem(IContext context, string path, string itemTypeName, object newItemValue)
        {
            if (null == ErrorProvider)
            {
                var sp = Locator.Get <IServiceProvider>();
                if (null == sp)
                {
                    throw new ServiceUnavailableException(typeof(IServiceProvider));
                }

                ErrorProvider = new InternalErrorListProvider(sp);
            }

            var p = context.DynamicParameters as NewItemParams;

            var errorCategory = TaskErrorCategory.Error;

            try
            {
                errorCategory = (TaskErrorCategory)Enum.Parse(typeof(TaskErrorCategory), itemTypeName, true);
            }
            catch
            {
            }

            var task = new ErrorTask
            {
                ErrorCategory = errorCategory,
                Text          = newItemValue.ToString(),
                Column        = p.Column,
                Line          = p.Line,
                HierarchyItem = GetHeirarchyItemFromSourcePath(context, p.SourcePath),
                Document      = GetDocumentFromSourcePath(context, p.SourcePath)
            };

            task.Navigate += NavigateToTask;
            ErrorProvider.Tasks.Add(task);
            ErrorProvider.Show();

            var errors = _dte.ToolWindows.ErrorList.ErrorItems;

            ErrorItem item = errors.Item(errors.Count);

            if (null != item)
            {
                return(new ErrorListItemNodeFactory(item).GetNodeValue());
            }

            return(null);
        }
        public IPathNode NewItem(IContext context, string path, string itemTypeName, object newItemValue)
        {
            if (null == ErrorProvider)
            {
                var sp = Locator.Get<IServiceProvider>();
                if( null == sp )
                {
                    throw new ServiceUnavailableException( typeof( IServiceProvider ) );
                }

                ErrorProvider = new InternalErrorListProvider(sp);
            }

            var p = context.DynamicParameters as NewItemParams;

            var errorCategory = TaskErrorCategory.Error;
            try
            {
                errorCategory = (TaskErrorCategory) Enum.Parse(typeof (TaskErrorCategory), itemTypeName, true);
            }
            catch
            {
            }

            var task = new ErrorTask
                           {
                               ErrorCategory = errorCategory,
                               Text = newItemValue.ToString(),
                               Column = p.Column,
                               Line = p.Line,
                               HierarchyItem = GetHeirarchyItemFromSourcePath(context, p.SourcePath),
                               Document = GetDocumentFromSourcePath(context, p.SourcePath)
                           };

            task.Navigate += NavigateToTask;
            ErrorProvider.Tasks.Add(task);
            ErrorProvider.Show();

            var errors = _dte.ToolWindows.ErrorList.ErrorItems;

            ErrorItem item = errors.Item(errors.Count);
            if (null != item)
            {
                return new ErrorListItemNodeFactory(item).GetNodeValue();
            }

            return null;
        }