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 ['defined(IFONE)']
    member two
    if ['defined(IFCOND)']
    feature enum-feat
object Base
    member base1: Enum optional=False
object Variant1
    member var1: str optional=False
        if ['defined(IFSTR)']
        feature member-feat
    feature variant1-feat
object Variant2
object Object
    base Base
    tag base1
    case one: Variant1
    case two: Variant2
        if ['IFTWO']
    feature union-feat1
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']
    feature union-feat2
alternate Alternate
    tag type
    case i: int
    case b: bool
    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}
    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=SugaredUnion
    body=

    arg=type

    feature=union-feat2
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
