}
@Override
public Long2ObjectMap<ValueSpecification> getValueSpecifications(LongCollection identifiers) {
final Long2ObjectMap<ValueSpecification> specifications = new Long2ObjectOpenHashMap<ValueSpecification>();
LongList cacheMisses = null;
for (long identifier : identifiers) {
final Long key = identifier;
final ValueSpecification specification = _identifierToSpecification.get(key);
if (specification != null) {
specifications.put(identifier, specification);
} else {
if (cacheMisses == null) {
cacheMisses = new LongArrayList(identifiers.size());
}
cacheMisses.add(identifier);
}
}
if (cacheMisses != null) {
if (cacheMisses.size() == 1) {
final long identifier = cacheMisses.getLong(0);
final ValueSpecification specification = getUnderlying().getValueSpecification(identifier);
final Long key = identifier;
_specificationToIdentifier.put(specification, key);
_identifierToSpecification.put(key, specification);
specifications.put(identifier, specification);