anchor.diff:  
   precompile_objects([]) -> [];
   precompile_objects([#image_object{type=line, points=[P0,P1]}=O|Os]) ->
  -    [O#image_object{intervals = ls_list2dict(line_ls(P0,P1))}|precompile_objects(Os)];
  +    [O#image_object{intervals = linespans_to_map(line_ls(P0,P1))}|precompile_objects(Os)];
   precompile_objects([#image_object{type=filled_triangle, points=[P0,P1,P2]}=O|Os]) ->
       [O#image_object{intervals = triangle_ls(P0,P1,P2)}|precompile_objects(Os)];
   precompile_objects([#image_object{type=polygon, points=Pts}=O|Os]) ->
  
positive.code:     end;    
  
  object_line_data(#image_object{type=line,
                                 intervals=Is, color=C}, Y, Z) ->
      case dict:find(Y, Is) of
  	{ok, Ls} -> [{Z, Xl, Xr, C}||{Xl,Xr} <- Ls];
  	_ -> []
      end;
  
  
negative.code: precompile_objects([#image_object{type=arc, points=[P0,P1], internals=D}=O|Os]) ->
      Es = egd_primitives:arc_to_edges(P0, P1, D),
      Ls = lists:foldl(fun ({Ep0, Ep1}, D0) ->
                               linespans_to_map(line_ls(Ep0, Ep1), D0)
                       end, #{}, Es),
      [O#image_object{type=line, intervals=Ls}|precompile_objects(Os)];
  precompile_objects([#image_object{type=text_horizontal,
                                    points=[P0], internals={Font,Text}}=O|Os]) ->
  