final Constructor<T> constructor = getNewConstructor(clazz);
try {
return constructor.newInstance();
} catch (InvocationTargetException e) {
final InvalidClassException ice = new InvalidClassException(clazz.getName(), "Constructor threw an exception");
ice.initCause(e);
throw ice;
} catch (IllegalAccessException e) {
throw new InvalidClassException(clazz.getName(), "Illegal access exception occurred accessing the constructor: " + String.valueOf(e));
} catch (InstantiationException e) {
throw new InvalidClassException(clazz.getName(), "Instantiation exception: " + String.valueOf(e));