whole_func_string: function(scope, member) {
          self.scope.push(scope);
          try {
            if (node.nodeName === 'LOOP') {
              for (var i = 0; i < node.childNodes.length; i++) {
                var clone = node.childNodes[i].cloneNode(true);
                processSingle(member, clone, node);
              }
            } else {
              var clone = node.cloneNode(true);
              clone.removeAttribute('foreach');
              processSingle(member, clone, node);
            }
          } finally {
            self.scope.pop();
          }
        }
func_code_string: function(scope, member) {
          self.scope.push(scope);
          try {
            if (node.nodeName === 'LOOP') {
              for (var i = 0; i < node.childNodes.length; i++) {
                var clone = node.childNodes[i].cloneNode(true);
                processSingle(member, clone, node);
              }
            } else {
              var clone = node.cloneNode(true);
              clone.removeAttribute('foreach');
              processSingle(member, clone, node);
            }
          } finally {
            self.scope.pop();
          }
        }
func_documentation_string: processSingle is no good for <loop> nodes where we want to work on the childNodes rather than the node itself