public static function setOptions($object, $options)
    {
        if (!is_array($options) || ($options instanceof \Traversable)) {
            throw new exception\InvalidArgumentException('$options must be an array or implement the Traversable interface.');
        }

        foreach ($options as $key => $value) {
            $method = 'set' . static::camelize($key);
            if (!is_callable(array($object, $method))) {
                continue;
            }

            $object->$method($value);
        }
    }