void (@NotNull PyArgumentList node, @NotNull ProblemsHolder holder, @NotNull List<PyCallExpression.PyArgumentsMapping> mappings, @NotNull TypeEvalContext context) { if (mappings.isEmpty() || mappings.stream().anyMatch(mapping -> mapping.getUnmappedParameters().isEmpty())) return; Optional .ofNullable(node.getNode()) .map(astNode -> astNode.findChildByType(PyTokenTypes.RPAR)) .map(ASTNode::getPsi) .ifPresent( psi -> { if (mappings.size() != 1 || ContainerUtil.exists(mappings.get(0).getUnmappedParameters(), parameter -> parameter.getName() == null)) { holder.registerProblem( psi, addPossibleCalleesRepresentation(PyPsiBundle.message("INSP.parameter(s).unfilled"), mappings, context, holder.isOnTheFly()) ); } else { StreamEx .of(mappings.get(0).getUnmappedParameters()) .map(PyCallableParameter::getName) .filter(Objects::nonNull) .forEach(name -> holder.registerProblem(psi, PyPsiBundle.message("INSP.parameter.unfilled", name))); } } ); }