docs: @Override
      public Object remove(Object key, boolean dropRef)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "remove", new Object[] { key, new Boolean(dropRef) });
  
          Bucket bucket = getBucketForKey(key);
          Object object = null;
  
          if (bucket != null) // d739870
          {
              synchronized (bucket) {
                  Element element = bucket.removeByKey(key, dropRef);
                  object = element != null ? element.object : null;
              }
  
              if (object != null) {
                  synchronized (this) {
                      // ACK! This is going to be a choke point
                      numObjects--;
                  }
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(tc, "remove", object);
  
          return object;
      }