'Iteratively analyze function features until a fixed point is reached.
:return: the "changes" dict
:rtype:  dict'

def _iteratively_analyze_function_features(self):

    changes = {'functions_do_not_return': set(), 'functions_return': set()}
    while True:
        new_changes = self._analyze_function_features()
        changes['functions_do_not_return'] |= set(new_changes['functions_do_not_return'])
        changes['functions_return'] |= set(new_changes['functions_return'])
        if ((not new_changes['functions_do_not_return']) and (not new_changes['functions_return'])):
            break
    return changes
