lets change the annotation to `@param array|KeyValueContainer` to make more explicit what this is about. we might even support everything that can do foreach and convert Traversable objects to native arrays by looping over them if they are not KeyValueContainer