public static <T> T newInstanceOrNull(Class<? extends T> clazz, Object... params)  {
        Constructor<T> constructor = selectMatchingConstructor(clazz, params);
        if (constructor == null) {
            return null;
        }
        try {
            return constructor.newInstance(params);
        } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) {
            return null;
        }
    }
@Test(expected = AmbiguousInstantiationException.class)
    public void newInstanceOrNull_ambigiousConstructor() {
        InstantiationUtils.newInstanceOrNull(ClassWithTwoConstructors.class, "foo");
    }