public static void writeEntry(ByteSlot slot, ProcedureWALEntry.Type type, Procedure<?> proc,
    Procedure<?>[] subprocs) throws IOException {
    final ProcedureWALEntry.Builder builder = ProcedureWALEntry.newBuilder();
    builder.setType(type);
    builder.addProcedure(ProcedureUtil.convertToProtoProcedure(proc));
    if (subprocs != null) {
      for (int i = 0; i < subprocs.length; ++i) {
        builder.addProcedure(ProcedureUtil.convertToProtoProcedure(subprocs[i]));
      }
    }
    builder.build().writeDelimitedTo(slot);
  }
Load all the procedures in these ProcedureWALFiles, and rebuild the given {@code tracker} if
needed, i.e, the {@code tracker} is a partial one.
<p/>
The method in the give {@code loader} will be called at the end after we load all the
procedures and construct the hierarchy.
<p/>
And we will call the {@link ProcedureStoreTracker#resetModified()} method for the given
{@code tracker} before returning, as it will be used to track the next proc wal file's modified
procedures.
hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormat.java