searchInPath(requestId, fileSystemPath, query) {
    fileSystemPath = fileURLToPath(fileSystemPath);
    const index = this._index.get(fileSystemPath);
    let result = [];
    query = query.toLowerCase();
    if (index && query.length === 0) {
      result = Array.from(new Set(index.values()));
    } else if (index && query.length > 2) {
      let resultSet = index.get(query.substring(0, 3)) || new Set();
      for (let i = 1; i < query.length - 2; ++i) {
        const trigram = query.substring(i, i + 3);
        const current = index.get(trigram) || new Set();
        const nextCurrent = new Set();
        for (const file of current) {
          if (resultSet.has(file))
            nextCurrent.add(file);
        }
        resultSet = nextCurrent;
      }
      result = Array.from(resultSet);
    }
    result = result.map(index => this._indexToFileName.get(index));
    result = result.map(result => pathToFileURL(result).toString());
    this._frontend.searchCompleted(requestId, fileSystemPath, result);
  }
@param {number} requestId
@param {string} fileSystemPath
@param {string} query