private static Binding findAndCache(LexicalEnvironment e, Symbol symbol)
{
if (e.statistics != null)
{
e.statistics.Lookups++;
}
var id = symbol.ID;
while (e != null)
{
var b = e.findInFrame(id);
if (b != null)
{
symbol.Env = e;
return(symbol.CachedBinding = b);
}
e = e.parent;
}
throw undefined(symbol);
}