rem: return before + String.interpret(object[match[3]]); }); 
add:  var ctx = object, expr = match[3]; var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); if (match == null) return '';  while (match != null) { var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; ctx = ctx[comp]; if (null == ctx || '' == match[3]) break; expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); match = pattern.exec(expr); }  return before + String.interpret(ctx); }.bind(this)); 
context:   evaluate: function(object) {    return this.template.gsub(this.pattern, function(match) {      var before = match[1];      if (before == '\\') return match[2];      return before + String.interpret(object[match[3]]);    });  }
meta: 9100	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/9100/2d4247a14ff4ce25ad80cbc65b787dfde7ddb16e/prototype.js/buggy/typo3/contrib/prototype/prototype.js