static <T> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
    return Arrays.copyOfRange(source, from, to, (Class<? extends T[]>) arrayOfType.getClass());
  }
static <T> T[] copy(Object[] source, int from, int to, T[] arrayOfType) {
    return Arrays.copyOfRange(source, from, to, (Class<? extends T[]>) arrayOfType.getClass());
  }
static < T > T [ ] copy ( Object [ ] source , int from , int to , T [ ] arrayOfType ) { return Arrays . copyOfRange ( source , from , to , ( Class < ? extends T [ ] > ) arrayOfType . getClass ( ) ) ; }
Equivalent to Arrays.copyOfRange(source, from, to, arrayOfType.getClass()).
Equivalent to Arrays . copyOfRange ( source from to arrayOfType . getClass () ) .