anchor.diff:        Args :: list(beam_ssa:argument()),
         I :: beam_ssa:terminator() | beam_ssa:b_set(),
         State :: #vvars{}.
  -vvars_assert_args(Args, I, #vvars{defined_vars=DefVars}=State) ->
  +vvars_assert_args(Args, I, #vvars{variables=Vars}=State) ->
       foreach(fun(#b_remote{mod=Mod,name=Name}) ->
                       vvars_assert_args([Mod,Name], I, State);
                  (#b_var{}=Var) ->
  -                    case gb_sets:is_member(Var, DefVars) of
  +                    case gb_sets:is_member(Var, Vars) of
                           true -> ok;
                           false -> throw({unknown_variable,Var,I})
                       end;
  
positive.code:       State :: #vvars{}.
  vvars_block(Id, State0) ->
      #{ Id := #b_blk{ is = Is, last = Terminator} } = State0#vvars.blocks,
      #{ Id := DefVars } = State0#vvars.branch_def_vars,
      validate_normalized(Terminator),
      State = State0#vvars{ defined_vars = DefVars },
      vvars_terminator(Terminator, Id, vvars_block_1(Is, Terminator, State)).
  
  validate_normalized(I) ->
  
negative.code: 
  format_instr(I) ->
      [$',beam_ssa_pp:format_instr(I),$'].
  
  format_vars(Vs) ->
      [$[, format_vars_1(Vs), $]].
  
  format_vars_1([V]) ->
      [beam_ssa_pp:format_var(V)];
  format_vars_1([V | Vs]) ->
      [beam_ssa_pp:format_var(V), $, | format_vars_1(Vs)];
  format_vars_1([]) ->
      [].
  
  format_var(V) ->
      beam_ssa_pp:format_var(V).
  