@Override public void visitXmlAttributeValue(@NotNull XmlAttributeValue value) {
    final XmlAttributeValue another = (XmlAttributeValue)myMatchingVisitor.getElement();
    final PsiElement pattern = XmlMatchUtil.getElementToMatch(value);
    final PsiElement match = XmlMatchUtil.getElementToMatch(another);
    if (!(pattern instanceof XmlToken)) {
      myMatchingVisitor.setResult(myMatchingVisitor.matchOptionally(pattern, match));
    }
    else {
      final String text = value.getValue();

      if (myMatchingVisitor.getMatchContext().getPattern().isTypedVar(text)) {
        final SubstitutionHandler handler = (SubstitutionHandler)myMatchingVisitor.getMatchContext().getPattern().getHandler(text);
        final String text2 = another.getText();
        final int offset = StringUtil.isQuotedString(text2) ? 1 : 0;
        myMatchingVisitor.setResult(handler.handle(another, offset, text2.length() - offset, myMatchingVisitor.getMatchContext()));
      } else {
        myMatchingVisitor.setResult(myMatchingVisitor.matchText(text, another.getValue()));
      }
    }
  }
@Override public void visitXmlAttributeValue(@NotNull XmlAttributeValue value)