anchor.diff:    run_specialized_handlers_inner(T, Options, FullAST).
   
   
  -translate_ast_item([], Acc) -> compact_ast(Acc, []);
  +translate_ast_item([], Acc) -> lists:reverse(Acc);
   translate_ast_item([newline | T], Acc) ->
     translate_ast_item(T, Acc);
   translate_ast_item([{var,_} = Var | T], Acc) ->
     translate_ast_item(T, [Var | Acc]);
  -translate_ast_item([[$< | _] = String | [Next | _] = T], Acc)
  -when is_list(Next) ->
  -  translate_ast_item(T, [String | Acc]);
  -translate_ast_item([String | [Next | _] = T], Acc)
  -when is_list(String), Next =/= newline ->
  -  translate_ast_item(T, [" ", String | Acc]);
  -translate_ast_item([String, newline | [Next| _] = T], Acc)
  -when is_list(String), is_list(Next) ->
  -  translate_ast_item(T, [" ", String | Acc]);
  -translate_ast_item([String | T], Acc) when is_list(String) ->
  -  translate_ast_item(T, [String | Acc]);
  -translate_ast_item([{_Name,_Type,_Attributes,[_|_] = Children} = Tag, Str | T], Acc)
  -when is_list(Str) ->
  -  Delim = case lists:last(Children) of
  -    newline -> "";
  -    _ -> " " % whitespace
  -  end,
  -  translate_ast_item(T, [Str, Delim, translate_ast_item([Tag], []) | Acc]);
   % In case a special one still remains, remove ID and pretend it's normal
   translate_ast_item([{{Name,_ID},Type,Attributes,Children} | T], Acc) ->
     translate_ast_item([{Name, Type, Attributes, Children} | T], Acc);
  
positive.code:   Template = translate_ast_item(AST2, []),
    zml_render:render(Template,
      proplists:get_value(data, Options2, fake)).
  
  % compile_string(Str, Options) ->
  %   do_compile(fun zml_tokenizer:tokenize_string/1, Str, Options).
  
  %% do_compile(Tokenizer, Input, Options) ->
  %%   Tokens = Tokenizer(Input),
  %%   Options2 = other_options(Options),
  %%   AST = zml_hand_parser:parse(Tokens, Options2),
  %%   AST2 = run_specialized_handlers(AST, Options2),
  %%   Template = translate_ast_item(AST2, []),
  %%   zml_render:render(Template,
  %%     proplists:get_value(data, Options2, fake)).
  
  other_options(Options) ->
    case ?OPT_ENV(zml_zss_libs) of
  
negative.code:   {ok, Bin} = file:read_file(InFile),
    compile_string(binary_to_list(Bin), Options2).
  
  compile_stream(Stream) -> compile_stream(Stream, []).
  
  compile_stream(Stream, Options) ->
    Str = io:get_chars(Stream, "", 1024000),
    compile_string(Str, Options).
  
  compile_string(Str) -> compile_string(Str, []).
  
  