I think the right way to turn off modification would be to use Readonly<> generics, which would enforce the requirement during compilation. Unfortunatly, using them also means that the tests don't compile. Not sure how to get out of this.
And thanks for all the work.