diff --git a/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java b/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java index 0e1efed0ff06..8561e564eb4b 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/LoadingOrder.java @@ -56,8 +56,8 @@ public class LoadingOrder { @NonNls private final String myName; // for debug only private final boolean myFirst; private final boolean myLast; - private final Set myBefore = new HashSet(2); - private final Set myAfter = new HashSet(2); + private final Set myBefore = new LinkedHashSet(2); + private final Set myAfter = new LinkedHashSet(2); private LoadingOrder() { myName = "ANY"; @@ -123,11 +123,10 @@ public class LoadingOrder { public static void sort(@NotNull final List orderable) { // our graph is pretty sparse so do benefit from the fact - final Map map = ContainerUtil.newHashMap(); - final Map cachedMap = ContainerUtil.newHashMap(); - final Set first = ContainerUtil.newHashSet(1); - final Set hasBefore = ContainerUtil.newHashSet(orderable.size()); - + final Map map = ContainerUtil.newLinkedHashMap(); + final Map cachedMap = ContainerUtil.newLinkedHashMap(); + final Set first = new LinkedHashSet(1); + final Set hasBefore = new LinkedHashSet(orderable.size()); for (Orderable o : orderable) { String id = o.getOrderId(); if (StringUtil.isNotEmpty(id)) map.put(id, o);