Constructor.
Enqueue a desired goal state.
Relinquish the lock, allowing a transition to a different state.
These may be useful to access in stateFunc.
Represents a held lock. The lock is acquired automatically when a desired state is reached. To release the lock, call .release on the queue object.
A wrapper around a StateQueue which modifies its behavior, such that: 1. After a transition to a state completes, a temporary "lock" is obtained, which blocks any transitions while it is held; 2. Transition requests form a queue of arbitrary length.