private static @Nullable PyExpression findParamTypeHintInFunctionTypeComment(@NotNull PyFunctionTypeAnnotation annotation,
                                                                               @NotNull PyNamedParameter param,
                                                                               @NotNull PyFunction func) {
    List<PyExpression> paramTypes = annotation.getParameterTypeList().getParameterTypes();
    if (paramTypes.size() == 1 && paramTypes.get(0) instanceof PyNoneLiteralExpression noneExpr && noneExpr.isEllipsis()) {
      return null;
    }
    int startOffset = omitFirstParamInTypeComment(func, annotation) ? 1 : 0;
    List<PyParameter> funcParams = Arrays.asList(func.getParameterList().getParameters());
    int i = funcParams.indexOf(param) - startOffset;
    if (i >= 0 && i < paramTypes.size()) {
      PyExpression paramTypeHint = paramTypes.get(i);
      if (paramTypeHint instanceof PyStarExpression starExpression) {
        return starExpression.getExpression();
      }
      else if (paramTypeHint instanceof PyDoubleStarExpression doubleStarExpression) {
        return doubleStarExpression.getExpression();
      }
      else {
        return paramTypeHint;
      }
    }
    return null;
  }
private static @Nullable PyExpression findParamTypeHintInFunctionTypeComment(@NotNull PyFunctionTypeAnnotation annotation,
                                                                               @NotNull PyNamedParameter param,
                                                                               @NotNull PyFunction func)