todo why don't we add this to ArrayForest? We could have a method indexOfCached() which would consult the cache;
todo | the cache would be invalidated on any forest update; also could be "smart" (invalidate only indices after the point of change)
todo Or: merge with IndexedForest