@Override
      public PsiType visitArrayType(@NotNull PsiArrayType arrayType) {
        PsiType componentType = arrayType.getComponentType();
        PsiType type = componentType.accept(this);
        if (type == componentType) return arrayType;
        if (type instanceof PsiWildcardType) {
          type = ((PsiWildcardType)type).getBound();
        }
        return type != null ? type.createArrayType().annotate(arrayType.getAnnotationProvider()) : arrayType;
      }
@Override
      public PsiType visitArrayType(@NotNull PsiArrayType arrayType)