protected function checkType($item)
    {
        if ($this->isCorrectType($item) === false) {
            $error = sprintf(
                '%s may contain only values of type %s, %s given.',
                get_class($this),
                $this->type,
                is_object($item) ? get_class($item) : gettype($item)
            );

            throw new InvalidArgumentException($error);
        }

        return true;
    }