docs: function iterate(node, test) {
  	const result = [];
  	let stack = node.children.slice().reverse(), ctx;
  
  	while (stack.length) {
  		ctx = stack.pop();
  		test(ctx) && result.push(ctx);
  		stack = stack.concat( ctx.children.slice().reverse() );
  	}
  
  	return result;
  }