} else { used++;
	protected Cacheable removeOne(Cacheable item) {		Cacheable old;		double rd = 0, minRd = -1;		int bucket = -1;		for (int i = 0; i < items.length; i++) {			old = items[i];			if (old == null) {				bucket = i;				break;			} else {				// calculate the reference density				rd =					old.getReferenceCount()						/ (double)(totalReferences - old.getTimestamp());				if ((minRd < 0 || rd < minRd) && old.allowUnload()) {					minRd = rd;					bucket = i;				}			}		}		old = items[bucket];		if (old != null) {			map.remove(old.getKey());			old.sync();		}		items[bucket] = item;		map.put(item.getKey(), item);		return old;	}