var walked=[];
function walk(value){if(value &&typeof value == 'object'&&!value.__walked){
value.__walked = true;
walked.push(value);
for(var i in value){if(walk(value[i])){
forEach(value,i,value[i]);
}}returntrue;
}}
walk(value);
forEach({},null,value);
for(var i = 0; i < walked.length;i++)delete walked[i].__walked;