/Engine/Source/Runtime/CoreUObject/Public/UObject/UObjectAnnotation.h
Annotations are automatically returned to the default when UObjects are destroyed. Annotation are not "garbage collection aware", so it isn't safe to store pointers to other UObjects in an annotation unless external guarantees are made such that destruction of the other object removes the annotation.
template<typename TAnnotation, bool bAutoRemove> class FUObjectAnnotationDense : public [FUObjectArray::FUObjectDeleteListener](API\Runtime\CoreUObject\UObject\FUObjectArray\FUObjectDeleteListener)