/// <summary>
  /// Restarts download of the in-progress or completed item with the specified URL, beginning at
  // the specified byte offset.
  /// </summary>
  /// <param name="url"></param>
  /// <param name="byteOffset"></param>
  public void restart(String url, long byteOffset) {
    // Locals
    DownloadRequest downloadRequest;
    DownloadInformation downloadInformation;

    // Get download information
    downloadRequest = _downloadQueue.getDownloadRequest(url);
    if (downloadRequest == null) {
      downloadInformation = _completedDownloadCatalog.getDownloadInformation(url);
      if (downloadInformation == null) {
        return;
      }

      downloadRequest = new DownloadRequest();
      downloadRequest.setUrl(downloadInformation.getUrl());
      downloadRequest.setName(downloadInformation.getName());
      downloadRequest.setLocale(downloadInformation.getLocale());
      downloadRequest.setOverrideStorageLocation(downloadInformation.getStorageLocation());
      downloadRequest.setDownloadPriority(downloadInformation.getDownloadPriority());
      downloadRequest.setOverridePermittedNetworkTypes(
          downloadInformation.getPermittedNetworkTypes());

      if (byteOffset == OFFSET_ZERO) {
        delete(downloadInformation.getUrl());
      } else {
        downloadRequest.setAvailableLength(byteOffset);
      }
    } else {
      downloadRequest = new DownloadRequest();
      downloadRequest.setUrl(downloadRequest.getUrl());
      downloadRequest.setName(downloadRequest.getName());
      downloadRequest.setLocale(downloadRequest.getLocale());
      downloadRequest.setOverrideStorageLocation(downloadRequest.getOverrideStorageLocation());
      downloadRequest.setDownloadPriority(downloadRequest.getDownloadPriority());
      downloadRequest.setOverridePermittedNetworkTypes(
          downloadRequest.getOverridePermittedNetworkTypes());
    }

    // Restart download information
    _downloadQueue.add(downloadRequest, _defaultStorageLocation, _permittedNetworkTypes);
  }