@Contract(pure=true)
  public static <T> T @NotNull [] toObjectArray(@NotNull Class<T> aClass, Object @NotNull ... source) {
    T[] array = newArray(aClass, source.length);
    //noinspection SuspiciousSystemArraycopy
    System.arraycopy(source, 0, array, 0, array.length);
    return array;
  }
@Contract(pure=true)
  public static <T> T @NotNull [] toObjectArray(@NotNull Class<T> aClass, Object @NotNull ... source)