@Contract(pure=true)
  public static char @NotNull [] insert(char @NotNull [] array, int index, char value) {
    char[] result = new char[array.length + 1];
    System.arraycopy(array, 0, result, 0, index);
    result[index] = value;
    System.arraycopy(array, index, result, index+1, array.length - index);
    return result;
  }
@Contract(pure=true)
  public static char @NotNull [] insert(char @NotNull [] array, int index, char value)