@c AUTOMATICALLY GENERATED, DO NOT MODIFY

@section Section

@subsection Subsection

@strong{strong} @emph{with emphasis}
@code{var} @{in braces@}
@itemize @bullet
@item
List item one
@item
Two, multiple
lines

@item
Three
Still in list

@end itemize

Not in list
@itemize @minus
@item
Second list
Note: still in list

@end itemize

Note: not in list
@enumerate
@item
Third list
is numbered

@item
another item

@example
example
@end example

@example
multiple lines
@end example


@end enumerate

Returns: the King
Since: the first age
Notes:

@enumerate
@item
Lorem ipsum dolor sit amet

@item
Ut enim ad minim veniam

@end enumerate

Duis aute irure dolor

Example:

-> in
<- out
Examples:
@itemize @minus
@item
@strong{verbatim}
@item
@{braces@}
@end itemize



@deftp {Enum} Enum



@b{Values:}
@table @asis
@item @code{one}
The @emph{one} @{and only@}
@*@b{If:} @code{defined(IFONE)}
@item @code{two}
Not documented
@end table
@code{two} is undocumented

@b{If:} @code{defined(IFCOND)}
@end deftp



@deftp {Object} Base



@b{Members:}
@table @asis
@item @code{base1: Enum}
the first member
@end table

@end deftp



@deftp {Object} Variant1

A paragraph

Another paragraph (but no @code{var}: line)

@b{Members:}
@table @asis
@item @code{var1: string}
Not documented
@*@b{If:} @code{defined(IFSTR)}
@end table

@b{Features:}
@table @asis
@item @code{variant1-feat}
a feature
@end table

@end deftp



@deftp {Object} Variant2



@end deftp



@deftp {Object} Object



@b{Members:}
@table @asis
@item The members of @code{Base}
@item The members of @code{Variant1} when @code{base1} is @t{"one"}
@item The members of @code{Variant2} when @code{base1} is @t{"two"} (@b{If:} @code{IFTWO})
@end table

@end deftp



@deftp {Object} SugaredUnion



@b{Members:}
@table @asis
@item @code{type}
One of @t{"one"}, @t{"two"}
@item @code{data: Variant1} when @code{type} is @t{"one"}
@item @code{data: Variant2} when @code{type} is @t{"two"} (@b{If:} @code{IFTWO})
@end table

@end deftp



@deftp {Alternate} Alternate



@b{Members:}
@table @asis
@item @code{i: int}
an integer
@code{b} is undocumented
@item @code{b: boolean}
Not documented
@end table

@end deftp


@subsection Another subsection


@deftypefn Command {} cmd



@b{Arguments:}
@table @asis
@item @code{arg1: int}
the first argument
@item @code{arg2: string} (optional)
the second
argument
@item @code{arg3: boolean}
Not documented
@end table

@b{Features:}
@table @asis
@item @code{cmd-feat1}
a feature
@item @code{cmd-feat2}
another feature
@end table

@b{Note:}
@code{arg3} is undocumented

@b{Returns:}
@code{Object}

@b{TODO:}
frobnicate

@b{Notes:}
@itemize @minus
@item
Lorem ipsum dolor sit amet
@item
Ut enim ad minim veniam

@end itemize

Duis aute irure dolor

@b{Example:}
@example
-> in
<- out
@end example

@b{Examples:}
@example
- *verbatim*
- @{braces@}
@end example

@b{Since:}
2.10

@end deftypefn



@deftypefn Command {} cmd-boxed

If you're bored enough to read this, go see a video of boxed cats

@b{Arguments:} the members of @code{Object}

@b{Features:}
@table @asis
@item @code{cmd-feat1}
a feature
@item @code{cmd-feat2}
another feature
@end table

@b{Example:}
@example
-> in

<- out
@end example

@end deftypefn



@deftypefn Event {} EVT-BOXED



@b{Arguments:} the members of @code{Object}

@end deftypefn

