anchor.diff:          {ok, V} -> V;
           undef   ->
               case get_superobject(Obj) of
  -		{ ok, Superobj } ->
  -		    Superobj1 = set(Superobj, Field, Value),
  +                { ok, Superobj } ->
  +                    Superobj1 = set(Superobj, Field, Value),
                       Module:attr(Obj, set, super, Superobj1);
  -		undef ->
  -		    error(missing_attr_set, Field, Obj)
  -	    end
  +                undef ->
  +                    error(missing_attr_set, Field, Obj)
  +            end
       end.
   
   %%
  
positive.code: 
  %% TODO: voids take only ok as return?
  start_new(none=Resv, _) ->
      error_logger:format("can't instantiate ~p: class name is a reserved word", [Resv]),
      error;
  start_new(Class, Args) ->
      {ok, Pid} = gen_server:start_link(thrift_oop_server, {Class, Args}, []),
  
negative.code:         %% io:format("apply ~p ~p ~p~n", [M,F,A]),
          {ok, apply(M, F, A)}
      catch
          error:Kind when Kind == undef; Kind == function_clause ->
              case erlang:get_stacktrace() of
                  %% the first stack call should match MFA when `apply' fails because the function is undefined
                  %% they won't match if the function is currently running and an error happens in the middle
                  [MFA|_] -> undef;           % trapped successfully
                  ST ->
                      io:format("DONIT THE EXIT THING ~p~n", [Kind]),
                      exit({Kind, ST}) % some unrelated error, re-exit
              end
      end.
  
  get_superobject(Obj) ->
  