anchor.diff:  
   %% Return the first haXe value decoded from the input string.
   %% The string must contain at least one complete haXe value.
  -
  +%%
  +%% The second (optional) parameter indicates if caching should
  +%% be turned on. Caching is on by default, but it can be turned
  +%% off for performance and lower memory consumption depending
  +%% on the content of the messages.
   decode_string(CharList) ->
  -    {done, V, _} = decode(CharList ++ [eof]),
  +    decode_string(CharList, true).
  +decode_string(CharList, UseCache) ->
  +    {done, V, _} = decode(CharList ++ [eof], UseCache),
       V.
   
   %% Attempt to decode a haXe value from the input string
  
positive.code: 		  (array_end, {Chars1, Cache1}) -> 
  		      Arr = {array, lists:reverse(Elems)},
  		      Cache2 = append_new_elems(
  				 Cache1,
  				 [Arr | OrigCache]),
  		      Kv(Arr, {Chars1, Cache2});
  		  (T, C1) ->
  		      parse_array_tok(Elems, T, C1, OrigCache, Kv) 
  
negative.code:     %%
      %% If it sounds backwards, well, it is! :)
  
      parse_array([], {Chars, put_obj(placeholder, Cache)},
  		Cache, Kv).
  
  parse_array(Elems, C, OrigCache, Kv) ->
      get_token(C,
  