code: public synchronized boolean canBeDeallocate() {
      if (shareCounter > 0 || isBeingDeallocate) {
        return false;
      }
      if (!inCache.get()) {
        isBeingDeallocate = true;
        return true;
      }
      return false;
    }
docs: Asked if can be deallocate (is not shared in other statement and not in cache) Set deallocate
  flag to true if so.
  
  @return true if can be deallocate