anchor.diff:          Error -> Error
       end.
   
  -
   -spec remove_duplicates(L) -> list() when
       L :: list().
   remove_duplicates(L) ->
  
positive.code: fetch(Url0, Options, Rules) ->
      Url = normalize_url(Url0),
      UrlContext = url_context(Url),
      case get_page_body(Url) of
          {Length, Body} when is_integer(Length) ->
              Fetched = parse_body(Body, Rules, Options),
              [
  
negative.code:     normalize_url(<<?DEFAULT_PROTOCOL/binary, "//", Url/binary>>).
  
  
  -spec get_page_body(Url, UrlContext) -> {integer(), list()} | {error, Reason} when
      Url :: binary(),
      UrlContext :: binary(),
      Reason :: any().
  get_page_body(Url, UrlContext) ->
      HTTPOptions = [{autoredirect, false}, {timeout, timer:seconds(?TIMEOUT)}],
      case httpc:request(get, {binary_to_list(Url), []}, HTTPOptions, []) of
          {ok, {{_Version, 301, _StatusMsg}, Headers, _Body}} ->
              handle_moved(Headers, UrlContext);
          {ok, {{_Version, 302, _StatusMsg}, Headers, _Body}} ->
              handle_moved(Headers, UrlContext);
          RequestResult -> handle_request_result(RequestResult)
      end.
  
  handle_moved(Headers, UrlContext) ->
      TestAbsoluteUrl = <<"^http">>,
      Location = proplists:get_value("location", Headers),
      AbsoluteUrl = case re:run(Location, TestAbsoluteUrl) of
          {match, _} -> Location;
          nomatch ->
              {BaseUrl, _} = UrlContext,
              binary_to_list(BaseUrl) ++ Location
      end,
      Result = httpc:request(get, {AbsoluteUrl, []}, [{autoredirect, false}, {timeout, timer:seconds(?TIMEOUT)}], []),
      handle_request_result(Result).
  
  handle_request_result(RequestResult) ->
      case RequestResult of
          {ok, {_, Headers, Body}} ->
          	case content_length(Headers) of
  				0 ->
  