public void unlock() {
        if (log.isDebugEnabled()) {
            owner = null;
            position = null;
            log.debug(">>> Lock {} released at {}", this.hashCode(),
                    Thread.currentThread().getStackTrace()[2]);
        }

        semaphore.release();
    }
@Test(enabled = false)
    public void unlock() {
        ProtectedCode pc = new ProtectedCode();
        // Spawn many threads and start them all, all executing the same protected code
        // Not entirely sure if this models the main use case or idea.
        int i = 0;
        while (i < numberOfThreads) {
            (new Thread(pc)).start();
            i++;
        }
        try {
            // To ensure that all threads have started
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // All threads did start
        Assert.assertEquals(counter, numberOfThreads);
    }