Enforce outdent on access modifiers.
Cleanup methods, move responsibility of changing state to transition.
Use more descriptive variable names.
Remove duplication from tests.