public static EPLTreeWalkerListener ParseAndWalkEPL(String expression, EngineImportService engineImportService, VariableService variableService)
        {
            var container = SupportContainer.Instance;

            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 = container.Resolve <EventAdapterService>();

            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);
        }