Constructor<?> constructor = clazz.getConstructor(IValueFactory.class);
instance = constructor.newInstance(vf);
instanceCache.put(clazz, instance);
return instance;
} catch (IllegalArgumentException e) {
throw new ImplementationError(e.getMessage(), e);
} catch (InstantiationException e) {
throw new ImplementationError(e.getMessage(), e);
} catch (IllegalAccessException e) {
throw new ImplementationError(e.getMessage(), e);
} catch (InvocationTargetException e) {
throw new ImplementationError(e.getMessage(), e);
} catch (SecurityException e) {
throw new ImplementationError(e.getMessage(), e);
} catch (NoSuchMethodException e) {
throw new ImplementationError(e.getMessage(), e);
}
}