> I wonder why not make runDetectionStrategy to be protected[detector]

I believe I tried this, but AFAIR ``protected[xxx]`` does not allow classes outside of package xxx to override the method. Anyhow, there is likely room for simplification.