### Question:
ArrayUtil { public static <T> T[] concatArrays( T[] initial, T[]... additional ) { int length = initial.length; for ( T[] array : additional ) { length += array.length; } T[] result = Arrays.copyOf( initial, length ); int offset = initial.length; for ( T[] array : additional ) { System.arraycopy( array, 0, result, offset, array.length ); offset += array.length; } return result; } private  ArrayUtil(); @Deprecated static int hashCode( Object array ); @Deprecated static boolean equals( Object firstArray, Object otherArray ); @Deprecated static boolean equals( Object firstArray, Object otherArray, ArrayEquality equality ); @Deprecated static Object clone( Object array ); @Deprecated static int missing( T[] array, T[] contains ); @Deprecated static boolean containsAll( T[] array, T[] contains ); @Deprecated static boolean contains( T[] array, T contains ); @Deprecated static boolean contains( T[] array, int arrayLength, T contains ); @Deprecated static boolean nullSafeEquals( T first, T other ); @Deprecated static T[] union( T[] first, T[] other ); @Deprecated static boolean isEmpty( Object[] array ); @Deprecated static String join( T[] items, String delimiter ); @Deprecated static TO[] map( FROM[] from, Function<FROM,TO> transformer, Class<TO> toClass ); @Deprecated static T[] concat( T first, T... additional ); @Deprecated static T[] concat( T[] initial, T... additional ); static T[] concatArrays( T[] initial, T[]... additional ); @Deprecated @SafeVarargs static T[] array( T... varargs ); @Deprecated static T lastOf( T[] array ); @Deprecated static int indexOf( T[] array, T item ); @Deprecated static T[] without( T[] source, T... toRemove ); @Deprecated static void reverse( T[] array ); @Deprecated
    static final ArrayEquality DEFAULT_ARRAY_EQUALITY; @Deprecated
    static final ArrayEquality BOXING_AWARE_ARRAY_EQUALITY; }### Answer:
@Test void shouldConcatSeveralArrays() { Integer[] a = {0, 1, 2}; Integer[] b = {3, 4}; Integer[] c = {5, 6, 7, 8}; Integer[] result = ArrayUtil.concatArrays( a, b, c ); assertEquals( a.length + b.length + c.length, result.length ); for ( int i = 0; i < result.length; i++ ) { assertEquals( (Integer) i, result[i] ); } }