protected static <S, T extends S> T[] convertArray(S[] elements, Class<T> aClass) {
        final T[] t = ArrayUtil.newArray(aClass, elements.length);
        //noinspection SuspiciousSystemArraycopy
        System.arraycopy(elements, 0, t, 0, elements.length);
        return t;
    }
protected static <S, T extends S> T[] convertArray(S[] elements, Class<T> aClass)