code: function processForEachLoop(state, set, templNode, sibling, data, paramName) {
    if (Array.isArray(set)) {
      set.forEach(function(member, i) {
        processForEachMember(state, member, templNode, sibling,
                             data, paramName, '' + i);
      });
    }
    else {
      for (var member in set) {
        if (set.hasOwnProperty(member)) {
          processForEachMember(state, member, templNode, sibling,
                               data, paramName, member);
        }
      }
    }
  }
docs: Called by processForEach to handle looping over the data in a foreach loop.
  This works with both arrays and objects.
  Calls processForEachMember() for each member of 'set'
  @param set The object containing the data to loop over
  @param templNode The node to copy for each set member
  @param sibling The sibling node to which we add things
  @param data the data to use for node processing
  @param paramName foreach loops have a name for the parameter currently being
  processed. The default is 'param'. e.g. <loop foreach="param in ${x}">...