@Nullable
  XmlElementDescriptor getDescriptor() {
    return CachedValuesManager.getCachedValue(myTag, new CachedValueProvider<>() {
      @Override
      public Result<XmlElementDescriptor> compute() {
        XmlElementDescriptor descriptor =
          RecursionManager.doPreventingRecursion(myTag, true, XmlTagDelegate.this::computeElementDescriptor);
        return Result.create(descriptor, PsiModificationTracker.MODIFICATION_COUNT, externalResourceModificationTracker(myTag));
      }

      @Override
      public String toString() {
        return "XmlTag.getDescriptor(" + myTag.getText() + ")";
      }
    });
  }
@Nullable
  XmlElementDescriptor getDescriptor()