anchor.diff:      process_stream(standard_io, ShowFunc);
   process_file(Filename, ShowFunc) ->
       case file:open(Filename, [read]) of
  -        {ok, Handle} -> process_stream(Handle, ShowFunc);
  +        {ok, Handle} ->
  +            process_stream(Handle, ShowFunc),
  +            file:close(Handle);
           {error, Reason} -> io:fwrite("Error opening file ~s: ~s~n", [Filename, Reason])
       end.
   
   %%--------------------------------------------------------------------------
   
   main([]) ->
  -    io:format("usage: ~s.erl [[:module]:display_function] <filenames...>~n", [?MODULE]),
  +    io:format("usage: ~s.erl [-f <display_function>] <filenames...>~n", [?MODULE]),
       halt(1);
   main(["-f", FuncName|Filenames]) ->
       Func = list_to_atom(FuncName),
  
positive.code: show_indented(Nodes) -> show_indented(Nodes, 0).
  show_indented(Nodes, Indent) ->
      %% print out the contents of a tree of nodes, indented appropriately
      Show = fun(Node) ->
          io:fwrite("~s~n", [string:chars($\s, Indent, Node#node.content)]),
          show_indented(Node#node.children, Indent + 4)
      end,
      lists:map(Show, Nodes).
  
  get_node_path(Node, "") -> Node#node.content;
  get_node_path(Node, ParentPath) ->
      Content = Node#node.content,
      string:join([ParentPath, Content], ":").
  
  show_path(Nodes) -> show_path(Nodes, "").
  show_path(Nodes, ParentPath) ->
      %% print out the leaves of a tree with their parent path (root::parent::child::leaf)
      Show = fun(Node) ->
          NodePath = get_node_path(Node, ParentPath),
          case Node#node.children of
              [] -> io:fwrite("~s~n", [NodePath]);
              Children -> show_path(Children, NodePath)
          end
      end,
      lists:map(Show, Nodes).
  
negative.code: get_all_lines(Stream) -> get_all_lines(Stream, []).
  get_all_lines(Stream, Lines) ->
      case io:get_line(Stream, "") of
          eof -> lists:reverse(Lines);
          Line -> get_all_lines(Stream, [Line|Lines])
      end.
  
  process_stream(Stream, ShowFunc) ->
  