public IObservable <IParseResult <TResult> > Parse(IObservableCursor <TSource> source) { #if !SILVERLIGHT && !PORT_45 && !PORT_40 using (ParserTraceSources.TraceQueryCompilation(name)) #endif { IObservable <IParseResult <TResult> > results; if (parserFactory == null) { results = parse(source); Contract.Assume(results != null); } else { var parser = parserFactory.Value; Contract.Assume(parser != null); results = parser.Parse(source); } return(results); } }