I would change this to:
````php
->validate()
    ->ifTrue(function ($v) { return !is_string($v) || !is_array($v); })
    ->thenInvalid('Default can either be an array or a string, "%s" given')
->end()
````