anchor.diff:      eof ->
         LN = ?LN - 1,
         Tokens2 = lists:reverse(lists:flatten(RTokens)),
  -      ExtraDedents = lists:map(fun(_) -> {dedent, LN} end,
  +      ExtraDedents = lists:map(fun(_) -> {dedent, LN, none} end,
           lists:seq(1,length(IndStack) - 1)),
  -      Tokens2 ++ ExtraDedents ++ [{end_of_file, LN}];
  +      Tokens2 ++ ExtraDedents ++ [{end_of_file, LN, none}];
       {error, Reason} ->
         erlang:error({input_zss_read_error, Reason});
       Line ->
  
positive.code: do_dedent(Dents, [H | _] = IStack, TokenAcc) when Dents == H ->
    {IStack, TokenAcc};
  do_dedent(Dents, [H | T], TokenAcc) when Dents < H ->
    do_dedent(Dents, T, [{dedent, ?LN} | TokenAcc]).
  
  
  line_tokens(Line, State) ->
    line_tokens(Line, none, [], [], State).
    %{[{general, Line}], State}.
  
  % Line is finished- move current-token to all, and return.
  % Reset in-attribute state
  line_tokens([], _, CurrTAcc, AllTAcc, _State) ->
    {?SFLUSH, {false}};
  
  % Escaped character.  Pops the escape char off current token, adds this
  
negative.code: 
  % Starting an attribute
  line_tokens([?T_ATTR_ST | T], _, [], AllTAcc, _State) ->
    %line_tokens(T, ?T_ATTR_ST, [], [{start_attrib, ?LN} | AllTAcc], {true});
    line_tokens(T, ?T_ATTR_ST, [], AllTAcc, {true});
  line_tokens([?T_ATTR_ST | T], $ , CurrTAcc, AllTAcc, State) ->
    %line_tokens(T, ?T_ATTR_ST, [], ?FLUSH({start_attrib, ?LN}), {true});
    line_tokens(T, ?T_ATTR_ST, [], ?SFLUSH, {true});
  
  % Parent separator
  line_tokens([?T_PAR_SEP | T], _, CurrTAcc, AllTAcc, {false} = State) ->
    %line_tokens(T, ?T_PAR_SEP, [], ?FLUSH({parent_sep, ?LN}), {false});
    line_tokens(T, ?T_PAR_SEP, [], ?SFLUSH, {false});
  
  % Whitespace.  Flush token.
  line_tokens([$\n | T], _, CurrTAcc, AllTAcc, State) ->
    line_tokens(T, $\n, [], ?SFLUSH, State);
  %line_tokens([H | T], _Last, CurrTAcc, AllTAcc, {false}) when
  %    ((H >= $\x{0009}) and (H =< $\x{000D}))
  %    or (H == $\x{0020}) or (H == $\x{00A0}) ->
  %  line_tokens(T, H, [], ?SFLUSH, {false});
  
  % Ignore consecutive spaces
  line_tokens([$  | T], $ , CurrTAcc, AllTAcc, State) ->
    line_tokens(T, $ , CurrTAcc, AllTAcc, State);
  line_tokens([$  | T], _, [], AllTAcc, State) ->
    line_tokens(T, $ , [], AllTAcc, State);
  
  line_tokens([H | T], _Last, CurrTAcc, AllTAcc, State) ->
    line_tokens(T, H, [H | CurrTAcc], AllTAcc, State).
  