private DeletionTaskRecoveryInfo parseTaskProto(DeletionServiceDeleteTaskProto proto)
      throws IOException {
    int taskId = proto.getId();
    String user = proto.hasUser() ? proto.getUser() : null;
    Path subdir = null;
    List<Path> basePaths = null;
    if (proto.hasSubdir()) {
      subdir = new Path(proto.getSubdir());
    }
    List<String> basedirs = proto.getBasedirsList();
    if (basedirs != null && basedirs.size() > 0) {
      basePaths = new ArrayList<Path>(basedirs.size());
      for (String basedir : basedirs) {
        basePaths.add(new Path(basedir));
      }
    }

    FileDeletionTask task = new FileDeletionTask(taskId, this, user, subdir, basePaths);
    return new DeletionTaskRecoveryInfo(task, proto.getSuccessorIdsList(), proto.getDeletionTime());
  }