docs: def ExpandGroups(path):
    """Performs group expansion on a given path.
  
    For example, given path `foo/{bar,baz}/{quux,norf}` this method will yield
    `foo/bar/quux`, `foo/bar/norf`, `foo/baz/quux`, `foo/baz/norf`.
  
    Args:
      path: A path to expand.
  
    Yields:
      Paths that can be obtained from given path by expanding groups.
    """
    precondition.AssertType(path, Text)
  
    chunks = []
    offset = 0
  
    for match in PATH_GROUP_REGEX.finditer(path):
      chunks.append([path[offset:match.start()]])
      chunks.append(match.group("alts").split(","))
      offset = match.end()
  
    chunks.append([path[offset:]])
  
    for prod in itertools.product(*chunks):
      yield "".join(prod)