this ctor is internal and meant for the poor man's DI when testing. If you pass null by mistake you will get the assert from here which is the very first place this can be detected instead of getting an NRE from down deep which will be a bit harder to detect. Also it prevents from a bug where a public ctor passes a null value to this ctor. Since we own this ctor there is no need for param checking and the exception. Note that Debug.Assert is compiled out in the Release builds.