  We describe a generative approach that enables concurrent typestate-oriented
programming in Java and other mainstream languages. The approach allows
programmers to implement objects exposing a state-sensitive interface using a
high-level synchronization abstraction that synchronizes methods with the
states of the receiver object in which those methods have an effect. An
external tool takes care of generating all the boilerplate code that implements
the synchronization logic. Behavioral types are used to specify object
protocols. The tool integrates protocol conformance verification with the
synchronization logic so that protocol violations are promptly detected at
runtime.
