anchor.diff:  %% Defines & Records & Types
   %%----------------------------------------------------------------------------------------------------------------------
   
  --define(PARSE_ERROR, incorrect_format).
  --define(FILE_ERROR, file_not_found).
  +-define(PARSE_ERROR,        incorrect_format).
  +-define(FILE_ERROR,         file_not_found).
   -define(COND(Cond, TValue, FValue),
           case Cond of true -> TValue; false -> FValue end).
   
   -type key()  :: binary().
  --type tag()  :: {n,   key()}          |
  -                {'&', key()}          |
  -                {'#', key(), [tag()]} |
  -                {'^', key(), [tag()]} |
  -                {'>', key()}          |
  +-type tag()  :: {n,   key()}                              |
  +                {'&', key()}                              |
  +                {'#', key(), [tag()], Source :: binary()} |
  +                {'^', key(), [tag()]}                     |
                   binary().
  --type partial() :: {partial, {EndTag :: binary(), Rest :: binary(), [tag()]}}.
   
   -record(state,
           {
  -          dirname = <<>>     :: filename:filename_all(),
  +          dirname = <<>>     :: file:filename_all(),
             start   = <<"{{">> :: binary(),
             stop    = <<"}}">> :: binary()
           }).
  
positive.code: remove_space_from_tail_impl(_, Size) ->
      Size.
  
  %%----------------------------------------------------------------------------------------------------------------------
  %% Unit Tests
  %%----------------------------------------------------------------------------------------------------------------------
  
  -ifdef(TEST).
  
  -define(NT_S(X, Y), ?_assertEqual(#?MODULE{data=X}, ?MODULE:new(Y))).
  %% new_test generater (success case)
  -define(NT_F(X),    ?_assertError(_,                ?MODULE:new(X))).
  %% new_test generater (failure case)
  
  new_test_() ->
      [
       {"{{tag}}",     ?NT_S([<<"a">>, {n, <<"t">>}, <<"b">>],   <<"a{{t}}b">>)},
       {"{{ tag }}",   ?NT_S([<<>>, {n, <<"t">>}, <<>>],         <<"{{ t }}">>)},
  
negative.code:       ?NT_S([<<"a">>, <<"b{{n}}c">>, {n, <<"n">>}, <<"d">>, <<"e">>, {n, <<"m">>}, <<"f<<m>>g">>],
              <<"a{{=<< >>=}}b{{n}}c<<n>>d<<={{ }}=>>e{{m}}f<<m>>g">>)},
       {"{{=<< >>=}}<<#tag>><<{n}>><</tag>>",
        ?NT_S([<<>>, <<>>, {'#', <<"tag">>, [<<>>, {'&', <<"n">>}, <<>>], <<"<<{n}>>">>}, <<>>], <<"{{=<< >>=}}<<#tag>><<{n}>><</tag>>">>)},
  
       {"{{=<<  >>=}}<<n>>",      ?NT_S([<<>>, <<>>, {n, <<"n">>}, <<>>], <<"{{=<<  >>=}}<<n>>">>)},
       {"{{ = << >> = }}<<n>>",   ?NT_S([<<>>, <<>>, {n, <<"n">>}, <<>>], <<"{{ = << >> = }}<<n>>">>)},
  