anchor.diff:  -export([init/1]).
   
   % parser and compiler interface
  --export([fold/1, fold/3, parsetree/1, is_reserved/1]).
  +-export([pt_to_string/1, foldtd/3, parsetree/1, is_reserved/1]).
   
   -ifdef(TEST).
   % eunit helper function
  
positive.code: %%                                  COMPILER
  %%-----------------------------------------------------------------------------
  
  -spec fold(tuple()) -> {error, term()} | binary().
  fold(PTree) -> fold(PTree, fun(_,_) -> null_fun end, null_fun).
  
  -spec fold(tuple(), fun(), term()) -> {error, term()} | binary().
  fold(PTree, Fun, Ctx) when is_function(Fun, 2) ->
      try foldi(PTree, Fun, Ctx) of
          {error,_} = Error -> Error;
          {Sql, null_fun = Ctx} -> list_to_binary(string:strip(Sql));
  
negative.code:         {ok, {[{ParseTree,_}|_], Tokens}} -> 
              if ShowParseTree ->
          	    io:format(user, "~p~n", [ParseTree]),
                  NSql = pt_to_string(ParseTree),
                  io:format(user,  "~n> ~s~n", [NSql]),
                  {ok, {[{NPTree,_}|_], NToks}} = sqlparse:parsetree(NSql),
                  try
                      ParseTree = NPTree
  