private static String checkCachedValueData(@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);
  }
private static String checkCachedValueData(@NotNull CachedValueBase.Data<?> existing, @NotNull CachedValueBase.Data<?> fresh)