code: int decrementRefCount() {
          final String methodName = "decrementRefCount(): ";
          final int count = refCount.decrementAndGet();
          if (count < 0) {
              // more destroys than creates
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  Tr.debug(tc, methodName + " refCount < 0 - too many calls to destroy/cleaup", new Throwable("stack trace"));
              }
          }
          if (count == 0) {
              cleanup();
          }
          return count;
      }
docs: The ClassLoadingService implementation should call this method when it's
  destroyThreadContextClassLoader method is called. Each call to destroyTCCL
  should decrement this ref counter. When there are no more references to this
  TCCL, it will be cleaned up, which effectively invalidates it.
  
  Users of the ClassLoadingService should understand that:<ol>
  <li>They are responsible for destroying every instance of a TCCL that they
  create via the CLS.createTCCL method, and,
  <li>If they still have references to the TCCL instance after destroying all
  instances they created, they will be holding on to a stale (leaked) classloader,
  which can result in OOM situations.</li>
  </ol>
  
  @return the new current count of references to this TCCL instance