InspectionToolPresentation (@NotNull InspectionToolWrapper<?, ?> toolWrapper) { return myPresentationMap.computeIfAbsent(toolWrapper, __ -> { String presentationClass = toolWrapper.myEP == null ? null : toolWrapper.myEP.presentation; if (StringUtil.isEmpty(presentationClass)) { if (myProblemConsumer != null) { return new DelegatedInspectionToolPresentation(toolWrapper, this, myProblemConsumer); } presentationClass = DefaultInspectionToolPresentation.class.getName(); } try { InspectionEP extension = toolWrapper.getExtension(); ClassLoader extensionClassLoader = extension != null ? extension.getPluginDescriptor().getPluginClassLoader() : null; Constructor<?> constructor = Class.forName(presentationClass, true, extensionClassLoader != null ? extensionClassLoader : getClass().getClassLoader()) .getConstructor(InspectionToolWrapper.class, GlobalInspectionContextImpl.class); constructor.setAccessible(true); return (InspectionToolPresentation)constructor.newInstance(toolWrapper, this); } catch (Exception e) { LOG.error(e); throw new RuntimeException(e); } }); }