code: @Override
      public void pin(Object key)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "pin", key);
  
          Bucket bucket = getOrCreateBucketForKey(key); // d739870
  
          int pinCount;
          synchronized (bucket) {
              Element element = bucket.findByKey(key);
  
              if (element == null) {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      Tr.exit(tc, "pin - throw NoSuchObjectException"); // d173022.12
                  throw new NoSuchObjectException(key);
              }
  
              element.pinned++;
              pinCount = element.pinned;
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(tc, "pin:" + pinCount);
      }
docs: Pin the object associated with the specified key; pinning an object
  in the cache ensures that the object will not be cast-out during any
  cache trimming operations. Objects may be pinned more than once,
  and calls to <code>pin()</code> should be symmetric with calls to
  <code>unpin()</code>. <p>
  
  @param key key of the object to pin.
  
  @exception NoSuchObjectException if there is no object in the cache
  associated with the specified key.
  <p>
  @see Cache#pinElement
  @see Cache#unpin