module ./builtin
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 IFONE
        feature enum-member-feat
    member two
    if IFCOND
    feature enum-feat
object Base
    member base1: Enum optional=False
    if {'all': ['IFALL1', 'IFALL2']}
object Variant1
    member var1: str optional=False
        if IFSTR
        feature member-feat
    feature variant1-feat
object Variant2
object Object
    base Base
    tag base1
    case one: Variant1
    case two: Variant2
        if {'any': ['IFONE', 'IFTWO']}
    feature union-feat1
alternate Alternate
    tag type
    case i: int
    case b: bool
    if {'not': {'any': ['IFONE', 'IFTWO']}}
    feature alt-feat
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
    feature feat3
doc freeform
    body=
= Section
doc freeform
    body=
== Subsection

*with emphasis*
@var {in braces}

* List item one
* Two, multiple
  lines

* Three
  Still in list

Not in list

- Second list
  Note: still in list

Note: not in list

1. Third list
   is numbered

2. another item

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

    feature=enum-feat
Also _one_ {and only}
    feature=enum-member-feat
a member feature
    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
    feature=member-feat
a member feature
doc symbol=Variant2
    body=

doc symbol=Object
    body=

    feature=union-feat1
a feature
doc symbol=Alternate
    body=

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

    feature=alt-feat
a feature
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=

    feature=feat3
a feature
