Generar Opción [T] en ScalaCheck

Estoy intentando generar parámetros opcionales en ScalaCheck, sin éxito.

Parece que no hay un mecanismo directo para esto.Gen.containerOf[Option, Thing](thingGenerator) falla porque no puede encontrar un implícitoBuildable[Thing, Option].

Lo intenté

for {
  thing <- Gen.listOfN[Thing](1, thingGenerator)
} yield thing.headOption

Pero esto no funciona porquelistOfN produce una lista que siempre es de longitud N. Como resultado, siempre obtengo unaSome[Thing]. Similar,listOf1 no funciona, porque (a) no produce listas vacías, pero también (b) es ineficiente porque no puedo establecer un límite máximo en el número de elementos.

Como puedo generarOption[Thing] que incluye Nones?

EDITAR: He encontrado una solución, pero no es sucinta. ¿Hay una manera mejor que esta?

for {
  thing <- for {
    qty <- Gen.choose(0,1)
    things <- Gen.listOfN[Thing](qty, thingGenerator)
  } yield things.headOption
} yield thing

Editar 2: Generalicé esto a

def optional[T](g: Gen[T]) = 
  for (qty <- Gen.choose(0, 1); xs <- Gen.listOfN[T](qty, g)) yield xs.headOption

Así que no tengo que escribirlo más de una vez. Pero seguramente esto ya está en la biblioteca y me lo perdí.

Respuestas a la pregunta(2)

Su respuesta a la pregunta