So you make a class with a distinct name and then you add support for the converse of what the name is implying? Why not make a subclass with a different name where you allow this? Or better, the reverse, first derive the whateverkeyyouwantbutfixitpleasewhenyouinit and then FrozenDictKnownKeys from that?