Software and hardware systems are rapidly increasing in size and complexity. However, with increasing system complexity, the system design process becomes more error-prone. In particular, this is the case for concurrent systems, where subtle bugs may occur because of unexpected thread interleavings. Therefore, approaches to effectively find bugs are required. Currently, the most common approach...