private Object createInstance(Constructor<?> constructor) {
        Class<?>[] parameterTypes = constructor.getParameterTypes();
        ParameterValuesFetcher parameterValuesFetcher = new ParameterValuesFetcher(container);
        Object[] parameterValues = parameterValuesFetcher.fetch(parameterTypes);

        try {
            return constructor.newInstance(parameterValues);
        } catch (InstantiationException e) {
            throw new CouldNotInitializeInstanceException();
        } catch (IllegalAccessException e) {
            throw new CouldNotInitializeInstanceException();
        } catch (InvocationTargetException e) {
            throw new CouldNotInitializeInstanceException();
        }
    }