void (@NotNull Inlay<?> inlay, int changeFlags) { if (myDocument.isInBulkUpdate() || myInlayModel.isInBatchMode()) return; if ((changeFlags & InlayModel.ChangeFlags.GUTTER_ICON_PROVIDER_CHANGED) != 0) updateGutterSize(); if (myDocument.isInEventsHandling() || (changeFlags & (InlayModel.ChangeFlags.WIDTH_CHANGED | InlayModel.ChangeFlags.HEIGHT_CHANGED)) == 0) { return; } validateSize(); int offset = inlay.getOffset(); Inlay.Placement placement = inlay.getPlacement(); if (placement == Inlay.Placement.INLINE) { repaint(offset, offset, false); } else if (placement == Inlay.Placement.AFTER_LINE_END) { int lineEndOffset = DocumentUtil.getLineEndOffset(offset, myDocument); repaint(lineEndOffset, lineEndOffset, false); } else { int visualLine = offsetToVisualLine(offset); int y = EditorUtil.getVisualLineAreaStartY(this, visualLine); repaintToScreenBottomStartingFrom(y); } }