Typestate: A programming language concept for enhancing software reliability | Synapse