private Map<String, MutationType> parseMutateInfo(byte[] mutateInfo) {
    Map<String, MutationType> mi = new HashMap<>();
    if (mutateInfo != null) {
      String mutateInfoStr = Bytes.toString(mutateInfo);
      String[] mutations = mutateInfoStr.split("#");
      for (String mutation : mutations) {
        if (mutation.isEmpty()) continue;
        Preconditions.checkArgument(mutation.contains(":"), "Invalid mutation info " + mutation);
        int p = mutation.indexOf(":");
        String column = mutation.substring(0, p);
        MutationType type = MutationType.valueOf(Integer.parseInt(mutation.substring(p + 1)));
        mi.put(column, type);
      }
    }
    return mi;
  }
Verifies the result from get or scan using the dataGenerator (that was presumably also used to
generate said result).
@param verifyValues               verify that values in the result make sense for row/cf/column
                                  combination
@param verifyCfAndColumnIntegrity verify that cf/column set in the result is complete. Note
                                  that to use this multiPut should be used, or verification has
                                  to happen after writes, otherwise there can be races.
@return true if the values of row result makes sense for row/cf/column combination and true if
        the cf/column set in the result is complete, false otherwise.
hbase-diagnostics/src/main/java/org/apache/hadoop/hbase/util/MultiThreadedAction.java