### Question:
ArrayHelper { public static <T> T[] concat(T[] first, T... second) { int firstLength = first.length; int secondLength = second.length; @SuppressWarnings("unchecked") T[] result = (T[]) Array.newInstance( first.getClass().getComponentType(), firstLength + secondLength ); System.arraycopy( first, 0, result, 0, firstLength ); System.arraycopy( second, 0, result, firstLength, secondLength ); return result; }  static String[] toStringArray(Collection coll); static String[][] to2DStringArray(Collection coll); static String[] slice(String[] strings, int begin, int length); static int indexOf(T[] array, T element); static boolean contains(Object[] array, Object element); static T[] concat(T[] first, T... second); static T[] concat(List<T[]> arrays); static T[] concat(T firstElement, T... array); static final int[] EMPTY_INT_ARRAY; static final String[] EMPTY_STRING_ARRAY; static final Object[] EMPTY_OBJECT_ARRAY; }### Answer:
@Test public void testConcat() { Object[] first = new String[]{ "1", "2" }; Object[] second = new String[]{ "3" }; Object[] expResult = new String[]{ "1", "2", "3" }; Object[] result = ArrayHelper.concat( first, second ); assertArrayEquals( expResult, result ); }