void (@NotNull PsiElement position, @NotNull Consumer<? super LookupElement> result) { final PsiMethodCallExpression methodCall = PsiTreeUtil.getParentOfType(position, PsiMethodCallExpression.class); if (methodCall != null) { final String methodName = methodCall.getMethodExpression().getReferenceName(); if (methodName != null && METHOD_HANDLE_FACTORY_NAMES.contains(methodName)) { final PsiExpression[] arguments = methodCall.getArgumentList().getExpressions(); final ReflectiveClass ownerClass = arguments.length != 0 ? getReflectiveClass(arguments[0]) : null; if (ownerClass != null) { switch (methodName) { case FIND_CONSTRUCTOR -> addConstructorSignatures(ownerClass, position, result); case FIND_VIRTUAL, FIND_STATIC, FIND_SPECIAL -> { final String name = arguments.length > 1 ? computeConstantExpression(arguments[1], String.class) : null; if (!StringUtil.isEmpty(name)) { addMethodSignatures(ownerClass, name, FIND_STATIC.equals(methodName), position, result); } } } } } } }