def METHOD_NAME(self):
    """
    Return the set of nodes calculated to be roots (i.e., those
    that have no incoming edges).
    This caches the roots calculated in a previous invocation.
    @rtype: C{set}
    """
    if not self.__roots:
        self.__roots = set()
        for n in self.__nodes:
            if n not in self.__reverse_map:
                self.__roots.add(n)
    return self.__roots