rem: while ( t && /^[a-z[({<*:.#]/i.test(t) ) { 
add: while ( t  && t != last ) { last = t; 
context: 	filter: function(t,r,not) {		// Look for common filter expressions		while ( t && /^[a-z[({<*:.#]/i.test(t) ) {			var p = jQuery.parse, m;			jQuery.each( p, function(i,re){						// Look for, and replace, string-like sequences				// and finally build a regexp out of it				m = re.exec( t );				if ( m ) {					// Remove what we just matched					t = t.substring( m[0].length );					// Re-organize the first match					if ( jQuery.expr[ m[1] ]._resort )						m = jQuery.expr[ m[1] ]._resort( m );					return false;				}			});			// :not() is a special case that can be optimized by			// keeping it out of the expression list			if ( m[1] == ":" && m[2] == "not" )				r = jQuery.filter(m[3], r, true).r;			// Handle classes as a special case (this will help to			// improve the speed, as the regexp will only be compiled once)			else if ( m[1] == "." ) {				var re = new RegExp("(^|\\s)" + m[2] + "(\\s|$)");				r = jQuery.grep( r, function(e){					return re.test(e.className || "");				}, not);			// Otherwise, find the expression to execute			} else {				var f = jQuery.expr[m[1]];				if ( typeof f != "string" )					f = jQuery.expr[m[1]][m[2]];				// Build a custom macro to enclose it				eval("f = function(a,i){" +					( jQuery.expr[ m[1] ]._prefix || "" ) +					"return " + f + "}");				// Execute it against the current filter				r = jQuery.grep( r, f, not );			}		}		// Return an array of filtered elements (r)		// and the modified expression string (t)		return { r: r, t: t };	},
meta: 3217	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/3217/af79bb1f255433d553d8d9dde0306cc340903c1a/selector.js/clean/src/selector/selector.js