@Override
  public @NonNls String toString() {
    String s = "HighlightInfo(" + startOffset + "," + endOffset + ")";
    if (getActualStartOffset() != startOffset || getActualEndOffset() != endOffset) {
      s += "; actual: (" + getActualStartOffset() + "," + getActualEndOffset() + ")";
    }
    if (highlighter != null) s += " text='" + getText() + "'";
    if (getDescription() != null) s += ", description='" + getDescription() + "'";
    s += "; severity=" + getSeverity();
    synchronized (this) {
      if (quickFixActionRanges != null) {
        s += "; quickFixes: " + StringUtil.join(
          quickFixActionRanges, q -> ReportingClassSubstitutor.getClassToReport(q.getFirst().myAction).getName(), ", ");
      }
    }
    if (gutterIconRenderer != null) {
      s += "; gutter: " + gutterIconRenderer;
    }
    if (toolId != null) {
      s += "; toolId: " + toolId;
    }
    if (forcedTextAttributesKey != null) {
      s += "; forcedTextAttributesKey: " + forcedTextAttributesKey;
    }
    return s;
  }
@Override
  public @NonNls String toString()