[Editor Scripting]Using Editor Utility Widget as Edit Mode ToolKit UI results in GC crash on map unload

Howdy engine scripting experts,

I’m wokring on a custom editor mode, and is trying to use an Editor Utility Widget defined at blueprint level as the custom edit mode toolkit’s UI. This seems simple at first, simply call TakeWidget on the contorl widget asset instance:

TSharedPtr<class SWidget> GetInlineContent() const
{
    ControlWidget->TakeWidget(); 
}

The UI works just fine, however problem happens as soon as we try to unload the map, which results in a GC crash, stating that the BP editor widget is holding a reference to the active map, preventing it from been garbage collected.

 (root)  GCObjectReferencer /Engine/Transient.GCObjectReferencer_0
 -> SObjectWidget(SculptToolPanel)::AddReferencedObjects( 2_SculptToolPanel_C /Game/Map/MobMuseum_Level.MobMuseum_Level:EUW_VoxelEditorWindow_C_2.WidgetTree_0.SculptToolPanel)
    ^ UGCObjectReferencer::AddReferencedObjects() [Z:\CustomUE5\UnrealEngine\Engine\Source\Runtime\CoreUObject\Private\Misc\GCObjectReferencer.cpp:80]
  -> UObject* UObject::Outer =  WidgetTree /Game/Map/MobMuseum_Level.MobMuseum_Level:EUW_VoxelEditorWindow_C_2.WidgetTree_0
   -> UObject* UObject::Outer =  EUW_VoxelEditorWindow_C /Game/Map/MobMuseum_Level.MobMuseum_Level:EUW_VoxelEditorWindow_C_2
    -> UObject* UObject::Outer =  World /Game/Map/MobMuseum_Level.MobMuseum_Level
     -> UObject* UObject::Outer =  Package /Game/Map/MobMuseum_Level
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         ^ This reference is preventing the old Package from being GC'd ^

In the above example, 2_SculptToolPanel_C doesn’t include any reference to the active level or its object, in fact the problem persists, when the BP control widget doesn’t include anything else, and the 2_SculptToolPanel_C itself is a clean slate with zero BP logic.

Further experimenting shows that this occurs as soon as the BP defined control widget includes any other BP defined widget as child.
switching into another edit mode then level switching doesn’t trigger the crash neither.
Contrary to expectation, manually close the control widget tab, then actively unregister tool kit, then switch map sees the same problem

FToolkitManager::Get().CloseToolkit(Toolkit.ToSharedRef());
Toolkit.Reset();

Hence i’m starting to wonder if Slate widget format is the only supported UI method for edit mode toolkit, if it is a known bug that using editor widget contraining other BP defined widget(either editor utilty widget or default user widget) would prevent level from been grabage collected.

Anyone has managed to use BP defined widget for tool kit UI before?