rem: this.match = new Function('element', 'if (!element.tagName) return false; \ element = $(element); \ return ' + this.buildMatchExpression()); 
add:  if (Prototype.BrowserFeatures.XPath && !(/\[[\w-]*?:/).test(this.expression)) return this.compileXPathMatcher();  var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m;  if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"];  while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(typeof c[i] == 'function' ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ''); break; } } }  this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join('\n')); Selector._cache[this.expression] = this.matcher; 
context:   compileMatcher: function() {    this.match = new Function('element', 'if (!element.tagName) return false; \      element = $(element); \      return ' + this.buildMatchExpression());  },
meta: 8886	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/8886/c1f8a57fb495053291d684e68f518dd14dfa0a6f/prototype.js/clean/js_test/prototype.js