anchor.diff:              {A,NewState} = resolve(Arg,S),
               {Args ++ [{Arg,A}], NewState}
           end, {[], State}, RawArgs),
  -        {ok, Mirror} = start_mirror(NState#state{global=Vars}),
  +        {ok, Mirror} = start_mirror(NState#state{global=Ref}),
           Value = if
               PackArgs -> erlang:apply(M,F,[Mirror,Index,Args]);
               true -> erlang:apply(M,F,[Mirror,Index|Args])
  
positive.code:         {ok, NewVars} = ephp_vars:start_link(),
          {ok, SubContext} = start_mirror(NState#state{
              vars=NewVars,
              global=Vars,
              active_fun=Fun,
              active_class=undefined,
              active_fun_args=length(Args)}),
  
negative.code:         shutdown = Shutdown
      }).
  
  start_link(#state{ref=undefined}=State) ->
      start_link(State#state{ref=make_ref()});
  
  start_link(#state{ref=Ref, global=Ref}) when is_reference(Ref) ->
      throw({error, ecyclerefs}); 
  
  start_link(#state{ref=Ref}=State) when is_reference(Ref) ->
      {ok, Vars} = ephp_vars:start_link(),
      erlang:put(Ref, State#state{
          ref = Ref,
          vars = Vars
      }),
      {ok, Ref}.
  