diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java index a104f877606c..868a54e7a5c3 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/descriptors/RngNsDescriptor.java @@ -55,7 +55,7 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator { private final Map> myDescriptorsMap = Collections.synchronizedMap(new HashMap>()); - private static final Key> ROOT_KEY = Key.create("ROOT_DESCRIPTOR"); + private static final Key> ROOT_KEY = Key.create("ROOT_DESCRIPTOR"); private XmlFile myFile; private PsiElement myElement; @@ -100,15 +100,19 @@ public class RngNsDescriptor implements XmlNSDescriptorEx, Validator { } private XmlElementDescriptor findRootDescriptor(final XmlTag tag) { - return CachedValuesManager.getCachedValue(tag, ROOT_KEY, () -> { - final XmlElementDescriptor descr = findRootDescriptorInner(tag); - if (descr != null) { - return CachedValueProvider.Result.create(descr, descr.getDependences(), getDependences()); - } - else { - return CachedValueProvider.Result.create(null, getDependences()); - } - }); + return CachedValuesManager.getManager(tag.getProject()) + .getParameterizedCachedValue(tag, ROOT_KEY, new ParameterizedCachedValueProvider() { + @Override + public CachedValueProvider.Result compute(RngNsDescriptor o) { + final XmlElementDescriptor descr = o.findRootDescriptorInner(tag); + if (descr != null) { + return CachedValueProvider.Result.create(descr, descr.getDependences(), o.getDependences()); + } + else { + return CachedValueProvider.Result.create(null, o.getDependences()); + } + } + }, false, this); } private XmlElementDescriptor findRootDescriptorInner(XmlTag tag) {