public NSpecResultModel Run(string specName)
        {
            var reflector     = new Reflector(this._dllFile);
            var nspecInstance = new nspec();
            var conventions   = new DefaultConventions();
            var finder        = new SpecFinder(reflector);

            var builder  = new ContextBuilder(finder, new Tags().Parse(_tags), new DefaultConventions());
            var contexts = builder.Contexts().Build();

            var context            = contexts.AllContexts().FirstOrDefault(t => t.Name == specName);
            var parentTypeInstance = contexts.AllContexts().FirstOrDefault(t => t is ClassContext);

            if (context != null && !context.HasAnyExecutedExample() && parentTypeInstance != null)
            {
                ILiveFormatter liveFormatter = new SilentLiveFormatter();

                if (_formatter is ILiveFormatter)
                {
                    liveFormatter = _formatter as ILiveFormatter;
                }

                var instance = (parentTypeInstance as ClassContext).type.Instance <nspec>();
                context.Contexts.Where(t => t is MethodContext).Do(t => (t as MethodContext).Build(instance));

                context.Run(_formatter as ILiveFormatter, false, instance);
                context.AssignExceptions();

                if (builder.tagsFilter.HasTagFilters())
                {
                    context.TrimSkippedDescendants();
                }
            }

            var contextCollection = new ContextCollection {
                context
            };

            _formatter.Write(contextCollection);
            var serializableContextCollection = new SerializableContextCollection();

            BuildResponse(serializableContextCollection, contextCollection);
            return(new NSpecResultModel {
                ContextCollection = serializableContextCollection, Output = _formatter.GetFormattedString
            });
        }