Straightforward imperative programming, usually
paired with state encapsulated within an object,
is used where it provides the most intuitive solution.
For example, tests are written in an imperative style,
first describing the situation under test, then listing
the invariants that the test must match, then advancing
the clock or inserting events as necessary for the test.