void (PyFunction function, PyStringLiteralExpression node, PySignature signature) { final StructuredDocString docString = DocStringUtil.parseDocString(node); if (docString instanceof PlainDocString) { return; } for (String param : docString.getParameters()) { @NlsSafe Substring type = docString.getParamTypeSubstring(param); if (type != null) { String dynamicType = signature.getArgTypeQualifiedName(param); if (dynamicType != null) { @NlsSafe String dynamicTypeShortName = getShortestImportableName(function, dynamicType); if (dynamicTypeShortName != null && !match(function, dynamicType, type.getValue())) { registerProblem(node, PyPsiBundle.message("INSP.docstring.types.dynamically.inferred.type.does.not.match.specified.type", dynamicTypeShortName, type), ProblemHighlightType.WEAK_WARNING, null, type.getTextRange(), new ChangeTypeQuickFix(param, type, dynamicTypeShortName) ); } } } } }