public function insertAll($index, $elements)
    {
        if (0 < $index && $this->count() < $index) {
            throw new \OutOfBoundsException();
        }
        if ($elements instanceof CollectionInterface) {
            $elements = $elements->toArray();
        } else {
            $elements = array_values($elements);
        }
        array_splice($this->elements, $index, 0, $elements);
        foreach ($this->subLists as $subList) {
            $subList->insertAll($index, $elements, true);
        }
        return $this;
    }