private <T> T tryNewInstance(final Class<T> clazz, final Object ... args) throws NoDefaultConstructorException, TestException  {
        try{
            Class<?>[] argTypes = null; 
            if(args != null){
                argTypes = new Class<?>[args.length];
                for(int i = 0; i < args.length; i++){
                    argTypes[i] = args[i].getClass();
                }
            }
            return clazz.getDeclaredConstructor(argTypes).newInstance(args);
        } catch(final NoSuchMethodException ex) {
            // Not there.
            throw new NoDefaultConstructorException(clazz, ex);
        } catch(final IllegalAccessException ex) {
            // Probably private.
            throw new NoDefaultConstructorException(clazz, ex);

        } catch(final InstantiationException ex) {
            throw new TestException("Could not invoke defalut constructor for " + clazz, ex);
        } catch(final InvocationTargetException ex) {
            throw new TestException("Generic exception while invoking default constructor for " + clazz + ". See nested exception.", ex);
        }
    }