Got it (I think). Found the clues
. Looks like the options table isn't built until after the Populate() method has completed. This is why I get an error when I don't pass a value for the -target option to new(). This also explains why everything works as expected when I DO pass it a value.
So basically, the default value is only good for parms that DON'T get used in the Populate() method itself. For parms that ARE used in Populate(), you'll have to test for the options and set default values.
Anyone care to add to this?