public static EPLTreeWalkerListener ParseAndWalkPattern(String expression)
        {
            Log.Debug(".parseAndWalk Trying text=" + expression);
            Pair <ITree, CommonTokenStream> ast = SupportParserHelper.ParsePattern(expression);

            Log.Debug(".parseAndWalk success, tree walking...");
            SupportParserHelper.DisplayAST(ast.First);

            EPLTreeWalkerListener listener = SupportEPLTreeWalkerFactory.MakeWalker(ast.Second);
            ParseTreeWalker       walker   = new ParseTreeWalker();

            walker.Walk(listener, (IParseTree)ast.First);
            return(listener);
        }
        public static EPLTreeWalkerListener ParseAndWalkEPL(String expression, EngineImportService engineImportService, VariableService variableService)
        {
            Log.Debug(".parseAndWalk Trying text=" + expression);
            Pair <ITree, CommonTokenStream> ast = SupportParserHelper.ParseEPL(expression);

            Log.Debug(".parseAndWalk success, tree walking...");
            SupportParserHelper.DisplayAST(ast.First);

            EventAdapterService eventAdapterService = SupportEventAdapterService.Service;

            eventAdapterService.AddBeanType("SupportBean_N", typeof(SupportBean_N), true, true, true);

            EPLTreeWalkerListener listener = SupportEPLTreeWalkerFactory.MakeWalker(ast.Second, engineImportService, variableService);
            ParseTreeWalker       walker   = new ParseTreeWalker(); // create standard walker

            walker.Walk(listener, (IParseTree)ast.First);           // initiate walk of tree with listener
            return(listener);
        }