The cases design are a little bit weird to me. When we use the term "state", the states should be mutual exclusive. For example, when setting the state to "normal" with `option.locked` equal true, is the state "locked" or "normal"? And if I set the state to "locked" and then set the state to "enabled", should `this.locked` be set to false?