void (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(); } } }