public function each(callable $callable)
    {
        foreach ($this->value as $key => &$val) {
            try {
                $callable($val, $key);
            } catch (BreakException $e) {
                // catching a BreakException means that $callable
                // requested to end the loop
                break;
            }
        }

        return $this;
    }