@Contract(value = "null -> false", pure = true)
  default boolean matches(@Nullable PsiExpression expression) {
    expression = PsiUtil.skipParenthesizedExprDown(expression);
    return expression instanceof PsiMethodCallExpression && test((PsiMethodCallExpression)expression);
  }
@Contract(value = "null -> false", pure = true)
  default boolean matches(@Nullable PsiExpression expression)