public void init(ProjectPaneTree tree) {
    myTree = tree;

    myGenStatusVisitor.setUpdater(myUpdater).setExecutor(myExecutor);
    myErrorVisitor.setUpdater(myUpdater).setExecutor(myExecutor);
    myModifiedMarker.setUpdater(myUpdater).setExecutor(myExecutor);

    myTree.addTreeNodeListener(myNodeListener);

    MessageBusConnection connection = myTree.getProject().getMessageBus().connect();
    Disposer.register(myTree, connection);
    connection.subscribe(DumbService.DUMB_MODE, new MyDumbModeListener());
  }
 public void dispose() {
   myTree.removeTreeNodeListener(myNodeListener);
   if (myModuleListeners != null) {
     myModuleListeners.stopListening();
     myModuleListeners = null;
   }
   if (myModelListeners != null) {
     myModelListeners.stopListening();
     myModelListeners = null;
   }
   myGenStatusVisitor.setUpdater(null).setExecutor(null);
   myErrorVisitor.setUpdater(null).setExecutor(null);
   myModifiedMarker.setUpdater(null).setExecutor(null);
 }