public synchronized void release() {
		Thread currThread = Thread.currentThread();

		if (lockAquireCount > 0 && (owner == currThread)) {
			if (--lockAquireCount == 0) {
				owner = null;
				// This is purely to help sample profiling.  If notify() is called the
				// sampler can attribute time to the methods calling this erroneously.  For some reason
				// the visualvm sampler gets a sample more often when notify() is called.
				if (waiterCount != 0) {
					notify();
				}
			}
		}
		else {
			throw new IllegalStateException("Attempted to release an unowned lock: " + name);
		}
	}
Releases this lock, since you are through with the code that needed
synchronization.
Ghidra/Framework/Project/src/main/java/ghidra/util/Lock.java