String (Object @NotNull [] a1, Object @NotNull [] a2, @NotNull Object original1) { int len1 = a1.length; int len2 = a2.length; if (len1 != len2) { return appendDetail(reportProblem(len1, len2), "which is length of " + Arrays.toString(a1) + " and " + Arrays.toString(a2)); } for (int i = 0; i < len1; i++) { String msg = checkValueEquivalence(a1[i], a2[i]); if (msg != null) { return whichIsField(original1 instanceof Map.Entry ? (i == 0 ? "key" : "value") : i + "th element", Arrays.toString(a1), Arrays.toString(a2), msg); } } return null; }