diff --git a/java/compiler/openapi/src/com/intellij/openapi/compiler/ExportableUserDataHolderBase.java b/java/compiler/openapi/src/com/intellij/openapi/compiler/ExportableUserDataHolderBase.java index 4f4e20d569dd..cde96c1bc706 100644 --- a/java/compiler/openapi/src/com/intellij/openapi/compiler/ExportableUserDataHolderBase.java +++ b/java/compiler/openapi/src/com/intellij/openapi/compiler/ExportableUserDataHolderBase.java @@ -17,37 +17,27 @@ package com.intellij.openapi.compiler; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.UserDataHolderBase; +import com.intellij.util.keyFMap.KeyFMap; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.HashMap; +import java.util.Map; public class ExportableUserDataHolderBase extends UserDataHolderBase implements ExportableUserDataHolder{ - private final Set myKeys = Collections.synchronizedSet(new HashSet()); - @NotNull public final Map exportUserData() { final Map result = new HashMap(); - synchronized (myKeys) { - for (Key k : myKeys) { - final Object data = getUserData(k); - if (data != null) { - result.put(k, data); - } + + KeyFMap map = getUserMap(); + Key[] keys = map.getKeys(); + + for (Key k : keys) { + final Object data = map.get(k); + if (data != null) { + result.put(k, data); } } + return result; } - - @Override - public final void putUserData(@NotNull Key key, @Nullable T value) { - if (value != null) { - myKeys.add(key); - } - else { - myKeys.remove(key); - } - super.putUserData(key, value); - } - }