Raised error instead of emitting bogus code for unknown types.
Some minor software hygiene: instead of using hardcoded names of struct constructor in various places, just created a method which produces correct name.
Instead of emitting garbage, raise a proper exception.
Had accidentally been calling incorrect test from test atomically.
In recursive method forgot to have base case prevent execution of recursive case: infinite loop.
Emitted code to retry in case atomically fails: still need to test it.
Expanded atomically test to have nested atomic statements.