public static function of(...$elements): self
    {
        if (count($elements) === 1) {
            $elements = $elements[0];
        }

        if ($elements instanceof self) {
            return $elements;
        }

        if ($elements instanceof \Traversable || is_array($elements)) {
            return new self($elements);
        }

        return new self([$elements]);
    }