function setBlockList($list)
    {
        if ($list instanceof \Traversable)
            $list = \Poirot\Std\cast($list)->toArray();

        if (! is_array($list) )
            throw new \InvalidArgumentException(sprintf(
                'List must instanceof Traversable or array; given (%s).'
                , \Poirot\Std\flatten($list)
            ));

        $this->blockList = $list;
        return $this;
    }