I suggest writing a wrapper function for `(*ps = XXX)->accept(this)` as this expression is fairly unreadable.