anchor.diff:      Ls.
   
   -spec rename_vars(Rename, [label()], block_map()) -> block_map() when
  -      Rename :: [{var_name(),value()}] | #{var_name():=value()}.
  +      Rename :: rename_map() | rename_proplist().
   
   rename_vars(Rename, From, Blocks) when is_list(Rename) ->
       rename_vars(maps:from_list(Rename), From, Blocks);
  
positive.code:     [V];
  used(_) -> [].
  
  %%%
  %%% Internal functions.
  %%%
  
negative.code: fold_instrs_rpo(Fun, From, Acc0, Blocks) ->
      Top = rpo(From, Blocks),
      fold_instrs_rpo_1(Top, Fun, Blocks, Acc0).
  
  %% Like mapfold_instrs_rpo but at the block level to support lookahead and
  %% scope-dependent transformations.
  -spec mapfold_blocks_rpo(Fun, From, Acc, Blocks) -> Result when
        Fun :: fun((label(), b_blk(), any()) -> {b_blk(), any()}),
        From :: [label()],
        Acc :: any(),
        Blocks :: block_map(),
        Result :: {block_map(), any()}.
  mapfold_blocks_rpo(Fun, From, Acc, Blocks) ->
      Successors = rpo(From, Blocks),
      foldl(fun(Lbl, A) ->
                    mapfold_blocks_rpo_1(Fun, Lbl, A)
            end, {Blocks, Acc}, Successors).
  
  mapfold_blocks_rpo_1(Fun, Lbl, {Blocks0, Acc0}) ->
      Block0 = maps:get(Lbl, Blocks0),
      {Block, Acc} = Fun(Lbl, Block0, Acc0),
      Blocks = maps:put(Lbl, Block, Blocks0),
      {Blocks, Acc}.
  
  -spec mapfold_instrs_rpo(Fun, From, Acc0, Blocks0) -> {Blocks,Acc} when
        Fun :: fun((b_blk()|terminator(), any()) -> any()),
  