Might make sense to separate the condition of setting-state-without-status into a separate conditional. My thinking is if the programmer tries to set state without status, this is a code mistake, so raising an exception seems more appropriate?