public function filter(callable $func) : self
    {
        $list = $this->list;
        $acc = [];

        foreach ($list as $index => $val) {
            if ($func($val)) {
                $acc[] = $val;
            }
        }

        return new static(\SplFixedArray::fromArray($acc));
    }