ReviewTreePublisher takes ReviewNode not review as argument to publish.
Changed getDescendents() on ReviewNode to flatten() as essentially that's what it was.