private void checkParameters(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)
              );
            }
          }
        }
      }
    }
private void checkParameters(PyFunction function, PyStringLiteralExpression node, PySignature signature)