@Override public boolean disposeIfUnreferenced() { if (this.getNumReferences() == 0) { assert !this.isDisposed() : String.format("%s has already been disposed.", this); logger.debug("Discarding {} for being unreferenced.", this); this.disposeUnreferenced(); this.isDisposed = true; return true; } return false; }