anchor.diff:           diff/2,        %% Diff between data objects
            equal/2,       %% Check if data objects are equal
            is_subset/2,   %% Check if first data object is a subset of the second
  -         is_disjoint/2  %% Check if data objects have no keys in common
  +         is_disjoint/2 %% Check if data objects have no keys in common
  +         %match/2        %% Check if a data object matches a match object
            ]).
   
   
   %% Basic Configuration
   %% ===================================================================
  -
  -%-define(ALLOW_MAPS,true). % Allow maps module to be used (requires Erlang >= 17.0)
  - 
  -%-define(DECODE_TO_MAPS,true). % Decode raw json to a map
  +%
  +-define(ALLOW_MAPS,true). % Allow maps module to be used (requires Erlang >= 17.0)
  +
  +-define(DECODE_TO_MAPS,true). % Decode raw json to a map
   
   -define(DEFAULT_TYPE, proplist). % proplist | map | json
   
  +-define(JSON_POWER_MODE,false). % Use binary parsing, when implemented, to handle raw binary data
  +
   % Testing available when maps are enabled.
  --define(TEST,true). % testing, to be removed and managed by rebar
  +%-define(TEST,true). % testing, to be removed and managed by rebar
   
   -define(NO_JSON_LIB,throw(no_json_library_found)).
   
   -define(NOT_SUPPORTED,throw(not_yet_supported)).
   
   -define(BAD_VERSION,throw(json_imem_disabled)).
  +
  +%-define(TEMP_ALLOW_MATCH,true).
   
   
   %% Json Decoding & Encoding Library Configuration
  
positive.code:                 [],
                  DataObject);
  filter(Fun,DataObject) when is_map(DataObject) ->
      map:fold(fun(K,V,In) ->
                      case Fun(K,V) of
                          true -> maps:put(K,V,In);
                          false -> In
  
negative.code:                 #{},
                  Keys);
  include(Keys,DataObject) ->
      %binary_include(Keys,DataObject).
      ?TO_JSON(include(Keys,?FROM_JSON(DataObject))).
  -else.
  include(Keys,DataObject) when is_list(DataObject) -> 
  