static void writeParameterList(@NotNull StringBuilder text,
                                 PsiParameter @NotNull [] parameters,
                                 @NotNull final ClassNameProvider classNameProvider,
                                 @Nullable ExpressionContext context) {
    Set<String> usedNames = new HashSet<>();
    text.append('(');

    //writes myParameters
    int i = 0;
    while (i < parameters.length) {
      PsiParameter parameter = parameters[i];
      if (parameter == null) continue;
      if (parameter instanceof PsiCompiledElement) {
        parameter = (PsiParameter)((PsiCompiledElement)parameter).getMirror();
      }

      if (i > 0) text.append(", ");  //append ','
      if (!classNameProvider.forStubs()) {
        ModifierListGenerator.writeModifiers(text, parameter.getModifierList(), ModifierListGenerator.JAVA_MODIFIERS, true);
      }
      if (context != null) {
        if (context.analyzedVars.toMakeFinal(parameter) && !parameter.hasModifierProperty(PsiModifier.FINAL)) {
          text.append(PsiModifier.FINAL).append(' ');
        }
        TypeWriter.writeType(text, context.typeProvider.getParameterType(parameter), parameter, classNameProvider);
      }
      else {
        TypeWriter.writeType(text, parameter.getType(), parameter, classNameProvider);
      }
      text.append(' ');
      text.append(generateUniqueName(usedNames, parameter.getName()));

      i++;
    }
    text.append(')');
    text.append(' ');
  }
static void writeParameterList(@NotNull StringBuilder text,
                                 PsiParameter @NotNull [] parameters,
                                 @NotNull final ClassNameProvider classNameProvider,
                                 @Nullable ExpressionContext context)