private void Walk(string loc, string expr, object value, string path, WalkCallback callback)
{
if (_system.IsPrimitive(value))
return;
if (_system.IsArray(value))
{
var list = (IList) value;
for (int i = 0; i < list.Count; i++)
callback(i, loc, expr, value, path);
}
else if (_system.IsObject(value))
{
foreach (string key in _system.GetMembers(value))
callback(key, loc, expr, value, path);
}
}