anchor.diff:    Ast = erl_parse:abstract(NameSym, line_from(NameSym)),
     push_ast(Ast, State);
   %%------------------------------------------------------------------------------
  -%% defprotocol
  +%% extend_type
   %%------------------------------------------------------------------------------
   ast(#{op := extend_type} = Expr, State) ->
     #{ op    := extend_type
      , type  := #{type := TypeSym}
      , impls := Impls
      } = Expr,
  +
  +  ForceRemote = maps:get(force_remote_invoke, State),
   
     EmitProtocolFun =
       fun(#{type := ProtoSym} = Proto, StateAcc) ->
  
positive.code: 
  -spec initial_state() -> state().
  initial_state() ->
    #{ asts            => []
     , lexical_renames => clj_scope:new()
     }.
  
  %%------------------------------------------------------------------------------
  
negative.code:         StateAcc2
      end,
  
    State1 = lists:foldl( EmitProtocolFun
                        , State#{force_remote_invoke => true}
                        , maps:keys(Impls)
                        ),
  
    Ast = {atom, 0, undefined},
    push_ast(Ast, State1#{force_remote_invoke => ForceRemote});
  %%------------------------------------------------------------------------------
  %% fn, invoke, erl_fun
  %%------------------------------------------------------------------------------
  