public Object generate(Class<?> type) {
        Constructor<?>[] constructors = type.getConstructors();
        for (Constructor<?> constructor : constructors) {
            if (!canCreate(constructor)) {
                continue;
            }

            return createInstance(constructor);
        }

        return null;
    }