This can now be folded into the proposed "SetCurrentState" method (see below for details). And when that happens, we can simply remove the "private setter" of this property, this is meant to be read-only (although it is private, I'd much rather not having it and only deal with "this.currentState" internally in StateMachine class).