private void bindMessageToAstNode( final PsiElement childByRole, final HighlightInfoType warning, final int offset, int length, final String localizedMessage, IntentionAction... quickFixActions) { if (childByRole != null) { final TextRange textRange = childByRole.getTextRange(); if (length == -1) length = textRange.getLength(); final int startOffset = textRange.getStartOffset() + offset; HighlightInfo highlightInfo = HighlightInfo.createHighlightInfo( warning, childByRole, startOffset, startOffset + length, localizedMessage, HighlightInfo.htmlEscapeToolTip(localizedMessage)); if (highlightInfo == null) { highlightInfo = HighlightInfo.createHighlightInfo( warning, new TextRange(startOffset, startOffset + length), localizedMessage, localizedMessage, NONEMPTY_TEXT_ATTRIBUTES); } for (final IntentionAction quickFixAction : quickFixActions) { if (quickFixAction == null) continue; QuickFixAction.registerQuickFixAction(highlightInfo, textRange, quickFixAction, null); } addToResults(highlightInfo); } }