Index: lib/filterClasses.js
===================================================================
--- a/lib/filterClasses.js
+++ b/lib/filterClasses.js
@@ -55,23 +55,16 @@
  * Abstract base class for filters
  *
  * @param {string} text   string representation of the filter
  * @constructor
  */
 function Filter(text)
 {
   this.text = text;
-
-  /**
-   * Subscriptions to which this filter belongs.
-   * @type {(Subscription|Set.<Subscription>)?}
-   * @private
-   */
-  this._subscriptions = null;
 }
 exports.Filter = Filter;
 
 Filter.prototype =
 {
   /**
    * String representation of the filter
    * @type {string}
@@ -83,16 +76,40 @@
    * @type {string}
    */
   get type()
   {
     throw new Error("Please define filter type in the subclass");
   },
 
   /**
+   * Subscriptions to which this filter belongs.
+   * @type {(Subscription|Set.<Subscription>)?}
+   * @private
+   */
+  _subscriptions: null,
+
+  /**
+   * Whether the filter's subscriptions have already been added to the filter.
+   * @type {boolean}
+   * @package
+   */
+  get subscriptionsAdded()
+  {
+    return this.hasOwnProperty("_subscriptions");
+  },
+  set subscriptionsAdded(value)
+  {
+    // Once set to true, the cannot be set back to false even if all
+    // subscriptions are removed.
+    if (value)
+      this._subscriptions = this._subscriptions;
+  },
+
+  /**
    * Yields subscriptions to which the filter belongs.
    * @yields {Subscription}
    */
   *subscriptions()
   {
     if (this._subscriptions)
     {
       if (this._subscriptions instanceof Set)
