ok this is on the right track, but there's some problems.

It would be better to solve this in Property\Binary. Override setValue() and detect if an array is set.

If the array has more than 1 element, reject with an InvalidArgumentException. If it's exactly 1 element, change the value into a string.