public function testMultipleSelfAcquiredLocksRequiresMultipleReleasesToCompletelyReleaseMutex(LockInterface $lockImplementor)
{
$mutex = new Mutex('forfiter', $lockImplementor);
$mutex->acquireLock(0);
// #1
$mutex->acquireLock(0);
// #2
$mutex->acquireLock(0);
// #3
$this->assertTrue($mutex->releaseLock());
// #2
$this->assertTrue($mutex->isAcquired());
$this->assertTrue($mutex->isLocked());
$this->assertTrue($mutex->releaseLock());
// #1
$this->assertTrue($mutex->isAcquired());
$this->assertTrue($mutex->isLocked());
$this->assertTrue($mutex->releaseLock());
// #0
$this->assertFalse($mutex->isAcquired());
$this->assertFalse($mutex->isLocked());
}