private @NotNull PsiType createArrayType(PsiTypeElement deepestChild) {
    int depth = getArrayDepth();
    List<TypeAnnotationContainer> containers =
      StreamEx.iterate(myAnnotations, TypeAnnotationContainer::forArrayElement).limit(depth).toList();
    PsiType type = deepestChild.getType();
    for (int i = depth - 1; i >= 0; i--) {
      if (i == 0 && isVarArgs()) {
        type = new PsiEllipsisType(type);
      } else {
        type = type.createArrayType();
      }
      type = type.annotate(containers.get(i).getProvider(this));
    }
    return type;
  }
private @NotNull PsiType createArrayType(PsiTypeElement deepestChild)