anchor.diff:      end.
   
   try_ebin_dirs([Ebin|Ebins]) ->
  -    case erl_prim_loader:read_file_info(Ebin) of
  -	{ok,#file_info{type=directory}} -> 
  -	    {ok,Ebin};
  -	_ ->
  -	    try_ebin_dirs(Ebins)
  +    case is_dir(Ebin) of
  +	true -> {ok,Ebin};
  +	false -> try_ebin_dirs(Ebins)
       end;
   try_ebin_dirs([]) ->
       error.
  
positive.code: do_check_path([], _PathChoice, _ArchiveExt, Acc) -> 
      {ok, lists:reverse(Acc)};
  do_check_path([Dir | Tail], PathChoice, ArchiveExt, Acc) ->
      case catch erl_prim_loader:read_file_info(Dir) of
  	{ok, #file_info{type=directory}} -> 
  	    do_check_path(Tail, PathChoice, ArchiveExt, [Dir | Acc]);
  	_ when PathChoice =:= strict ->
  	    %% Be strict. Only use dir as explicitly stated
  	    {error, bad_directory};
  	_ when PathChoice =:= relaxed ->
  	    %% Be relaxed
  	    case catch lists:reverse(filename:split(Dir)) of
  		{'EXIT', _} ->
  		    {error, bad_directory};
  		["ebin", App] ->
  		    Dir2 = filename:join([App ++ ArchiveExt, App, "ebin"]),
  		    case erl_prim_loader:read_file_info(Dir2) of
  			{ok, #file_info{type = directory}} ->
  			    do_check_path(Tail, PathChoice, ArchiveExt, [Dir2 | Acc]);
  			_ ->
  			    {error, bad_directory}
  		    end;    
  		["ebin", App, OptArchive | RevTop] ->
  
negative.code:     Dir = filename:append(BundleDir, Bundle),
      Ebin = filename:append(Dir, "ebin"),
      %% First try with /ebin
      case is_dir(Ebin) of
  	true ->
  	    make_path(BundleDir, Tail, [Ebin|Res]);
  	false ->
  	    %% Second try with archive
  	    Ext = archive_extension(),
  	    Base = filename:basename(Bundle, Ext),
  