I kept it public so it can be called from tests. For performance reasons it should not be called in production. 

Maybe in a future iteration we can add a setting that a test case can include (debug.routingnodes.assert.counts), and if and only if this is set, in each of the mutator operations below `assert assertShardStats()`. Then it can be made private.