public function setObjectPrototype($objectPrototype)
    {
        if (!is_object($objectPrototype)
            || (!$objectPrototype instanceof ArrayObject && !method_exists($objectPrototype, 'exchangeArray'))

        ) {
            throw new Exception\InvalidArgumentException(sprintf(
                'Object must be of type %s, or at least implement %s',
                'ArrayObject',
                'exchangeArray'
            ));
        }
        $this->arrayObjectPrototype = $objectPrototype;
        return $this;
    }