@lru_cache(maxsize=None)
def get_link_dep_subdirs(self):
    result = OrderedSet()
    for i in self.link_targets:
        result.add(i.get_subdir())
        result.update(i.get_link_dep_subdirs())
    return result
@lru_cache(maxsize=None)
def get_link_dep_subdirs(self):
    result = OrderedSet()
    for i in self.link_targets:
        result.add(i.get_subdir())
        result.update(i.get_link_dep_subdirs())
    return result