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 -> F([Mirror,Index,Args]);
               true -> F([Mirror,Index|Args])
  
positive.code:     {null, State};
  
  resolve({global, GVars,_Line}, #state{
          global=GlobalVars,
          vars=Vars}=State) ->
      lists:foreach(fun(GlobalVar) ->
          ephp_vars:ref(Vars, GlobalVar, GlobalVars, GlobalVar)
      end, GVars),
  
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}.
  