What's the purpose of these flags? Dynamic and ReadOnly are off by default anyway. Also isn't inverting the bitmask going to turn on a bunch of bits which aren't registered flags now, but might become so later? It seems to me that we can just omit the flags argument.