T (@NotNull ComponentManager componentManager, @NotNull PluginDescriptor pluginDescriptor) { T result = instance; if (result != null) { return result; } //noinspection SynchronizeOnThis synchronized (this) { result = instance; if (result != null) { return result; } result = createInstance(componentManager, pluginDescriptor); instance = result; } return result; }