public virtual IDocument <L, F, OUT> ProcessDocument(IDocument <L, F, IN> @in)
        {
            IDocument <L, F, OUT> doc = @in.BlankDocument();

            Sharpen.Collections.AddAll(doc, Process(@in));
            return(doc);
        }
        /// <summary>
        /// Returns a new Document with the same meta-data as <tt>in</tt> and the same words
        /// except those on the stop list this filter was constructed with.
        /// </summary>
        public virtual IDocument <L, F, Word> ProcessDocument(IDocument <L, F, Word> @in)
        {
            IDocument <L, F, Word> @out = @in.BlankDocument();

            foreach (Word w in @in)
            {
                if (!stoplist.Contains(w))
                {
                    @out.Add(w);
                }
            }
            return(@out);
        }