Единственное, что мне кажется странным в решении - раздавать this изнутри себя самого, если ты не builder и специально не заточен под мутацию.
здравое замечание. конкретно в этом случае объект хранит в себе данные, расчет которых делегирует (причем лениво) сторонним прототайп бинам. расчет одной части данных может быть основан на другой части данных, хранящихся в объекте, поэтому этим "расчетчикам" передается this целиком, чтобы они брали нужные себе данные.
конечно, можно переделать этот момент и вместо this передавать конкретные нужные куски данных в виде дтошек, и наверное я даже когда-нибудь доберусь до этого момента, но если это делать сейчас, то это выльется в дорогую переделку архитектуры, которая сама по себе (переделка) не связана с эвент-подсистемой.