/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. The advantage ofFUObjectAnnotationChunkedis that it can reclaim memory if subsets of UObjects within predefined chunks no longer have any annotations associated with them.
template<typename TAnnotation, bool bAutoRemove, int32 NumAnnotationsPerChunk> class FUObjectAnnotationChunked : public [FUObjectArray::FUObjectDeleteListener](API\Runtime\CoreUObject\UObject\FUObjectArray\FUObjectDeleteListener)