public <T extends RevObject> T get(ObjectId id, Class<T> type, ObjectDatabase db)
throws IllegalArgumentException {
final Cache<ObjectId, RevObject> cache = cacheProvider.get().get();
RevObject object;
try {
object = cache.get(id, new ValueLoader(id, db));
} catch (ExecutionException | UncheckedExecutionException e) {
Throwable cause = e.getCause();
Throwables.propagateIfInstanceOf(cause, IllegalArgumentException.class);