public static <T> Constructor<T> getDeclaredConstructor(
            Class<T> c, Class<?>... parameterTypes) {
        try {
            final Constructor<T> con = c.getDeclaredConstructor(parameterTypes);
            makeAccessible(con);
            return con;
        } catch (NoSuchMethodException ex) {
            throw new RuntimeException(ex);
        }
    }