void (@NotNull PsiMethod method) { if (INVOKE.methodMatches(method)) { check(method); } if (method.getReturnType() instanceof PsiClassType) { PsiParameterList list = method.getParameterList(); if (list.getParametersCount() == 3) { PsiParameter[] parameters = list.getParameters(); if (EntryStream.zip(parameters, HANDLER_ARGUMENT_TYPES).allMatch((p, t) -> TypeUtils.typeEquals(t, p.getType())) && SyntaxTraverser.psiTraverser(holder.getFile()).filter(PsiMethodReferenceExpression.class) .filter(ref -> ref.isReferenceTo(method) && TypeUtils.typeEquals(HANDLER_CLASS, ref.getFunctionalInterfaceType())) .first() != null) { check(method); } } } }