Constructing compact models of concurrent Java programs | Synapse