List<PyNamedParameter> () { PyDocStringOwner owner = PsiTreeUtil.getParentOfType(getElement(), PyDocStringOwner.class); if (owner instanceof PyFunction) { List<PyNamedParameter> result = new ArrayList<>(); final List<PyNamedParameter> namedParameters = ParamHelper.collectNamedParameters(((PyFunction)owner).getParameterList()); Set<String> usedParameters = new HashSet<>(); PyStringLiteralExpression expression = PsiTreeUtil.getParentOfType(getElement(), PyStringLiteralExpression.class, false); if (expression != null) { PsiReference[] references = expression.getReferences(); for (PsiReference ref : references) { if (ref instanceof DocStringParameterReference && ((DocStringParameterReference)ref).getType().equals(myType)) { usedParameters.add(ref.getCanonicalText()); } } } for (PyNamedParameter param : namedParameters) { if (!usedParameters.contains(param.getName())) { result.add(param); } } return result; } return Collections.emptyList(); }