Gerar Opção [T] no ScalaCheck

Eu estou tentando gerar parâmetros opcionais no ScalaCheck, sem sucesso.

Parece não haver um mecanismo direto para isso.Gen.containerOf[Option, Thing](thingGenerator) falha porque não consegue encontrar uma implícitaBuildable[Thing, Option].

eu tentei

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

Mas isso não funciona porquelistOfN produz uma lista que é sempre de comprimento N. Como resultado, eu sempre obtenhoSome[Thing]. Similarmente,listOf1 não funciona, porque (a) não produz listas vazias, mas também (b) é ineficiente porque não posso definir um limite máximo para o número de elementos.

Como posso gerarOption[Thing] que inclui o Nones?

EDITAR: Eu encontrei uma solução, mas não é sucinta. Existe uma maneira melhor do que isso?

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

EDIT 2: Eu generalizei isso para

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

Então não preciso escrever mais de uma vez. Mas certamente isso já está na biblioteca e eu perdi isso?

questionAnswers(2)

yourAnswerToTheQuestion