public function withADistanceOfAtLeast(int $distance): self
    {
        if ($this->elements->size() < 3) {
            throw new LogicException;
        }

        $path = clone $this;
        $path->elements = $this
            ->elements
            ->dropEnd(2)
            ->add(
                $this->elements->dropEnd(1)->last()->withADistanceOfAtLeast($distance)
            )
            ->add($this->elements->last());

        return $path;
    }