PyParamSpecType (@NotNull PsiElement element, @NotNull Context context) { if (!(element instanceof PyCallExpression assignedCall)) return null; final var callee = assignedCall.getCallee(); if (callee == null) return null; final var calleeQNames = resolveToQualifiedNames(callee, context.getTypeContext()); if (!calleeQNames.contains(TYPING_PARAM_SPEC) && !calleeQNames.contains(TYPING_EXTENSIONS_PARAM_SPEC)) return null; final var arguments = assignedCall.getArguments(); if (arguments.length == 0) return null; final var firstArgument = arguments[0]; if (!(firstArgument instanceof PyStringLiteralExpression)) return null; final var name = ((PyStringLiteralExpression)firstArgument).getStringValue(); return new PyParamSpecType(name); }