/** Call this once to start handling callbacks. */
  protected void startMonitoring() {
    AdvancedIncQueryEngine engine = engineForMatcher();

    engine.addLifecycleListener(engineLifecycleListener);
    engine.addModelUpdateListener(listener);
    listener.notifyChanged(ChangeLevel.MATCHSET);
  }
  public PatternMatcherRootContent(RootContent parent, PatternMatcherRootContentKey key) {
    super(parent);
    this.children = new ContentChildren<PatternMatcherContent>();
    this.taintListener = new ContentEngineTaintListener();
    this.mapping = Maps.newHashMap();
    this.key = key;

    AdvancedIncQueryEngine engine = key.getEngine();
    if (engine == null) {
      key.setEngine(createEngine());
    }
    if (engine != null) {
      engine.addLifecycleListener(taintListener);
    }
  }