text: public ParseTreePattern compile(String pattern, int patternRuleIndex) {List<? extends Token> tokenList = tokenize(pattern);ListTokenSource tokenSrc = new ListTokenSource(tokenList);CommonTokenStream tokens = new CommonTokenStream(tokenSrc);ParserInterpreter parserInterp = new ParserInterpreter(parser.getGrammarFileName(),parser.getVocabulary(),Arrays.asList(parser.getRuleNames()),parser.getATNWithBypassAlts(),tokens);ParseTree tree = null;try {parserInterp.setErrorHandler(new BailErrorStrategy());tree = parserInterp.parse(patternRuleIndex);}catch (ParseCancellationException e) {throw (RecognitionException)e.getCause();}catch (RecognitionException re) {throw re;}catch (Exception e) {throw new CannotInvokeStartRule(e);}if ( tokens.LA(1)!=Token.EOF ) {throw new StartRuleDoesNotConsumeFullPattern();}return new ParseTreePattern(this, pattern, patternRuleIndex, tree);}