boolean (PsiElement patternNode, PsiElement matchedNode, final @NotNull MatchContext matchContext) { if (patternNode == null || matchedNode == null || matchedNode.getClass() == patternNode.getClass()) { return myDelegate.match(patternNode, matchedNode, matchContext); } /*if (patternNode != null && matchedNode != null && patternNode.getClass() == matchedNode.getClass()) { //return myDelegate.match(patternNode, matchedNode, matchContext); }*/ final PsiElement newPatternNode = skipNodeIfNecessary(patternNode); matchedNode = skipNodeIfNecessary(matchedNode); if (newPatternNode != patternNode) { return matchContext.getPattern().getHandler(newPatternNode).match(newPatternNode, matchedNode, matchContext); } return myDelegate.match(patternNode, matchedNode, matchContext); }