code: public final void unlock(Object lockObject) {
          // Only unlock the bean instance if it is in a state where it can be
          // made eligible for use on other threads. For example, for CM, this
          // might be when no longer in a transaction; for BM, this might be
          // when not in a method, etc.
          if (eligibleForUnlock()) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "unlock(" + lockObject + ") : " + this +
                               ":waiters=" + ivThreadsWaiting +
                               ":ActiveOnThread=" + ivActiveOnThread);
              // Since the bean is eligible for use on other threads, notifying
              // all threads waiting on this bucket lock to check for bean
              // availability. All threads must be notified since there could
              // be some waiting threads that are looking for a different bean
              // in the same bucket.                                       F743-22462
              if (ivThreadsWaiting) {
                  lockObject.notifyAll();
                  ivThreadsWaiting = false;
              }
              ivActiveOnThread = null; // F743-22462.CR
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "unlock(" + lockObject + ") : " + this +
                               " : nothing to do for state " + StateStrs[state]);
          }
      }
docs: d650932