Notice that caching is useless in the contest of the engine. I mean, if I call .count_rupture in a worker and I decide that the source is big and that should be split and sent to different workers, the target workers will not share the cache of the original worker and will have to recompute everything anyway. But since the large sources are few, we can tolerate this (small) inefficiency.