whole_func_string: function groupScan(node, attrStart, attrEnd) {
        var nodes = [];
        var depth = 0;
        if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
          do {
            if (!node) {
              throw $compileMinErr('uterdir',
                        'Unterminated attribute, found \'{0}\' but no matching \'{1}\' found.',
                        attrStart, attrEnd);
            }
            if (node.nodeType === NODE_TYPE_ELEMENT) {
              if (node.hasAttribute(attrStart)) depth++;
              if (node.hasAttribute(attrEnd)) depth--;
            }
            nodes.push(node);
            node = node.nextSibling;
          } while (depth > 0);
        } else {
          nodes.push(node);
        }
  
        return jqLite(nodes);
      }
func_code_string: function groupScan(node, attrStart, attrEnd) {
        var nodes = [];
        var depth = 0;
        if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) {
          do {
            if (!node) {
              throw $compileMinErr('uterdir',
                        'Unterminated attribute, found \'{0}\' but no matching \'{1}\' found.',
                        attrStart, attrEnd);
            }
            if (node.nodeType === NODE_TYPE_ELEMENT) {
              if (node.hasAttribute(attrStart)) depth++;
              if (node.hasAttribute(attrEnd)) depth--;
            }
            nodes.push(node);
            node = node.nextSibling;
          } while (depth > 0);
        } else {
          nodes.push(node);
        }
  
        return jqLite(nodes);
      }
func_documentation_string: Given a node with a directive-start it collects all of the siblings until it finds
  directive-end.
  @param node
  @param attrStart
  @param attrEnd
  @returns {*}