@Override
  public void visitRegExpProperty(RegExpProperty property) {
    final ASTNode category = property.getCategoryNode();
    if (category == null) {
      return;
    }
    if (!myLanguageHosts.supportsPropertySyntax(property)) {
      myHolder.newAnnotation(HighlightSeverity.ERROR,
                             RegExpBundle.message("error.property.escape.sequences.are.not.supported.in.this.regex.dialect")).create();
      return;
    }
    final String propertyName = category.getText();
    final ASTNode next = category.getTreeNext();
    if (next == null || next.getElementType() != RegExpTT.EQ) {
      if(!myLanguageHosts.isValidCategory(category.getPsi(), propertyName)) {
        myHolder.newAnnotation(HighlightSeverity.ERROR, RegExpBundle.message("error.unknown.character.category")).range(category)
        .highlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL).create();
      }
    }
    else {
      if(!myLanguageHosts.isValidPropertyName(category.getPsi(), propertyName)) {
        myHolder.newAnnotation(HighlightSeverity.ERROR, RegExpBundle.message("error.unknown.property.name")).range(category)
        .highlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL).create();
        return;
      }
      final ASTNode valueNode = property.getValueNode();
      if (valueNode != null && !myLanguageHosts.isValidPropertyValue(category.getPsi(), propertyName, valueNode.getText())) {
        myHolder.newAnnotation(HighlightSeverity.ERROR, RegExpBundle.message("error.unknown.property.value")).range(valueNode)
        .highlightType(ProblemHighlightType.LIKE_UNKNOWN_SYMBOL).create();
      }
    }
  }
@Override
  public void visitRegExpProperty(RegExpProperty property)