@SafeVarargs
    @SuppressWarnings("all")
    public static <T> T[] concatV2(Class<T> clazz, T[]... arrays) {
        T[] seed = (T[]) Array.newInstance(clazz, 0);
        if (arrays == null) {
            return seed;
        }
        for (T[] array : arrays) {
            if (array != null) {
                seed = concat(seed, array);
            }
        }
        return seed;
    }
@ SafeVarargs @ SuppressWarnings ( "all" ) public static < T > T [ ] concatV2 ( Class < T > clazz , T [ ] ... arrays ) { T [ ] seed = ( T [ ] ) Array . newInstance ( clazz , 0 ) ; if ( arrays == null ) { return seed ; } for ( T [ ] array : arrays ) { if ( array != null ) { seed = concat ( seed , array ) ; } } return seed ; }
@param clazz  the type of array element
@param arrays array of arrays, nullable.
@param <T>    the parametrized type
@return A new array concated with all the given arrays.