module None
object q_empty
enum QType
    prefix QTYPE
    member none
    member qnull
    member qnum
    member qstring
    member qdict
    member qlist
    member qbool
module doc-good.json
enum Enum
    member one
        if ['defined(IFONE)']
    member two
    if ['defined(IFCOND)']
object Base
    member base1: Enum optional=False
object Variant1
    member var1: str optional=False
        if ['defined(IFSTR)']
    feature variant1-feat
object Variant2
object Object
    base Base
    tag base1
    case one: Variant1
    case two: Variant2
        if ['IFTWO']
object q_obj_Variant1-wrapper
    member data: Variant1 optional=False
object q_obj_Variant2-wrapper
    member data: Variant2 optional=False
enum SugaredUnionKind
    member one
    member two
        if ['IFTWO']
object SugaredUnion
    member type: SugaredUnionKind optional=False
    tag type
    case one: q_obj_Variant1-wrapper
    case two: q_obj_Variant2-wrapper
        if ['IFTWO']
alternate Alternate
    tag type
    case i: int
    case b: bool
object q_obj_cmd-arg
    member arg1: int optional=False
    member arg2: str optional=True
    member arg3: bool optional=False
command cmd q_obj_cmd-arg -> Object
    gen=True success_response=True boxed=False oob=False preconfig=False
    feature cmd-feat1
    feature cmd-feat2
command cmd-boxed Object -> None
    gen=True success_response=True boxed=True oob=False preconfig=False
    feature cmd-feat1
    feature cmd-feat2
event EVT-BOXED Object
    boxed=True
doc freeform
    body=
= Section

== Subsection

*strong* _with emphasis_
@var {in braces}
* List item one
- Two, multiple
lines

3. Three
Still in list

Not in list
- Second list
Note: still in list

Note: not in list
1. Third list
is numbered

- another item

| example
| multiple lines

Returns: the King
Since: the first age
Notes:

1. Lorem ipsum dolor sit amet

2. Ut enim ad minim veniam

Duis aute irure dolor

Example:

-> in
<- out
Examples:
- *verbatim*
- {braces}
doc symbol=Enum
    body=

    arg=one
The _one_ {and only}
    arg=two

    section=None
@two is undocumented
doc symbol=Base
    body=

    arg=base1
the first member
doc symbol=Variant1
    body=
A paragraph

Another paragraph (but no @var: line)
    arg=var1

    feature=variant1-feat
a feature
doc symbol=Variant2
    body=

doc symbol=Object
    body=

doc symbol=SugaredUnion
    body=

    arg=type

doc symbol=Alternate
    body=

    arg=i
an integer
@b is undocumented
    arg=b

doc freeform
    body=
== Another subsection
doc symbol=cmd
    body=

    arg=arg1
the first argument
    arg=arg2
the second
argument
    arg=arg3

    feature=cmd-feat1
a feature
    feature=cmd-feat2
another feature
    section=Note
@arg3 is undocumented
    section=Returns
@Object
    section=TODO
frobnicate
    section=Notes
- Lorem ipsum dolor sit amet
- Ut enim ad minim veniam

Duis aute irure dolor
    section=Example
-> in
<- out
    section=Examples
- *verbatim*
- {braces}
    section=Since
2.10
doc symbol=cmd-boxed
    body=
If you're bored enough to read this, go see a video of boxed cats
    feature=cmd-feat1
a feature
    feature=cmd-feat2
another feature
    section=Example
-> in

<- out
doc symbol=EVT-BOXED
    body=
BUG: generated doc misses arguments
