CreatePropertyValueWidget not handling struct contents

Before doing any major rewrites, figured I’d try asking here first. I am trying to create propery customizations for the following structs:

USTRUCT(BlueprintType)
struct FActualStruct
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float FloatValue;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EEnumType Enum;

	UPROPERTY(EditAnywhere, BlueprintReadWrite,)
	int32 IntValue;
};

// Only really exists because nested containers are not serializable.
USTRUCT(BlueprintType)
struct FArrayWrapper
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FActualStruct> Array;
};

USTRUCT(BlueprintType)
struct FMapProperty
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TMap<UClass*, FArrayWrapper> Map;
};

The idea is that for each key in the map, I display a fixed size array, whose content depends on the UClass* type. My problem begins when I write the widget that would display the contents of FArrayWrapper. In the snippet below, I try to use CreatePropertyValueWidget for each entry in TArray<FActualStruct> Array, my expectation is that it should spit out the default struct widget for FActualStruct:

    void Construct(const FArguments& InArgs)
    {
        EnumIndexedArrayProperty = InArgs._EnumIndexedArrayProperty;
        EnumPtr = InArgs._EnumPtr;

        if(!EnumIndexedArrayProperty.IsValid())
        {
            return;
        }

        if(!EnumPtr)
        {
            return;
        }

        // Initialize the array to match enum entries
        uint32 count = 0;
        uint32 const enumCount = (EnumPtr->NumEnums() - 1); // Always subtract 1, to get rid of the MAX entry used internally.

        // Populate fixed size array based on enum entries
        EnumIndexedArrayProperty->GetNumElements(count);
        if(count < enumCount)
        {
            for(uint32 i = count; i < enumCount; ++i)
            {
                EnumIndexedArrayProperty->AddItem();
            }
        }

        // This VBox slots hold an individual array element property
        TSharedRef<SVerticalBox> arrayVBox = SNew(SVerticalBox);
        ChildSlot.AttachWidget(arrayVBox);

        // For each array element property, just create the default widget of the property
        EnumIndexedArrayProperty->GetNumElements(count);
        for(uint32 i = 0; i < count; ++i)
        {
            arrayVBox->AddSlot()
                .HAlign(EHorizontalAlignment::HAlign_Fill)
                .VAlign(EVerticalAlignment::VAlign_Center)
                .Padding(0.f, 0.f, 32.f, 0.f)
                .AutoHeight()
                [
                    SNew(SSplitter)
                    .ResizeMode(ESplitterResizeMode::Fill)
                + SSplitter::Slot()
                .Resizable(true)
                .MinSize(64.0)
                [
                    BuildEnumWidget(i) // Label for the array entry
                ]
            + SSplitter::Slot()
                .Resizable(true)
                .MinSize(90.f)
                .Value(5)
                [
                    // !! This is the what the question is all about !!
EnumIndexedArrayProperty->GetElement(i)->CreatePropertyValueWidget(true)
                ]
            ];
        }
    }

However, I get nothing in-editor for the underlying struct property. This worked when the contents of the array was a simple type such as a float, but it feels like it’s totally failing to pick up on the contents/children in case the array is made of structs. Either that, or it’s not creating the dropdown that would normal expose the contents. The intent here is to make it modular regardless of the array’s value type, I don’t want to have to create a custom widget for every possible type combination.