diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml
index 5304aaf5469b..1ed5227cb612 100644
--- a/platform/platform-resources/src/META-INF/LangExtensions.xml
+++ b/platform/platform-resources/src/META-INF/LangExtensions.xml
@@ -135,6 +135,9 @@
+
+
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java
new file mode 100644
index 000000000000..ba5f89b3911f
--- /dev/null
+++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java
@@ -0,0 +1,20 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.openapi.roots.impl;
+
+import com.intellij.openapi.module.ModifiableModuleModel;
+import com.intellij.openapi.roots.ModifiableRootModel;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+public class ModifiableModelCommitter {
+ public static void multiCommit(@NotNull ModifiableRootModel[] rootModels, @NotNull ModifiableModuleModel moduleModel) {
+ multiCommit(Arrays.asList(rootModels), moduleModel);
+ }
+
+ public static void multiCommit(@NotNull Collection extends ModifiableRootModel> rootModels,
+ @NotNull ModifiableModuleModel moduleModel) {
+ ModifiableModelCommitterService.getInstance().multiCommit(rootModels, moduleModel);
+ }
+}
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java
new file mode 100644
index 000000000000..0f65fa3dfa11
--- /dev/null
+++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterService.java
@@ -0,0 +1,19 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.openapi.roots.impl;
+
+import com.intellij.openapi.components.ServiceManager;
+import com.intellij.openapi.module.ModifiableModuleModel;
+import com.intellij.openapi.roots.ModifiableRootModel;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collection;
+
+@ApiStatus.Internal
+public interface ModifiableModelCommitterService {
+ void multiCommit(@NotNull Collection extends ModifiableRootModel> rootModels, @NotNull ModifiableModuleModel moduleModel);
+
+ static ModifiableModelCommitterService getInstance() {
+ return ServiceManager.getService(ModifiableModelCommitterService.class);
+ }
+}
diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java
index 9935e04a92c4..e12fb2c245f5 100644
--- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java
+++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitterServiceImpl.java
@@ -13,18 +13,17 @@ import com.intellij.util.graph.CachingSemiGraph;
import com.intellij.util.graph.DFSTBuilder;
import com.intellij.util.graph.GraphGenerator;
import com.intellij.util.graph.InboundSemiGraph;
+import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import java.util.*;
-public class ModifiableModelCommitter {
+@ApiStatus.Internal
+public class ModifiableModelCommitterServiceImpl implements ModifiableModelCommitterService {
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.module.impl.ModifiableModelCommitter");
- public static void multiCommit(@NotNull ModifiableRootModel[] rootModels, @NotNull ModifiableModuleModel moduleModel) {
- multiCommit(Arrays.asList(rootModels), moduleModel);
- }
-
- public static void multiCommit(@NotNull Collection extends ModifiableRootModel> rootModels, @NotNull ModifiableModuleModel moduleModel) {
+ @Override
+ public void multiCommit(@NotNull Collection extends ModifiableRootModel> rootModels, @NotNull ModifiableModuleModel moduleModel) {
ApplicationManager.getApplication().assertWriteAccessAllowed();
final List modelsToCommit = getSortedChangedModels(rootModels, moduleModel);