anchor.diff:  %% Node modules.
   %% -------------------------------------------------------------------
   
  -setup_node_mods(#yaml_repr{options = Options} = Repr) ->
  -    Mods  = proplists:get_value(node_mods, Options, []) ++ ?DEFAULT_NODE_MODS,
  +setup_node_mods(Repr) ->
  +    Mods  = yaml_app:get_param(node_mods) ++ ?CORE_SCHEMA_MODS,
  +    Auto  = filter_autodetected_node_mods(Mods, []),
       Tags  = index_tags(Mods, []),
       Repr1 = Repr#yaml_repr{
  -      mods = Mods,
  +      mods = Auto,
         tags = Tags
       },
       return_new_fun(Repr1).
  +
  +filter_autodetected_node_mods([Mod | Rest], Auto) ->
  +    Auto1 = case erlang:function_exported(Mod, try_represent_token, 3) of
  +        true  -> [Mod | Auto];
  +        false -> Auto
  +    end,
  +    filter_autodetected_node_mods(Rest, Auto1);
  +filter_autodetected_node_mods([], Auto) ->
  +    lists:reverse(Auto).
   
   index_tags([Mod | Rest], Tags) ->
       try
  
positive.code:               text = "Invalid value for option \"simple_structs\": "
                "it must be a boolean\n"
              };
          {node_mods, _} ->
              Error#yaml_parser_error{
                text = "Invalid value for option \"node_mods\": "
                "it must be a list of module names (atoms)\n"
              };
          _ ->
              Error#yaml_parser_error{
                text = io_lib:flatten(io_lib:format("Unknown option \"~w\"~n",
  
negative.code:     file/2,
      next_chunk/3,
      next_chunk/2,
      last_chunk/2,
      get_pres_details/1,
      node_line/1,
      node_column/1
    ]).
  
  -define(CORE_SCHEMA_MODS, [
      yaml_node_null,
      yaml_node_bool,
      yaml_node_int,
      yaml_node_str,
      yaml_node_seq,
      yaml_node_map
  