`module Foo : sig ... end`
`type foo =`

1. `| Bar of Foo.t`

`type bar =`

1. `| Bar of {`
   1. `field : Foo.t;`
   `}`

`type foo_ =`

1. `| Bar_ of int * Foo.t * int`

`type bar_ =`

1. `| Bar__ of Foo.t option`

`type another_foo =`

1. `| Bar of Another_Foo.t`

`type another_bar =`

1. `| Bar of {`
   1. `field : Another_Foo.t;`
   `}`

`type another_foo_ =`

1. `| Bar_ of int * Another_Foo.t * int`

`type another_bar_ =`

1. `| Bar__ of Another_Foo.t option`