/** Uninstall this reconciler from the editor */
  public void uninstall() {
    if (fPresenter != null) fPresenter.setCanceled(true);

    if (fEditor != null) {
      if (fEditor instanceof CompilationUnitEditor)
        ((CompilationUnitEditor) fEditor).removeReconcileListener(this);
      else fSourceViewer.removeTextInputListener(this);
      fEditor = null;
    }

    fSourceViewer = null;
    fSemanticHighlightings = null;
    fHighlightings = null;
    fPresenter = null;
  }
  /**
   * Install this reconciler on the given editor, presenter and highlightings.
   *
   * @param editor the editor
   * @param sourceViewer the source viewer
   * @param presenter the semantic highlighting presenter
   * @param semanticHighlightings the semantic highlightings
   * @param highlightings the highlightings
   */
  public void install(
      JavaEditor editor,
      ISourceViewer sourceViewer,
      SemanticHighlightingPresenter presenter,
      SemanticHighlighting[] semanticHighlightings,
      Highlighting[] highlightings) {
    fPresenter = presenter;
    fSemanticHighlightings = semanticHighlightings;
    fHighlightings = highlightings;

    fEditor = editor;
    fSourceViewer = sourceViewer;

    if (fEditor instanceof CompilationUnitEditor) {
      ((CompilationUnitEditor) fEditor).addReconcileListener(this);
    } else if (fEditor == null) {
      fSourceViewer.addTextInputListener(this);
      scheduleJob();
    }
  }