Allows for iteration over the ``KeyIndex`` values.

    This function is intended to be assigned to a newly created KeyIndex class. It enables iteration
    over the ``KeyIndex`` names and values. We don't use a mixin to avoid issues with YAML.

    Note:
        This isn't recursive like ``dataclasses.asdict(...)``. Generally, we don't want those recursive
        conversion properties. Plus, this approach is much faster.

def _key_index_iter(self) -> Iterator[Tuple[str, Any]]:
    """ Allows for iteration over the ``KeyIndex`` values.

    This function is intended to be assigned to a newly created KeyIndex class. It enables iteration
    over the ``KeyIndex`` names and values. We don't use a mixin to avoid issues with YAML.

    Note:
        This isn't recursive like ``dataclasses.asdict(...)``. Generally, we don't want those recursive
        conversion properties. Plus, this approach is much faster.
    """
    for k, v in vars(self).items():
        yield k, v