STATE_TRANSITIONS dictionary values are changed to strings.
Our assumption that Python's functions and methods are first class members
and using the method names directly as dictionary values doesn't seem to
work. So we are using method names as strings in STATE_TRANSITIONS
dictionary and getting the method object using getattr.
Coverage: code coverage testing for Python
Coverage.py is a Python module that measures code coverage during test execution.
It uses the code analysis tools and tracing hooks provided in the Python standard
library to determine which lines are executable, and which have been executed.
For more information, see http://nedbatchelder.com/code/modules/coverage.html