question: protected final boolean tryAcquire ( int acquires ) { final Thread current = Thread . currentThread ( ) ; int c = getState ( ) ; if ( c == 0 ) { if ( ! hasQueuedPredecessors ( ) && compareAndSetState ( 0 , acquires ) ) { setExclusiveOwnerThread ( current ) ; return true ; } } else if ( current == getExclusiveOwnerThread ( ) ) { int nextc = c + acquires ; if ( nextc < 0 ) throw new Error ( "Maximum lock count exceeded" ) ; setState ( nextc ) ; return true ; } return false ; }
target:  Fair version of tryAcquire.  Don't grant access unless recursive call or no waiters or is first.