If you don’t need UPROPERTY() for blueprint, do this.
UPROPERTY()
TObjectPtr<UUserWudget> WidgetForDisplayInstance;
Because your class is a widget and gets checked during garbage collection. Without UPROPERTY() to manage the smart pointer count. It can get deleted.
And not every TObjectPtr needs UPROPERTY(). It’s just widgets are special during GCs.