Dave, i've now tried your UML in both 2014 and 2017, and i can create code in both (though i did find a bug). Using the generated code (as i can't use your 2018 code currently) i could reverse engineer it on both, and that's how i found the bug.
When generating code it doesn't set the correct parent on child objects, it's always G#Object.
/Y