@Deprecated
  public static List<MutationReplay> getMutationsFromWALEntry(AdminProtos.WALEntry entry,
    ExtendedCellScanner cells, Pair<WALKey, WALEdit> logEntry, Durability durability)
    throws IOException {
    if (entry == null) {
      // return an empty array
      return Collections.emptyList();
    }

    long replaySeqId = (entry.getKey().hasOrigSequenceNumber())
      ? entry.getKey().getOrigSequenceNumber()
      : entry.getKey().getLogSequenceNumber();
    int count = entry.getAssociatedCellCount();
    List<MutationReplay> mutations = new ArrayList<>();
    ExtendedCell previousCell = null;
    Mutation m = null;
    WALKeyImpl key = null;
    WALEdit val = null;
    if (logEntry != null) {
      val = new WALEdit();
    }

    for (int i = 0; i < count; i++) {
      // Throw index out of bounds if our cell count is off
      if (!cells.advance()) {
        throw new ArrayIndexOutOfBoundsException("Expected=" + count + ", index=" + i);
      }
      ExtendedCell cell = cells.current();
      if (val != null) {
        WALEditInternalHelper.addExtendedCell(val, cell);
      }

      boolean isNewRowOrType =
        previousCell == null || previousCell.getTypeByte() != cell.getTypeByte()
          || !CellUtil.matchingRows(previousCell, cell);
      if (isNewRowOrType) {
        // Create new mutation
        if (CellUtil.isDelete(cell)) {
          m = new Delete(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());
          // Deletes don't have nonces.
          mutations.add(new MutationReplay(ClientProtos.MutationProto.MutationType.DELETE, m,
            HConstants.NO_NONCE, HConstants.NO_NONCE));
        } else {
          m = new Put(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength());
          // Puts might come from increment or append, thus we need nonces.
          long nonceGroup =
            entry.getKey().hasNonceGroup() ? entry.getKey().getNonceGroup() : HConstants.NO_NONCE;
          long nonce = entry.getKey().hasNonce() ? entry.getKey().getNonce() : HConstants.NO_NONCE;
          mutations.add(
            new MutationReplay(ClientProtos.MutationProto.MutationType.PUT, m, nonceGroup, nonce));
        }
      }
      if (CellUtil.isDelete(cell)) {
        ((Delete) m).add(cell);
      } else {
        ((Put) m).add(cell);
      }
      m.setDurability(durability);
      previousCell = cell;
    }

    // reconstruct WALKey
    if (logEntry != null) {
      org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.WALKey walKeyProto =
        entry.getKey();
      List<UUID> clusterIds = new ArrayList<>(walKeyProto.getClusterIdsCount());
      for (HBaseProtos.UUID uuid : entry.getKey().getClusterIdsList()) {
        clusterIds.add(new UUID(uuid.getMostSigBits(), uuid.getLeastSigBits()));
      }
      key = new WALKeyImpl(walKeyProto.getEncodedRegionName().toByteArray(),
        TableName.valueOf(walKeyProto.getTableName().toByteArray()), replaySeqId,
        walKeyProto.getWriteTime(), clusterIds, walKeyProto.getNonceGroup(), walKeyProto.getNonce(),
        null);
      logEntry.setFirst(key);
      logEntry.setSecond(val);
    }

    return mutations;
  }
This function is used to construct mutations from a WALEntry. It also reconstructs WALKey &amp;
WALEdit from the passed in WALEntry
@param logEntry pair of WALKey and WALEdit instance stores WALKey and WALEdit instances
                extracted from the passed in WALEntry.
@return list of Pair&lt;MutationType, Mutation&gt; to be replayed
@deprecated Since 3.0.0, will be removed in 4.0.0.
hbase-server/src/main/java/org/apache/hadoop/hbase/wal/WALSplitUtil.java