private void buildFromParameter(@NotNull PyNamedParameter parameter) {
    final PyFunction func = PsiTreeUtil.getParentOfType(parameter, PyFunction.class, true, PyLambdaExpression.class);
    final HtmlChunk link = func != null ? getLinkToFunction(func, true) : HtmlChunk.text(PyNames.UNNAMED_ELEMENT);
    final String parameterName = parameter.getName();
    if (link != null && parameterName != null) {
      myBody.appendRaw(PyPsiBundle.message("QDOC.parameter.name.of.link", HtmlChunk.text(parameterName).bold(), link)).br();
    }

    if (func != null) {
      final PyClass containingClass = func.getContainingClass();
      final PyStringLiteralExpression functionDocstring = getEffectiveDocStringExpression(func);
      final PyStringLiteralExpression docString =
        functionDocstring == null && containingClass != null ? addFunctionInheritedDocString(func, containingClass) : functionDocstring;
      if (docString != null) {
        final StructuredDocString structuredDocString = DocStringUtil.parse(docString.getStringValue());
        final String description = structuredDocString.getParamDescription(parameter.getName());
        if (StringUtil.isNotEmpty(description)) {
          myContent.append(runFormatterService(description));
        }
      }
    }
    myBody.append(PythonDocumentationProvider.describeParameter(parameter, myContext));
  }
private void buildFromParameter(@NotNull PyNamedParameter parameter)