Internally, an FSM has a set of gates and either a set of state
definitions or a set of interconnected FSMs. An FSM containing states is
simply an "FSM". An FSM containing other FSMs is a "block FSM".
In either case, this internal structure is opaque to the outside. It is
not possible for one FSM to get the current state or any other information
from another FSM, except by sending and receiving signals. This makes
applications created in SAFIRE more stable during development, because the
internal implementation of an FSM can be changed without affecting the FSMs
connected to it.
