private int addReference() throws IOException {
    int usages;
    do {
      usages = counter.get();
      if (usages == 0 || isDestructed.get()) {
        throwClosed();
      }
    } while (!counter.compareAndSet(usages, usages + 1));
    return usages + 1;
  }
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