anchor.diff:  		["*", "double", _, _] ->
   		    double_deref(Address);
   		_ ->
  -		    undef2
  +		    {error, unknown_builtin_type}
   	    end;
   	_ ->
  -	    undef3
  +	    {error, unknown_type}
       end.
   
   int_deref(Addr, Size, Sign) ->
  
positive.code: int_deref([], Acc) -> Acc;
  int_deref([E|T], Acc) ->
      int_deref(T, (Acc bsl 8) + E).
  
  -type addr() :: integer().
  -type ptr() :: {addr(), nonempty_string()}.
  
  -spec free(ptr()) -> 'ok'.
  free({Addr, _}) ->
  
negative.code:     end.
  
  %% pointer arithmetic
  -spec dereference(ptr()) -> ptr() | integer() | float() | list() | {string(), integer()} | {'error', reason()}.
  dereference(Pointer) ->
      {Address, ModuleType} = Pointer,
      [ModuleName, Type] = string:tokens(ModuleType, "."),
  