code: public Row resolve() throws DigestMismatchException
      {
          int replyCount = replies.size();
          if (logger.isDebugEnabled())
              logger.debug("resolving {} responses", replyCount);
          long start = System.nanoTime();
  
          ColumnFamily resolved;
          if (replyCount > 1)
          {
              List<ColumnFamily> versions = new ArrayList<>(replyCount);
              List<InetAddress> endpoints = new ArrayList<>(replyCount);
  
              for (MessageIn<ReadResponse> message : replies)
              {
                  ReadResponse response = message.payload;
                  ColumnFamily cf = response.row().cf;
                  assert !response.isDigestQuery() : "Received digest response to repair read from " + message.from;
                  versions.add(cf);
                  endpoints.add(message.from);
  
                  // compute maxLiveCount to prevent short reads -- see https://issues.apache.org/jira/browse/CASSANDRA-2643
                  int liveCount = cf == null ? 0 : filter.getLiveCount(cf, timestamp);
                  if (liveCount > maxLiveCount)
                      maxLiveCount = liveCount;
              }
  
              resolved = resolveSuperset(versions, timestamp);
              if (logger.isDebugEnabled())
                  logger.debug("versions merged");
  
              // send updates to any replica that was missing part of the full row
              // (resolved can be null even if versions doesn't have all nulls because of the call to removeDeleted in resolveSuperSet)
              if (resolved != null)
                  repairResults = scheduleRepairs(resolved, keyspaceName, key, versions, endpoints);
          }
          else
          {
              resolved = replies.iterator().next().payload.row().cf;
          }
  
          if (logger.isDebugEnabled())
              logger.debug("resolve: {} ms.", TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - start));
  
          return new Row(key, resolved);
      }
docs: /*
  This method handles the following scenario:
  
  there was a mismatch on the initial read, so we redid the digest requests
  as full data reads.  In this case we need to compute the most recent version
  of each column, and send diffs to out-of-date replicas.