function walk(args) {
    args.node.forEach(function(item, i) {
      var name = args.selector(item);
      var namespace = args.namespaceSelector &&
                      makeNamespace(args.namespaceSelector(item));
      var extraSymbols = args.getExtraSymbols(args.node, i);

      var info = name && getPrefixInfo(name, namespace, extraSymbols);
      if (!info) return;
      args.payload(info, i);
    });
  }
Walks across nodes, and call payload for every node that pass
selector check.

@param {Object} args arguments in form of:
 {
     node: {object} current node,
     selector: {function} propertyName selector
     payload: {function} work to do with gathered info
     namespaceSelector: {function} selector for namespace
     getExtraSymbols: {Number} extra symbols count
 }