а что за задача вообще решается?
Решается задача правки легаси малой кровью) Есть боттом навигейшн, который по какой то причине историчкески сделан на ресайклере. У него подсвечиваются табы, отвечающие за раздел. Но раздел это абстракция, на самом деле фрагменты хаотично (ну с некоторыми оговорками) лежат в стеке. Стеком заведует навигейшн фреймворк.
Задача в том, чтобы при переходе по фрагментам подсвечивать правильную табу. Уже есть обсервабл, который отдает класс фрагмента при переходе (был нужен для одной задачи). Поэтому я хочу в момент перехода (читай: эмита) анализировать стек до тех пор, пока не наткнусь на один из корневых фрагментов каждого таба. Я могу (и похоже придется сделать) мапу, в которой буду проверять через contains, но это не слишком автоматизированная штука.
Если бы переходы совершались только вперед - то достаточно было бы проверять только соответствует ли заэмиченный фрагмент одному из "корневых" фрагментов для каждой табы, но переходы могут совершаться и назад - например если человек с продукта провливается в корзину - он может нажать back и снова окажется в продукте, а это две разных табы