def METHOD_NAME(grdecl_stream: TextIO) -> Iterator[Tuple[str, List[str]]]:
    words: List[str] = []
    keyword = None
    nonlocal keywords
    keywords = [_until_space(keyword) for keyword in keywords]
    line = grdecl_stream.readline()
    while line:
        if keyword is None:
            snubbed = line[0 : min(8, len(_until_space(line)))]
            matched_keywords = [kw for kw in keywords if kw == snubbed]
            if matched_keywords:
                keyword = matched_keywords[0]
        else:
            for word in _split_line(line):
                if word == "/":
                    yield (keyword, words)
                    keyword = None
                    words = []
                    break
                words += _interpret_token(word)
        line = grdecl_stream.readline()
    if keyword is not None:
        raise ValueError(f"Reached end of stream while reading {keyword}")