@Override
        public void visitNonPsiParameter(@NotNull PyCallableParameter parameter, boolean first, boolean last) {
          indexToNamedParameter.put(currentParameterIndex[0], parameter);
          final StringBuilder stringBuilder = new StringBuilder();
          ParameterDescription parameterDescription = new ParameterDescription(parameter.getName(), "", last);
          if (parameter.getParameter() instanceof PyNamedParameter) {
            final String annotation = ((PyNamedParameter)parameter.getParameter()).getAnnotationValue();
            if (annotation != null) {
              String annotationText = ParamHelper.getNameInSignature(parameter) + ": " +
                                      annotation.replaceAll("\n", "").replaceAll("\\s+", " ");
              parameterDescription.setAnnotation(last ? annotationText : (annotationText + ", "));
            }
          }
          stringBuilder.append(parameter.getPresentableText(true, context, type -> type == null || type instanceof PyStructuralType));
          if (!last) stringBuilder.append(", ");
          final int hintIndex = parameterDescriptions.size();
          parameterToHintIndex.put(parameter, hintIndex);
          hintFlags.put(hintIndex, EnumSet.noneOf(ParameterFlag.class));
          currentParameterIndex[0]++;
          parameterDescription.setFullRepresentation(stringBuilder.toString());
          parameterDescriptions.add(parameterDescription);
        }
@Override
        public void visitNonPsiParameter(@NotNull PyCallableParameter parameter, boolean first, boolean last)