void (@Nullable Component c) { if (!SwingUtilities.isEventDispatchThread() && (c == null || c.isShowing())) { final Exception exception = new Exception(); StackTraceElement[] stackTrace = exception.getStackTrace(); if (isAllowedViolation(c, stackTrace)) return; String categoriesString = Registry.stringValue("non.edt.swing.report.categories"); List<String> categories = StringUtil.split(categoriesString, ","); if (shouldIgnoreStacktrace(categories, stackTrace)) return; LOG.warn("Access to realized (ever shown) UI components should be done only from the AWT event dispatch thread," + " revalidate(), invalidate() & repaint() is ok from any thread", exception); } }