protected Object performRemove(CacheEntry e, InvocationContext ctx) { final Object removedValue = e.getValue(); notify(ctx, removedValue, e.getMetadata(), true); e.setRemoved(true); e.setValid(false); e.setChanged(true); if (valueMatcher != ValueMatcher.MATCH_EXPECTED_OR_NEW) { return isConditional() ? true : removedValue; } else { // Return the expected value when retrying return isConditional() ? true : value; } }