@NotNull public PsiType annotate(@NotNull TypeAnnotationProvider provider) { if (provider == myAnnotationProvider) return this; try { PsiType copy = (PsiType) clone(); copy.myAnnotationProvider = provider; return copy; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } }