@Override
  public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, final @NotNull ProcessingContext context) {
    final String text = element.getText();
    String s = StringUtil.unquoteString(text);
    final PsiElement parent = element.getParent();

    if (parent instanceof XmlAttribute &&
        XmlUtil.SCHEMA_LOCATION_ATT.equals(((XmlAttribute)parent).getLocalName()) &&
        XmlUtil.XML_SCHEMA_INSTANCE_URI.equals(((XmlAttribute)parent).getNamespace())) {
      final List<PsiReference> refs = new ArrayList<>(2);
      final StringTokenizer tokenizer = new StringTokenizer(s);

      while(tokenizer.hasMoreElements()) {
        final String namespace = tokenizer.nextToken();
        int offset = text.indexOf(namespace);
        TextRange range = new TextRange(offset, offset + namespace.length());
        final URLReference urlReference = new URLReference(element, range, true) {
          @Override
          public boolean isSchemaLocation() {
            return true;
          }
        };
        refs.add(urlReference);
        if (!tokenizer.hasMoreElements()) break;
        String url = tokenizer.nextToken();

        offset = text.indexOf(url);
        refs.add(new DependentNSReference(element, new TextRange(offset,offset + url.length()), urlReference));
        if (!XmlUtil.isUrlText(url, element.getProject())) {
          ContainerUtil.addAll(refs, new FileReferenceSet(url, element, offset, this, false).getAllReferences());
        }
      }

      return refs.toArray(PsiReference.EMPTY_ARRAY);
    }

    PsiReference reference = getUrlReference(element, s);
    if (reference != null) return new PsiReference[] { reference };

    s = s.substring(XmlUtil.getPrefixLength(s));
    return new FileReferenceSet(s,element,text.indexOf(s), this,true).getAllReferences();
  }
@Override
  public PsiReference @NotNull [] getReferencesByElement(@NotNull PsiElement element, final @NotNull ProcessingContext context)