String (@NotNull CachedValueBase.Data<?> existing, @NotNull CachedValueBase.Data<?> fresh) { Object[] deps1 = existing.getDependencies(); Object[] deps2 = fresh.getDependencies(); Object eValue = existing.get(); Object fValue = fresh.get(); if (deps1.length != deps2.length) { String msg = reportProblem(deps1.length, deps2.length); msg = appendDetail(msg, "which is length of CachedValue dependencies: " + Arrays.toString(deps1) + " and " + Arrays.toString(deps2)); msg = appendDetail(msg, "where values are " + objAndClass(eValue) + " and " + objAndClass(fValue)); return msg; } return checkValueEquivalence(eValue, fValue); }