var shadow = selection.items[0].shadow;
shadow.x = 2;
selection.items[0].shadow = shadow;
will apply the changes.
seems like there are no listeners for the second level in place. if this is intended behaviour, it should be mentioned in the api doc that second level changes have to be applied this way.
As you’ve discovered, this is intended behavior, and typical for JavaScript (where setting property values does not propagate a change notification to the parent).