private static int getStartShift(final int @NotNull [] o1, final int @NotNull [] o2) {
    final int size = Math.min(o1.length, o2.length);
    int idx = 0;
    for (int i = 0; i < size; i++) {
      if (o1[i] != o2[i]) break;
      ++idx;
    }
    return idx;
  }
private static int getStartShift(final int @NotNull [] o1, final int @NotNull [] o2)