@Contract("null,_->!null;_,null->!null")
  private static String checkClassEquivalence(@Nullable Object existing, @Nullable Object fresh) {
    if (existing == null || fresh == null) {
      return reportProblem(existing, fresh);
    }
    Class<?> c1 = existing.getClass();
    Class<?> c2 = fresh.getClass();
    if (c1 != c2 && !objectsOfDifferentClassesCanStillBeEquivalent(existing, fresh)) {
      return whichIsField("class", existing, fresh, reportProblem(c1, c2));
    }
    return null;
  }
@Contract("null,_->!null;_,null->!null")
  private static String checkClassEquivalence(@Nullable Object existing, @Nullable Object fresh)