def METHOD_NAME(self):
    """Recursively walks the component and flattens it into a list of
    values.
    """
    if self.contributes:
        for value in self.values:
            if isinstance(value, GroupingComponent):
                yield from value.METHOD_NAME()
            else:
                yield value