public void settingsChanged() {
   DaemonCodeAnalyzerSettings settings = DaemonCodeAnalyzerSettings.getInstance();
   if (settings.isCodeHighlightingChanged(myLastSettings)) {
     restart();
   }
   myLastSettings = (DaemonCodeAnalyzerSettings) settings.clone();
 }
 void repaintErrorStripeRenderer(Editor editor) {
   if (!myProject.isInitialized()) return;
   final Document document = editor.getDocument();
   final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(document);
   final EditorMarkupModel markup = (EditorMarkupModel) editor.getMarkupModel();
   markup.setErrorPanelPopupHandler(new DaemonEditorPopup(psiFile));
   markup.setErrorStripTooltipRendererProvider(new DaemonTooltipRendererProvider(myProject));
   markup.setMinMarkHeight(DaemonCodeAnalyzerSettings.getInstance().ERROR_STRIPE_MARK_MIN_HEIGHT);
   TrafficLightRenderer.setOrRefreshErrorStripeRenderer(markup, myProject, document, psiFile);
 }
  private boolean showAddImportHint(HighlightInfo info) {
    if (!DaemonCodeAnalyzerSettings.getInstance().isImportHintEnabled()) return false;
    if (!DaemonCodeAnalyzer.getInstance(myProject).isImportHintsEnabled(myFile)) return false;
    PsiElement element = myFile.findElementAt(info.startOffset);
    if (element == null || !element.isValid()) return false;

    final List<Pair<HighlightInfo.IntentionActionDescriptor, TextRange>> list =
        info.quickFixActionRanges;
    for (Pair<HighlightInfo.IntentionActionDescriptor, TextRange> pair : list) {
      final IntentionAction action = pair.getFirst().getAction();
      if (action instanceof HintAction && action.isAvailable(myProject, myEditor, myFile)) {
        return ((HintAction) action).showHint(myEditor);
      }
    }
    return false;
  }