void (@NotNull PyArgumentList node, @NotNull ProblemsHolder holder, @NotNull PyResolveContext resolveContext) { if (node.getParent() instanceof PyClass) return; // `(object)` in `class Foo(object)` is also an arg list final PyCallExpression call = node.getCallExpression(); if (call == null) return; final TypeEvalContext context = resolveContext.getTypeEvalContext(); final List<PyCallExpression.PyArgumentsMapping> mappings = call.multiMapArguments(resolveContext); for (PyCallExpression.PyArgumentsMapping mapping : mappings) { final PyCallableType callableType = mapping.getCallableType(); if (callableType != null) { final PyCallable callable = callableType.getCallable(); if (callable instanceof PyFunction function) { // Decorate functions may have different parameter lists. We don't match arguments with parameters of decorators yet if (PyKnownDecoratorUtil.hasUnknownOrChangingSignatureDecorator(function, context) || decoratedClassInitCall(call.getCallee(), function, resolveContext)) { return; } if (objectMethodCallViaSuper(call, function)) return; } } } highlightUnexpectedArguments(node, holder, mappings, context); highlightUnfilledParameters(node, holder, mappings, context); highlightStarArgumentTypeMismatch(node, holder, context); }