DeserializingReference<?> ref = idToReference.get(id);
if (ref != null) {
if (ref.getClazz().equals(classModel)) {
return (Reference)ref;
} else {
throw new AssertionError("reference already made to instance with a different class");
}
}
if (classModel.getDeclaration().getAbstract()) {
throw new AssertionError("class is abstract: " + classModel);
}
ref = new DeserializingReference<Instance>(reified$Instance, this, id, classModel, (Reference)null);
idToReference.put(id, ref);
return (Reference)ref;
}