UCLASS(Within = "") Crashes editor when used with EditInlineNew

I have created a UObject class with the following UCLASS() specifiers.

UCLASS(Blueprintable, BlueprintType, EditInlineNew, DefaultToInstanced, Within = "ST_WeaponBase")

I specified the ‘Within’ class, as I only ever want developers to create instances of this UObject with a class of type ‘ST_WeaponBase’ as the outer. In C++, this appears to work fine.

Unfortunately, whenever a Blueprinted version of this UObject class is created inside a Blueprinted version of ST_WeaponBase - I get a hard crash relating to the editor trying to move items into the Transient Package. This crash happens when I open the blueprint, or try to compile and save changes if I manage to get it open.

I suspect that because the class is EditInlineNew and the array is ‘Instanced’, the objects do not have the ‘RF_ClassDefaultObject’ flag and therefore trigger the crash shown below.

This is how the variable holding onto instances of the UObject is declared in C++. As you can see, the values are ‘Instanced’ so they are created in the editor when you add them to the array and serialized into the class itself.

* All Modules contained by the weapon.
UPROPERTY(EditDefaultsOnly, Instanced, BlueprintReadOnly, ReplicatedUsing = "OnRep_Modules", Category = "Modules")
TArray<UST_WeaponModuleBase*> Modules;

I tried removing the ‘Within’ specifier from the C++ classes, but it appears to have been baked into the Blueprints and they still won’t open. Unfortunately it seems I have to remove them all and start again without using the Within specifier.

I’ve managed to get the Blueprints open again by doing the following, so at least nothing is lost at this stage. It appears the UPackage is the default “Within” class for any UClass (at least according to Class.h line 2055)

EDIT: Nope, looks like UObject is the default…