@Override
  public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context) {

    if (XmlSchemaTagsProcessor.PROCESSING_FLAG.get() != null || context.get(SUPPRESS) != null) {
      return PsiReference.EMPTY_ARRAY;
    }

    if (XmlHighlightVisitor.skipValidation(element)) {
      return PsiReference.EMPTY_ARRAY;
    }

    String unquotedValue = ElementManipulators.getValueText(element);
    if (!XmlUtil.isSimpleValue(unquotedValue, element)) {
      return PsiReference.EMPTY_ARRAY;
    }

    @SuppressWarnings("unchecked") final Object descriptor = getDescriptor((T)element);
    if (!(descriptor instanceof XmlEnumerationDescriptor enumerationDescriptor)) {
      return PsiReference.EMPTY_ARRAY;
    }

    @SuppressWarnings("unchecked") PsiElement host = getHost((T)element);
    if (host instanceof PsiLanguageInjectionHost && InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)host)) {
      return PsiReference.EMPTY_ARRAY;
    }

    if (enumerationDescriptor.isFixed() || enumerationDescriptor.isEnumerated((XmlElement)element)) {
      //noinspection unchecked
      return enumerationDescriptor.getValueReferences((XmlElement)element, unquotedValue);
    }
    else if (unquotedValue.equals(enumerationDescriptor.getDefaultValue())) {  // todo case insensitive
      return ContainerUtil.map2Array(enumerationDescriptor.getValueReferences((XmlElement)element, unquotedValue), PsiReference.class,
                                     reference -> PsiDelegateReference.createSoft(reference, true));
    }
    return PsiReference.EMPTY_ARRAY;
  }
@Override
  public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, @NotNull ProcessingContext context)