public static function oneOf()
    {
        $generators = self::getArgs(func_get_args());
        $num = count($generators);
        if ($num < 2) {
            throw new \InvalidArgumentException();
        }
        return self::choose(0, $num - 1)
            ->bind(function ($index) use ($generators) {
                return $generators[$index];
            });
    }