Index: lib/matcher.js
===================================================================
--- a/lib/matcher.js
+++ b/lib/matcher.js
@@ -52,95 +52,97 @@
  * Blacklist/whitelist filter matching
  */
 class Matcher
 {
   constructor()
   {
     /**
      * Lookup table for filters by their associated keyword
+     * @private
      * @type {Map.<string,(Filter|Set.<Filter>)>}
      */
-    this.filterByKeyword = new Map();
+    this._filterByKeyword = new Map();
   }
 
   /**
    * Removes all known filters
    */
   clear()
   {
-    this.filterByKeyword.clear();
+    this._filterByKeyword.clear();
   }
 
   /**
    * Adds a filter to the matcher
    * @param {RegExpFilter} filter
    */
   add(filter)
   {
     // Look for a suitable keyword
     let keyword = this.findKeyword(filter);
-    let set = this.filterByKeyword.get(keyword);
+    let set = this._filterByKeyword.get(keyword);
     if (typeof set == "undefined")
     {
-      this.filterByKeyword.set(keyword, filter);
+      this._filterByKeyword.set(keyword, filter);
     }
     else if (set.size == 1)
     {
       if (filter != set)
-        this.filterByKeyword.set(keyword, new Set([set, filter]));
+        this._filterByKeyword.set(keyword, new Set([set, filter]));
     }
     else
     {
       set.add(filter);
     }
   }
 
   /**
    * Removes a filter from the matcher
    * @param {RegExpFilter} filter
    */
   remove(filter)
   {
     let keyword = this.findKeyword(filter);
-    let set = this.filterByKeyword.get(keyword);
+    let set = this._filterByKeyword.get(keyword);
     if (typeof set == "undefined")
       return;
 
     if (set.size == 1)
     {
       if (filter == set)
-        this.filterByKeyword.delete(keyword);
+        this._filterByKeyword.delete(keyword);
     }
     else
     {
       set.delete(filter);
 
       if (set.size == 1)
-        this.filterByKeyword.set(keyword, [...set][0]);
+        this._filterByKeyword.set(keyword, [...set][0]);
     }
   }
 
   /**
    * Chooses a keyword to be associated with the filter
+   * @protected
    * @param {Filter} filter
    * @returns {string} keyword or an empty string if no keyword could be found
    */
   findKeyword(filter)
   {
     let result = "";
     let {pattern} = filter;
     if (pattern == null)
       return result;
 
     let candidates = pattern.toLowerCase().match(allKeywordsRegExp);
     if (!candidates)
       return result;
 
-    let hash = this.filterByKeyword;
+    let hash = this._filterByKeyword;
     let resultCount = 0xFFFFFF;
     let resultLength = 0;
     for (let i = 0, l = candidates.length; i < l; i++)
     {
       let candidate = candidates[i].substr(1);
       let filters = hash.get(candidate);
       let count = typeof filters != "undefined" ? filters.size : 0;
       if (count < resultCount ||
@@ -163,17 +165,17 @@
    * @param {boolean} [thirdParty]
    * @param {string} [sitekey]
    * @param {boolean} [specificOnly]
    * @returns {?Filter}
    */
   _checkEntryMatch(keyword, location, typeMask, docDomain, thirdParty, sitekey,
                    specificOnly)
   {
-    let set = this.filterByKeyword.get(keyword);
+    let set = this._filterByKeyword.get(keyword);
     if (typeof set == "undefined")
       return null;
 
     for (let filter of set)
     {
       if (specificOnly && filter.isGeneric() &&
           !(filter instanceof WhitelistFilter))
         continue;
