private void close() {
    /*
     * We are counting on our ReentrantLock throwing an exception if the current thread
     * does not hold the lock. In that case dropReference() will not be called. This
     * prevents ill-behaved clients (clients that call close() too many times) from
     * corrupting our reference count.
     */
    lock.unlock();
    dropReference();
  }
The destructor. Called by the resource owner to undo the work of the constructor.
geode-core/src/main/java/org/apache/geode/internal/net/ByteBufferVendor.java