internal void RecreateParser()
 {
     lock (MySyncRoot)
     {
         FleeExpressionAnalyzer analyzer = new FleeExpressionAnalyzer();
         ExpressionParser       parser   = new ExpressionParser(System.IO.StringReader.Null, analyzer, this);
         MyProperties.SetValue("ExpressionParser", parser);
     }
 }
        // Does the actual parsing of an expression. Thead-safe.
        internal ExpressionElement Parse(string expression, IServiceProvider services)
        {
            lock (MySyncRoot)
            {
                System.IO.StringReader sr     = new System.IO.StringReader(expression);
                ExpressionParser       parser = this.Parser;
                parser.Reset();
                parser.Tokenizer.Reset(sr);
                FleeExpressionAnalyzer analyzer = parser.Analyzer as FleeExpressionAnalyzer;

                analyzer.SetServices(services);

                Node rootNode = DoParse();
                analyzer.Reset();
                ExpressionElement topElement = rootNode.Values[0] as ExpressionElement;
                return(topElement);
            }
        }