anchor.diff:      %% build a tree from an input stream of indented text
       Text = get_all_lines(Stream),
       Lines = lists:map(fun(Line) -> parse_text_line(Line) end, Text),
  -    Nodes = build_nodes(Lines),
  -    ShowFunc(Nodes).
  +    spawn(?MODULE, build_nodes, [self(), roots, Lines]),
  +    receive
  +        {roots, Nodes} -> ShowFunc(Nodes)
  +    end.
   
   process_file(Filename, ShowFunc) ->
       case Filename of
  
positive.code:             [[First|ChildLines], SiblingLines]
      end.
  
  build_nodes([]) -> [];
  build_nodes(Lines) ->
      [First|Rest] = Lines,
      %% split off our children from the rest of the Lines.
      %% the first line with an indent =< ours is a sibling, not a child
      Criterion = fun(X) -> X#line.indent =< First#line.indent end,
      [ChildLines, SiblingLines] = split_list(Criterion, Rest),
      Children = build_nodes(ChildLines),
      Siblings = build_nodes(SiblingLines),
      Node = #node{content=First#line.content, children=Children},
      io:fwrite( "[~s]~n", [Node#node.content]),
      [Node|Siblings].
  
  %%--------------------------------------------------------------------------
  
  
negative.code: 
  -module(parse_indents).
  %% Need to export our output functions so we can invoke them.
  -export([main/1, show_path/1, show_indented/1, build_nodes/3]).
  %% Needs to be compiled so we can specify our output functions.
  -mode(compile).
  -record(line, {content, indent}).
  