anchor.diff:  %% Binary custom filters
   expr_fun({Op, A, B}) when Op=='is_member';Op=='is_like';Op=='is_regexp_like';Op=='element';Op=='concat';Op=='is_key' ->
       binary_fun({Op, A, B});
  -expr_fun({Op, A, B}) when Op=='to_decimal';Op=='from_decimal';Op=='add_dt';Op=='add_ts' ->
  +expr_fun({Op, A, B}) when Op=='to_decimal';Op=='from_decimal';Op=='add_dt';Op=='add_ts';Op=='slice' ->
       binary_fun({Op, A, B});
   expr_fun({Op, A, B}) when Op=='json_arr_proj';Op=='json_obj_proj';Op=='json_value';Op=='json_diff' ->
       binary_fun({Op, A, B});
   expr_fun({Op, A, B}) ->
       ?UnimplementedException({"Unsupported expression operator", {Op, A, B}});
   %% Ternary custom filters
  -expr_fun({Op, A, B, C}) when Op=='remap';Op=='mfa' ->
  +expr_fun({Op, A, B, C}) when Op=='remap';Op=='mfa';Op=='slice' ->
       ternary_fun({Op, A, B, C});
   expr_fun({Op, A, B, C}) ->
       ?UnimplementedException({"Unsupported function arity 3", {Op, A, B, C}});
  
positive.code: binary_fun_bind_type1("json_value") ->          #bind{type=binstr,default=?nav};
  binary_fun_bind_type1("json_diff") ->           #bind{type=binstr,default=?nav};
  binary_fun_bind_type1("phash2") ->              #bind{type=term,default=?nav};
  binary_fun_bind_type1("map_get") ->             #bind{type=binstr,default=?nav};
  binary_fun_bind_type1("map_merge") ->           #bind{type=map,default= #{}};
  binary_fun_bind_type1("map_remove") ->          #bind{type=term,default=?nav};
  
negative.code:             , to_tuple, to_list, to_map, to_term, to_binterm, to_pid, from_binterm
              , to_decimal, from_decimal, to_timestamp, to_datetime, to_ipaddr
              , to_json, json_to_list, json_arr_proj, json_obj_proj, json_value, json_diff, md5
              , byte_size, bit_size, nth, sort, usort, reverse, last, remap, phash2, slice
              , map_size, map_get, map_merge, map_remove, map_with, map_without
              , '[]', '{}', ':', '#keys', '#key','#values','#value', '::'
              , mfa
  