Wil

Good spot! Turned off "Adjust text case while typing language keywords" and fixed it... but alas: the same result.

Again, AFAICS the VT has no information about what struct elements the data should go into - ValueTreeDeserializeParameter just fills them in in the order it finds them in the VT... I think. All the rest of the struct is getting populated correctly, both the parts before the payer element and those after it. It is clear to me that I'm doing something wrong... and it must be in that payer element, so the in stPayer struct...

BINGO! Found it! OK, full disclosure...

Being a careful puppy (read: "smart arsed git!"), I have been guarding my struct definitions with:
Code:
#IFNDEF _struct_stThingy
    Struct stThingy
        String foo
    End_Struct
#ENDIF
But not careful enough... what I maybe could have been doing is:
Code:
#IFNDEF _struct_stThingy
    Struct stThingy
        String  foo
    End_Struct
#ELSE
    #ERROR 666 "Struct stThingy is already defined!"
#ENDIF
But in fact the compiler throws an error if you try to redefine a existing struct anyway, so the whole thing is just me being an idiot. Time to just stop trying to be too clever for my own good. Dug the hole and fell right in.

Struct stPayer had already been defined earlier, with a different definition, as had stAddress, so (a) taking out all the #IFNDEF / #ENDIF cr4p and then (b) renaming stPayer and stAddress to stPayer2 and stAddress2 and now it works properly.

Sorry to have been wasting everybody's time.

Mike