@NotNull
  public static PsiType getParameterType(PsiParameter @NotNull [] parameters, int i, boolean varargs) {
    final PsiParameter parameter = parameters[i < parameters.length ? i : parameters.length - 1];
    PsiType parameterType = parameter.getType();
    if (parameterType instanceof PsiEllipsisType) {
      if (varargs) {
        parameterType = ((PsiEllipsisType)parameterType).getComponentType();
      }
      else {
        parameterType = ((PsiEllipsisType)parameterType).toArrayType();
      }
    }
    if (!parameterType.isValid()) {
      PsiUtil.ensureValidType(parameterType, "Invalid type of parameter " + parameter + " of " + parameter.getClass());
    }
    return parameterType;
  }
@NotNull
  public static PsiType getParameterType(PsiParameter @NotNull [] parameters, int i, boolean varargs)