message: fix non-determinism
  Summary: The order in which we insert invoke-instructions that split blocks matter for block-ordering. This was non-deterministic, and is being made deterministic here (because the CFGMutation processes insertions according to instruction sequence order).
diff: @@ -1342,6 +1342,7 @@ class RootMethodReducer {
  live_range::MoveAwareChains chains(cfg);
  return chains.get_def_use_chains();
  });
  + cfg::CFGMutation mutation(cfg);
  for (auto insn : inlinables) {
  auto [callee, type] = resolve_inlinable(m_method_summaries, insn);
  auto it = m_types.find(type);
  @@ -1355,7 +1356,8 @@ class RootMethodReducer {
  // a special marker invocation instruction so that we can later find
  // the originally matched anchors again. This instruction will get
  // removed later.
  - if (iteration > 0 && !has_incomplete_marker((*du_chains)[insn])) {
  + if (!has_incomplete_marker((*du_chains)[insn])) {
  + if (iteration > 0) {
  continue;
  }
  auto insn_it = cfg.find_insn(insn);
  @@ -1368,7 +1370,8 @@ class RootMethodReducer {
  ->set_method(m_incomplete_marker_method)
  ->set_srcs_size(1)
  ->set_src(0, move_result_it->insn->dest());
  - cfg.insert_after(move_result_it, invoke_insn);
  + mutation.insert_after(move_result_it, {invoke_insn});
  + }
  }
  if (!callee) {
  continue;
  @@ -1376,6 +1379,7 @@ class RootMethodReducer {
  invokes_to_inline.insert(insn);
  m_inlined_methods[callee].insert(type);
  }
  + mutation.flush();
  if (invokes_to_inline.empty()) {
  return true;
  }
  