// TODO refactor into interface
        /// <summary>
        /// Parses a stream into a
        /// <see cref="CssRuleSetParser"/>
        /// .
        /// </summary>
        /// <param name="stream">the stream</param>
        /// <param name="baseUrl">the base url</param>
        /// <returns>
        /// the resulting
        /// <see cref="iText.StyledXmlParser.Css.CssStyleSheet"/>
        /// </returns>
        /// <exception cref="System.IO.IOException">Signals that an I/O exception has occurred.</exception>
        public static CssStyleSheet Parse(Stream stream, String baseUrl)
        {
            CssParserStateController controller = new CssParserStateController(baseUrl);
            TextReader br = PortUtil.WrapInBufferedReader(new StreamReader(stream, Encoding.UTF8));

            // TODO determine charset correctly DEVSIX-1458
            char[] buffer = new char[8192];
            int    length;

            while ((length = br.Read(buffer, 0, buffer.Length)) > 0)
            {
                for (int i = 0; i < length; i++)
                {
                    controller.Process(buffer[i]);
                }
            }
            return(controller.GetParsingResult());
        }