values = new Object[]{Integer.valueOf(size), descriptor};
}
if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
try {
constructor = (Constructor)AccessController.doPrivileged(new PrivilegedGetConstructorFor(identityMapClass, parameters, false));
IdentityMap map = (IdentityMap)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, values));
if ((descriptor != null) && (descriptor.getCachePolicy().getCacheInterceptorClass() != null)) {
constructor = (Constructor)AccessController.doPrivileged(new PrivilegedGetConstructorFor(descriptor.getCacheInterceptorClass(), new Class[] { IdentityMap.class, AbstractSession.class }, false));
Object params[] = new Object[]{map, this.session};
map = (IdentityMap)AccessController.doPrivileged(new PrivilegedInvokeConstructor(constructor, params));
}
return map;
} catch (PrivilegedActionException exception) {
throw DescriptorException.invalidIdentityMap(descriptor, exception.getException());
}