@Override
public void score(long user, @Nonnull MutableSparseVector scores){
LongSortedSet reqItems = scores.keyDomain();
if(cachedId == user && cachedScores != null) {
LongSortedSet cachedItems = cachedScores.keyDomain();
if(!cachedItems.containsAll(reqItems)) {
LongSortedSet diffItems = LongUtils.setDifference(reqItems, cachedItems);
SparseVector newCache = scorer.score(user, diffItems);
cachedScores = cachedScores.combineWith(newCache);
}
scores.set(cachedScores);