2024-05-10 19:04.36: New job: test patricoferris/hilite https://github.com/patricoferris/hilite.git#refs/heads/remove-direct-cmarkit-dep (41939ee3484e321c39fe9c82ecec0fc3e94266ea) (linux-x86_64:(lower-bound))
Base: ocaml/opam@sha256:03a5a4ddf0eae514071c7504a3f0b49a917eaf2f7acd6806bc53498398aa1b85
Opam project build
To reproduce locally:
git clone --recursive "https://github.com/patricoferris/hilite.git" -b "remove-direct-cmarkit-dep" && cd "hilite" && git reset --hard 41939ee3
cat > Dockerfile <<'END-OF-DOCKERFILE'
FROM ocaml/opam@sha256:03a5a4ddf0eae514071c7504a3f0b49a917eaf2f7acd6806bc53498398aa1b85
# debian-12-4.14_opam-2.1
USER 1000:1000
ENV CLICOLOR_FORCE="1"
ENV OPAMCOLOR="always"
WORKDIR /src
RUN sudo ln -f /usr/bin/opam-2.1 /usr/bin/opam
RUN opam init --reinit -ni
RUN uname -rs && opam exec -- ocaml -version && opam --version
WORKDIR /src
RUN sudo chown opam /src
RUN cd ~/opam-repository && (git cat-file -e 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b || git fetch origin master) && git reset -q --hard 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b && git log --no-decorate -n1 --oneline && opam update -u
COPY --chown=1000:1000 hilite.opam ./
RUN opam pin add -yn hilite.dev './'
ENV DEPS="astring.0.8.5 base-bigarray.base base-bytes.base base-threads.base base-unix.base cmarkit.0.1.0 cmdliner.1.1.0 conf-oniguruma.1 conf-pkg-config.1.0 cppo.1.6.1 csexp.1.3.2 dune.3.8.0 dune-configurator.2.9.0 fmt.0.8.7 jbuilder.1.0+beta20.1 logs.0.7.0 mdx.1.11.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-config.2 ocaml-options-vanilla.1 ocaml-version.2.4.0 ocamlbuild.0.14.0 ocamlfind.1.9.1 odoc-parser.0.9.0 oniguruma.0.1.2 re.1.7.2 result.1.5 seq.0.2.2 stdlib-shims.0.1.0 textmate-language.0.3.3 topkg.1.0.3"
ENV CI="true"
ENV OCAMLCI="true"
RUN opam update --depexts && opam install --cli=2.1 --depext-only -y hilite.dev $DEPS
RUN opam install $DEPS
COPY --chown=1000:1000 . /src
RUN opam exec -- dune build @install @check @runtest && rm -rf _build
END-OF-DOCKERFILE
docker build .
END-REPRO-BLOCK
2024-05-10 19:04.36: Using cache hint "patricoferris/hilite-ocaml/opam@sha256:03a5a4ddf0eae514071c7504a3f0b49a917eaf2f7acd6806bc53498398aa1b85-debian-12-4.14_opam-2.1-e8d4d6b9ac59ddf857bd0a587a8f67bd"
2024-05-10 19:04.36: Using OBuilder spec:
((from ocaml/opam@sha256:03a5a4ddf0eae514071c7504a3f0b49a917eaf2f7acd6806bc53498398aa1b85)
(comment debian-12-4.14_opam-2.1)
(user (uid 1000) (gid 1000))
(env CLICOLOR_FORCE 1)
(env OPAMCOLOR always)
(workdir /src)
(run (shell "sudo ln -f /usr/bin/opam-2.1 /usr/bin/opam"))
(run (shell "opam init --reinit -ni"))
(run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
(workdir /src)
(run (shell "sudo chown opam /src"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b || git fetch origin master) && git reset -q --hard 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b && git log --no-decorate -n1 --oneline && opam update -u"))
(copy (src hilite.opam) (dst ./))
(run (network host)
(shell "opam pin add -yn hilite.dev './'"))
(env DEPS "astring.0.8.5 base-bigarray.base base-bytes.base base-threads.base base-unix.base cmarkit.0.1.0 cmdliner.1.1.0 conf-oniguruma.1 conf-pkg-config.1.0 cppo.1.6.1 csexp.1.3.2 dune.3.8.0 dune-configurator.2.9.0 fmt.0.8.7 jbuilder.1.0+beta20.1 logs.0.7.0 mdx.1.11.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-config.2 ocaml-options-vanilla.1 ocaml-version.2.4.0 ocamlbuild.0.14.0 ocamlfind.1.9.1 odoc-parser.0.9.0 oniguruma.0.1.2 re.1.7.2 result.1.5 seq.0.2.2 stdlib-shims.0.1.0 textmate-language.0.3.3 topkg.1.0.3")
(env CI true)
(env OCAMLCI true)
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.1 --depext-only -y hilite.dev $DEPS"))
(run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
(copy (src .) (dst /src))
(run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
)
2024-05-10 19:04.36: Waiting for resource in pool OCluster
2024-05-11 11:03.18: Waiting for worker…
2024-05-11 11:07.45: Got resource from pool OCluster
Building on doris.caelum.ci.dev
All commits already cached
HEAD is now at 41939ee Fmt
(from ocaml/opam@sha256:03a5a4ddf0eae514071c7504a3f0b49a917eaf2f7acd6806bc53498398aa1b85)
2024-05-11 11:07.45 ---> using "8996bcdb05f2890613e4a5e164dd9dd2f7c66284ebfc49b1df9eef1d9b3fb2b6" from cache
/: (comment debian-12-4.14_opam-2.1)
/: (user (uid 1000) (gid 1000))
/: (env CLICOLOR_FORCE 1)
/: (env OPAMCOLOR always)
/: (workdir /src)
/src: (run (shell "sudo ln -f /usr/bin/opam-2.1 /usr/bin/opam"))
2024-05-11 11:07.45 ---> using "3fdb1e75f44987c576dd516b384d193513f5ddcb99bb76ede24e0fee9a87d0d3" from cache
/src: (run (shell "opam init --reinit -ni"))
Configuring from /home/opam/.opamrc and then from built-in defaults.
Checking for available remotes: rsync and local, git.
- you won't be able to use mercurial repositories unless you install the hg command on your system.
- you won't be able to use darcs repositories unless you install the darcs command on your system.
Continue? [Y/n] y
This version of opam requires an update to the layout of /home/opam/.opam from version 2.0 to version 2.1, which can't be reverted.
You may want to back it up before going further.
Format upgrade done.
<><> Updating repositories ><><><><><><><><><><><><><><><><><><><><><><><><><><>
[default] synchronised from file:///home/opam/opam-repository
2024-05-11 11:07.45 ---> using "837f1c921195f81be5a563be012c9c22b2758b4b3e12aa2041ce209afd8c451d" from cache
/src: (run (shell "uname -rs && opam exec -- ocaml -version && opam --version"))
Linux 5.15.0-101-generic
The OCaml toplevel, version 4.14.2
2.1.5
2024-05-11 11:07.45 ---> using "d36534f2839e87000e4662e84d0d3847dab1994f11fe6787d9a8e290b4ced637" from cache
/src: (workdir /src)
/src: (run (shell "sudo chown opam /src"))
2024-05-11 11:07.45 ---> using "0e05757ab7a17e3305d283ca4ffcdf0a190928d8245e63046b734f0e2c628b9f" from cache
/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "cd ~/opam-repository && (git cat-file -e 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b || git fetch origin master) && git reset -q --hard 307e33d08fc4ccc1ea453ab45b0ead8ed574b97b && git log --no-decorate -n1 --oneline && opam update -u"))
From https://github.com/ocaml/opam-repository
* branch master -> FETCH_HEAD
eb2dcab0d8..2ae169d7d0 master -> origin/master
307e33d08f @dra27 and @Octachron maintain the 4.08+ packages
<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><><><>
[default] synchronised from file:///home/opam/opam-repository
Everything as up-to-date as possible (run with --verbose to show unavailable upgrades).
However, you may "opam upgrade" these packages explicitly, which will ask permission to downgrade or uninstall the conflicting packages.
Nothing to do.
# Run eval $(opam env) to update the current shell environment
2024-05-11 11:07.45 ---> using "36bdbb2e8ccf840cbe2033975360081c400a691e95299527a09ca1b8aef4fd44" from cache
/src: (copy (src hilite.opam) (dst ./))
2024-05-11 11:07.46 ---> saved as "c1e2292d1c1f68cec35f4c9267f4ad266edf1b38c61160f21762ac13719be865"
/src: (run (network host)
(shell "opam pin add -yn hilite.dev './'"))
[hilite.dev] synchronised (file:///src)
hilite is now pinned to file:///src (version dev)
2024-05-11 11:07.47 ---> saved as "5b052347a2a4521b9d9e66382f730a3a7bf514ff1e1e3b32c09214dbaee6bb6b"
/src: (env DEPS "astring.0.8.5 base-bigarray.base base-bytes.base base-threads.base base-unix.base cmarkit.0.1.0 cmdliner.1.1.0 conf-oniguruma.1 conf-pkg-config.1.0 cppo.1.6.1 csexp.1.3.2 dune.3.8.0 dune-configurator.2.9.0 fmt.0.8.7 jbuilder.1.0+beta20.1 logs.0.7.0 mdx.1.11.1 ocaml.4.14.2 ocaml-base-compiler.4.14.2 ocaml-config.2 ocaml-options-vanilla.1 ocaml-version.2.4.0 ocamlbuild.0.14.0 ocamlfind.1.9.1 odoc-parser.0.9.0 oniguruma.0.1.2 re.1.7.2 result.1.5 seq.0.2.2 stdlib-shims.0.1.0 textmate-language.0.3.3 topkg.1.0.3")
/src: (env CI true)
/src: (env OCAMLCI true)
/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam update --depexts && opam install --cli=2.1 --depext-only -y hilite.dev $DEPS"))
+ /usr/bin/sudo "apt-get" "update"
- Hit:1 http://deb.debian.org/debian bookworm InRelease
- Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
- Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
- Get:4 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [155 kB]
- Fetched 258 kB in 0s (770 kB/s)
- Reading package lists...
<><> Synchronising pinned packages ><><><><><><><><><><><><><><><><><><><><><><>
[hilite.dev] synchronised (no changes)
[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
The following system packages will first need to be installed:
libonig-dev pkg-config
<><> Handling external dependencies <><><><><><><><><><><><><><><><><><><><><><>
+ /usr/bin/sudo "apt-get" "install" "-qq" "-yy" "libonig-dev" "pkg-config"
- debconf: delaying package configuration, since apt-utils is not installed
2024-05-11 11:08.08 ---> saved as "da51c0f16494d7e541f35847d7867bf116ac58433bbe3209806353de647140fe"
/src: (run (cache (opam-archives (target /home/opam/.opam/download-cache)))
(network host)
(shell "opam install $DEPS"))
[NOTE] Package ocaml-options-vanilla is already installed (current version is 1).
[NOTE] Package ocaml-config is already installed (current version is 2).
[NOTE] Package ocaml-base-compiler is already installed (current version is 4.14.2).
[NOTE] Package ocaml is already installed (current version is 4.14.2).
[NOTE] Package base-unix is already installed (current version is base).
[NOTE] Package base-threads is already installed (current version is base).
[NOTE] Package base-bigarray is already installed (current version is base).
The following actions will be performed:
- install ocamlfind 1.9.1
- install conf-pkg-config 1.0
- install jbuilder 1.0+beta20.1
- install dune 3.8.0
- install cmdliner 1.1.0
- install ocamlbuild 0.14.0
- install base-bytes base
- install conf-oniguruma 1
- install stdlib-shims 0.1.0
- install seq 0.2.2
- install result 1.5
- install topkg 1.0.3
- install re 1.7.2
- install cppo 1.6.1
- install ocaml-version 2.4.0
- install csexp 1.3.2
- install fmt 0.8.7
- install cmarkit 0.1.0
- install astring 0.8.5
- install dune-configurator 2.9.0
- install logs 0.7.0
- install odoc-parser 0.9.0
- install oniguruma 0.1.2
- install mdx 1.11.1
- install textmate-language 0.3.3
===== 25 to install =====
<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
-> retrieved astring.0.8.5 (cached)
-> retrieved cmarkit.0.1.0 (cached)
-> retrieved cmdliner.1.1.0 (cached)
-> retrieved cppo.1.6.1 (cached)
-> installed conf-pkg-config.1.0
-> retrieved csexp.1.3.2 (cached)
-> installed conf-oniguruma.1
-> retrieved fmt.0.8.7 (cached)
-> retrieved jbuilder.1.0+beta20.1 (cached)
-> retrieved logs.0.7.0 (cached)
-> retrieved mdx.1.11.1 (cached)
-> retrieved dune-configurator.2.9.0 (cached)
-> retrieved ocaml-version.2.4.0 (cached)
-> retrieved ocamlbuild.0.14.0 (cached)
-> retrieved dune.3.8.0 (cached)
-> retrieved ocamlfind.1.9.1 (cached)
-> retrieved odoc-parser.0.9.0 (cached)
-> retrieved oniguruma.0.1.2 (cached)
-> retrieved re.1.7.2 (cached)
-> retrieved result.1.5 (cached)
-> retrieved seq.0.2.2 (cached)
-> retrieved stdlib-shims.0.1.0 (cached)
-> retrieved textmate-language.0.3.3 (cached)
-> retrieved topkg.1.0.3 (cached)
-> installed cmdliner.1.1.0
-> installed ocamlfind.1.9.1
-> installed base-bytes.base
-> installed ocamlbuild.0.14.0
-> installed jbuilder.1.0+beta20.1
-> installed cppo.1.6.1
-> installed re.1.7.2
-> installed topkg.1.0.3
-> installed astring.0.8.5
-> installed cmarkit.0.1.0
-> installed dune.3.8.0
-> installed stdlib-shims.0.1.0
-> installed result.1.5
-> installed seq.0.2.2
-> installed ocaml-version.2.4.0
-> installed csexp.1.3.2
-> installed odoc-parser.0.9.0
-> installed fmt.0.8.7
-> installed dune-configurator.2.9.0
-> installed oniguruma.0.1.2
-> installed logs.0.7.0
-> installed textmate-language.0.3.3
-> installed mdx.1.11.1
Done.
# Run eval $(opam env) to update the current shell environment
2024-05-11 11:09.04 ---> saved as "0eac41db9576980a9c0300b2a919ae000fbd7f04d03905e1021e2e1dbdd3e02f"
/src: (copy (src .) (dst /src))
2024-05-11 11:09.04 ---> saved as "bb60551bd9541e0c87bf59248a3cc6ef927d92d922188b928a0821d0b13c230e"
/src: (run (shell "opam exec -- dune build @install @check @runtest && rm -rf _build"))
File "/home/opam/.opam/4.14/lib/re/re.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/emacs/re.emacs.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/glob/re.glob.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/pcre/re.pcre.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/perl/re.perl.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/posix/re.posix.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "/home/opam/.opam/4.14/lib/re/str/re.str.dune", line 1, characters 0-0:
Warning: .dune files are ignored since 2.0. Reinstall the library with dune
>= 2.0 to get rid of this warning and enable support for the subsystem this
library provides.
File "test/test_md_html.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/test_md_html.expected _build/default/test/test_md_html.output
diff --git a/_build/default/test/test_md_html.expected b/_build/default/test/test_md_html.output
index e1dd32c..91b8c03 100644
--- a/_build/default/test/test_md_html.expected
+++ b/_build/default/test/test_md_html.output
@@ -1,9 +1,11 @@
<pre><code><span class='ocaml-keyword'>let</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>html</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-string-quoted-double'>"</span><span class='ocaml-string-quoted-double'><h1>Hello World!</h1></span><span class='ocaml-string-quoted-double'>"</span><span class='ocaml-source'>
</span></code></pre>
+</span></code></pre>
<ul>
<li>
<pre><code><span class='ocaml-keyword'>let</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>indented_code_block</span><span class='ocaml-source'> </span><span class='ocaml-source'>f</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>f</span><span class='ocaml-source'>
</span></code></pre>
+</span></code></pre>
</li>
</ul>
<pre><code><span class='diff-punctuation-definition-deleted'>-</span><span class='diff-markup-deleted'> module Sel = (val if is_osx () then (module Mac)
@@ -15,3 +17,11 @@
</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> else (module Fail)
</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> : Unix_socket)
</span></code></pre>
+</span><span class='diff-punctuation-definition-deleted'>-</span><span class='diff-markup-deleted'> else if Sys.unix then (module Unix)
+</span><span class='diff-punctuation-definition-deleted'>-</span><span class='diff-markup-deleted'> else (module Fail) : Unix_socket)
+</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> module Sel =
+</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> (val if is_osx () then (module Mac)
+</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> else if Sys.unix then (module Unix)
+</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> else (module Fail)
+</span><span class='diff-punctuation-definition-inserted'>+</span><span class='diff-markup-inserted'> : Unix_socket)
+</span></code></pre>
File "test/test_md.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/test_md.expected _build/default/test/test_md.output
diff --git a/_build/default/test/test_md.expected b/_build/default/test/test_md.output
index 7acb095..ea82b54 100644
--- a/_build/default/test/test_md.expected
+++ b/_build/default/test/test_md.output
@@ -1,9 +1,12 @@
<p>OCaml is a great language, e.g.</p>
<pre><code><span class='ocaml-keyword'>let</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>add</span><span class='ocaml-source'> </span><span class='ocaml-source'>a</span><span class='ocaml-source'> </span><span class='ocaml-source'>b</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>a</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>+</span><span class='ocaml-source'> </span><span class='ocaml-source'>b</span><span class='ocaml-source'>
</span></code></pre>
+</span></code></pre>
<p>And some bash...</p>
<pre><code><span class='bash-keyword-operator-tilde'>~</span><span class='bash-source'>/$ ls </span><span class='bash-keyword-operator-tilde'>~</span><span class='bash-source'>/.opam
</span></code></pre>
+</span></code></pre>
<p>And some sh...</p>
<pre><code><span class='sh-keyword-operator-tilde'>~</span><span class='sh-source'>/$ ls </span><span class='sh-keyword-operator-tilde'>~</span><span class='sh-source'>/.opam
</span></code></pre>
+</span></code></pre>
File "test/test_md_syntax.expected", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/test_md_syntax.expected _build/default/test/test_md_syntax.output
diff --git a/_build/default/test/test_md_syntax.expected b/_build/default/test/test_md_syntax.output
index a813996..7c9e194 100644
--- a/_build/default/test/test_md_syntax.expected
+++ b/_build/default/test/test_md_syntax.output
@@ -559,3 +559,562 @@
</span><span class='ocaml-source'> </span><span class='ocaml-source'>expansion</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>content</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>doc</span><span class='ocaml-source'>
</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-keyword-other-ocaml punctuation-comma punctuation-separator'>,</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'>
</span></code></pre>
+</span><span class='ocaml-comment-block'> * Copyright (c) 2014 Leo White <lpw25@cl.cam.ac.uk>
+</span><span class='ocaml-comment-block'> *
+</span><span class='ocaml-comment-block'> * Permission to use, copy, modify, and distribute this software for any
+</span><span class='ocaml-comment-block'> * purpose with or without fee is hereby granted, provided that the above
+</span><span class='ocaml-comment-block'> * copyright notice and this permission notice appear in all copies.
+</span><span class='ocaml-comment-block'> *
+</span><span class='ocaml-comment-block'> * THE SOFTWARE IS PROVIDED </span><span class='ocaml-comment-block'>"</span><span class='ocaml-comment-block'>AS IS</span><span class='ocaml-comment-block'>"</span><span class='ocaml-comment-block'> AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+</span><span class='ocaml-comment-block'> * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+</span><span class='ocaml-comment-block'> * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+</span><span class='ocaml-comment-block'> * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+</span><span class='ocaml-comment-block'> * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+</span><span class='ocaml-comment-block'> * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+</span><span class='ocaml-comment-block'> * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+</span><span class='ocaml-comment-block'> </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>open</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Paths</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Locations</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>struct</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>uid</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>source_parent</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Correspond to where the source code is stored. Might be different from the root component of the identifier inside expansions. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>impl</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>uid</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Location of the definition in the implementation file. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>intf</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Location_</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>span</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Location of the declaration in the interface file. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Source_code</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>struct</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Info</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>struct</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>jmp_to_def</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Occurence</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Locations</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>uid</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Def</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>syntax</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> type syntax = </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Keyword </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Keyword_other </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Comment </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Language_constant </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Numeric_constant </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Boolean_constant </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Docstring </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | String_constant </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> | Alert </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>info</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Syntax</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>syntax</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Line</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>int</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Local_jmp</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>jmp_to_def</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-storage-type'>'a</span><span class='ocaml-source'> </span><span class='ocaml-source'>with_pos</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-storage-type'>'a</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-support-type'>int</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>int</span><span class='ocaml-source'>)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>infos</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>info</span><span class='ocaml-source'> </span><span class='ocaml-source'>with_pos</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>parent</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>intf_source</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>impl_source</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>impl_info</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Info</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>infos</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Modules} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>rec</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>decl</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Alias </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> (Path.Module.t * ModuleType.named_expansion option)
+</span><span class='ocaml-source'> | ModuleType </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ModuleType.expr
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Module.t;
+</span><span class='ocaml-source'> locs : Locations.t option;
+</span><span class='ocaml-source'> (** Locations might not be set when the </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> is artificially constructed from a </span><span class='ocaml-keyword-other-ocaml'>functor</span><span class='ocaml-source'> argument. *)
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> type_ : decl;
+</span><span class='ocaml-source'> canonical : Path.Module.t option;
+</span><span class='ocaml-source'> hidden : bool;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Equation : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = decl
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>FunctorParameter</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>parameter</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.FunctorParameter.t;
+</span><span class='ocaml-source'> expr : ModuleType.expr;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = Unit | Named </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> parameter
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>FunctorParameter</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Modules Types} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>substitution</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | ModuleEq </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.Module.t * Module.Equation.t
+</span><span class='ocaml-source'> | ModuleTypeEq </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.ModuleType.t * ModuleType.expr
+</span><span class='ocaml-source'> | TypeEq </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.Type.t * TypeDecl.Equation.t
+</span><span class='ocaml-source'> | ModuleSubst </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.Module.t * Path.Module.t
+</span><span class='ocaml-source'> | ModuleTypeSubst </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.ModuleType.t * ModuleType.expr
+</span><span class='ocaml-source'> | TypeSubst </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Fragment.Type.t * TypeDecl.Equation.t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>type_of_desc</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | ModPath </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Path.Module.t
+</span><span class='ocaml-source'> | StructInclude </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Path.Module.t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>simple_expansion</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Signature </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Signature.t
+</span><span class='ocaml-source'> | Functor </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> FunctorParameter.t * simple_expansion
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>named_expansion</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> e_id : Identifier.Path.Module.t;
+</span><span class='ocaml-source'> e_expansion : simple_expansion;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>typeof_t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> t_desc : type_of_desc;
+</span><span class='ocaml-source'> t_expansion : simple_expansion option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> U : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>expr</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Path </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Path.ModuleType.t
+</span><span class='ocaml-source'> | Signature </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Signature.t
+</span><span class='ocaml-source'> | With </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> substitution list * expr
+</span><span class='ocaml-source'> | TypeOf </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> typeof_t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> (* Nb. this may have an expansion! *)
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>path_t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>p_expansion</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>simple_expansion</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>p_path</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>with_t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_substitutions</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>substitution</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_expansion</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>simple_expansion</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_expr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>U</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>expr</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>expr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>path_t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Functor</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>FunctorParameter</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>expr</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>With</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>with_t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeOf</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>typeof_t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>id</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>locs</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Locations</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Can be [None] for module types created by a type substitution. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>docs</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>canonical</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>expr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>expr</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleSubstitution</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Module.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> manifest : Path.Module.t;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleSubstitution</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleTypeSubstitution</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.ModuleType.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> manifest : ModuleType.expr;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleTypeSubstitution</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Signatures} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>recursive</span><span class='ocaml-source'> = Ordinary | And | Nonrec | Rec
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>item</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Module </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> recursive * Module.t
+</span><span class='ocaml-source'> | ModuleType </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ModuleType.t
+</span><span class='ocaml-source'> | ModuleSubstitution </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ModuleSubstitution.t
+</span><span class='ocaml-source'> | ModuleTypeSubstitution </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ModuleTypeSubstitution.t
+</span><span class='ocaml-source'> | Open </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Open.t
+</span><span class='ocaml-source'> | Type </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> recursive * TypeDecl.t
+</span><span class='ocaml-source'> | TypeSubstitution </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> TypeDecl.t
+</span><span class='ocaml-source'> | TypExt </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Extension.t
+</span><span class='ocaml-source'> | Exception </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Exception.t
+</span><span class='ocaml-source'> | Value </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Value.t
+</span><span class='ocaml-source'> | Class </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> recursive * Class.t
+</span><span class='ocaml-source'> | ClassType </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> recursive * ClassType.t
+</span><span class='ocaml-source'> | Include </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Include.t
+</span><span class='ocaml-source'> | Comment </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Comment.docs_or_stop
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> items : item list;
+</span><span class='ocaml-source'> compiled : bool;
+</span><span class='ocaml-source'> doc : Comment.docs; (** The top comment. *)
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Open</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { expansion : Signature.t; doc : Comment.docs }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Open</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Includes} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Include</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>shadowed</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> s_modules : string list;
+</span><span class='ocaml-source'> s_module_types : string list;
+</span><span class='ocaml-source'> s_values : string list;
+</span><span class='ocaml-source'> s_types : string list;
+</span><span class='ocaml-source'> s_classes : string list;
+</span><span class='ocaml-source'> s_class_types : string list;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>expansion</span><span class='ocaml-source'> = { shadowed : shadowed; content : Signature.t }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> (* Explicitly unexpanded decl *)
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>decl</span><span class='ocaml-source'> = Alias </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Path.Module.t | ModuleType </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ModuleType.U.expr
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> loc : Location_.span;
+</span><span class='ocaml-source'> parent : Identifier.Signature.t;
+</span><span class='ocaml-source'> strengthened : Path.Module.t option;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> status : [ `Inline | `Closed | `Open | `Default ];
+</span><span class='ocaml-source'> decl : decl;
+</span><span class='ocaml-source'> expansion : expansion;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Include</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Type Declarations} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeDecl</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Field : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Field.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> mutable_ : bool;
+</span><span class='ocaml-source'> type_ : TypeExpr.t;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constructor</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>argument</span><span class='ocaml-source'> = Tuple </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> TypeExpr.t list | Record </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Field.t list
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Constructor.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> args : argument;
+</span><span class='ocaml-source'> res : TypeExpr.t option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Representation</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Variant </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Constructor.t list
+</span><span class='ocaml-source'> | Record </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Field.t list
+</span><span class='ocaml-source'> | Extensible
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>variance</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Pos</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Neg</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>param_desc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Any</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Var</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>param</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>desc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>param_desc</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>variance</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>variance</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>injectivity</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>bool</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Equation</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> params : param list;
+</span><span class='ocaml-source'> private_ : bool;
+</span><span class='ocaml-source'> manifest : TypeExpr.t option;
+</span><span class='ocaml-source'> constraints : (TypeExpr.t * TypeExpr.t) list;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>id</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Type</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>locs</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Locations</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>docs</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>canonical</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Type</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>equation</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Equation</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>representation</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Representation</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeDecl</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Type extensions} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Extension</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Constructor : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Extension.t;
+</span><span class='ocaml-source'> locs : Locations.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> args : TypeDecl.Constructor.argument;
+</span><span class='ocaml-source'> res : TypeExpr.t option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>parent</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>type_path</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Type</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>docs</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>type_params</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeDecl</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>param</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>private_</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>bool</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>constructors</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constructor</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Extension</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Exception} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Exception</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Exception.t;
+</span><span class='ocaml-source'> locs : Locations.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> args : TypeDecl.Constructor.argument;
+</span><span class='ocaml-source'> res : TypeExpr.t option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Exception</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Values} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Value</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>value</span><span class='ocaml-source'> = Abstract | External </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> string list
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Value.t;
+</span><span class='ocaml-source'> locs : Locations.t;
+</span><span class='ocaml-source'> value : value;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> type_ : TypeExpr.t;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Value</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Classes} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Class</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>decl</span><span class='ocaml-source'> =
+</span><span class='
caml-source'> | ClassType </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ClassType.expr
+</span><span class='ocaml-source'> | Arrow </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> TypeExpr.label option * TypeExpr.t * decl
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Class.t;
+</span><span class='ocaml-source'> locs : Locations.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> virtual_ : bool;
+</span><span class='ocaml-source'> params : TypeDecl.param list;
+</span><span class='ocaml-source'> type_ : decl;
+</span><span class='ocaml-source'> expansion : ClassSignature.t option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Class</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Class Types} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ClassType</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>expr</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Constr </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Path.ClassType.t * TypeExpr.t list
+</span><span class='ocaml-source'> | Signature </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> ClassSignature.t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.ClassType.t;
+</span><span class='ocaml-source'> locs : Locations.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> virtual_ : bool;
+</span><span class='ocaml-source'> params : TypeDecl.param list;
+</span><span class='ocaml-source'> expr : expr;
+</span><span class='ocaml-source'> expansion : ClassSignature.t option;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ClassType</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Class Signatures} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ClassSignature</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Constraint : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { left : TypeExpr.t; right : TypeExpr.t; doc : Comment.docs }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Inherit</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { expr : ClassType.expr; doc : Comment.docs }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>item</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Method</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Method</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>InstanceVariable</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>InstanceVariable</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constraint</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constraint</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Inherit</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Inherit</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>docs_or_stop</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'> </span><span class='ocaml-source'>self</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-source'>items</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>item</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Comment</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>docs</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ClassSignature</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Methods} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Method</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.Method.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> private_ : bool;
+</span><span class='ocaml-source'> virtual_ : bool;
+</span><span class='ocaml-source'> type_ : TypeExpr.t;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Method</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Instance variables} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>InstanceVariable</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> id : Identifier.InstanceVariable.t;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> mutable_ : bool;
+</span><span class='ocaml-source'> virtual_ : bool;
+</span><span class='ocaml-source'> type_ : TypeExpr.t;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>InstanceVariable</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Type expressions} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>and</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Polymorphic_variant : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>kind</span><span class='ocaml-source'> = Fixed | Closed </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> string list | Open
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Constructor : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> name : string;
+</span><span class='ocaml-source'> constant : bool;
+</span><span class='ocaml-source'> arguments : TypeExpr.t list;
+</span><span class='ocaml-source'> doc : Comment.docs;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>element</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Type</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constructor</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constructor</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'> </span><span class='ocaml-source'>kind</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>kind</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-source'>elements</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>element</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Object</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>method_</span><span class='ocaml-source'> = { name : string; type_ : TypeExpr.t }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>field</span><span class='ocaml-source'> = Method </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> method_ | Inherit </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> TypeExpr.t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { fields : field list; open_ : bool }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Package</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>substitution</span><span class='ocaml-source'> = Fragment.Type.t * TypeExpr.t
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { path : Path.ModuleType.t; substitutions : substitution list }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>label</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Label</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Optional</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Var</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Any</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Alias</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Arrow</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>label</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Tuple</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Constr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Type</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Polymorphic_variant</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Polymorphic_variant</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Object</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Object</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Class</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>ClassType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Poly</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>string</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>*</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Package</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Package</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeExpr</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> {3 Compilation units} </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>rec</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Compilation_unit</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml'>module</span><span class='ocaml-source'> Import : </span><span class='ocaml-keyword-other-ocaml'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> =
+</span><span class='ocaml-source'> | Unresolved </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> string * Digest.t option
+</span><span class='ocaml-source'> | Resolved </span><span class='ocaml-keyword-other-ocaml'>of</span><span class='ocaml-source'> Root.t * Names.ModuleName.t
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Source</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = { file : string; build_dir : string; digest : Digest.t }
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Packed</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>item</span><span class='ocaml-source'> = { id : Identifier.Module.t; path : Path.Module.t }
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = item list
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>content</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Pack</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>of</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Packed</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>type</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>id</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Identifier</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>RootModule</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>root</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Root</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>digest</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Digest</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>imports</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Import</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>source</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Source</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>interface</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>bool</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>hidden</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>bool</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>content</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-source'>content</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>expansion</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>linked</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-support-type'>bool</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Whether this unit has been linked. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>canonical</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>Module</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>sources</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Source_code</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-source'>list</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Compilation_unit</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword-other'>module</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>rec</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Page</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>sig</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword'>type</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>t</span><span class='ocaml-source'> = {
+</span><span class='ocaml-source'> name : Identifier.Page.t;
+</span><span class='ocaml-source'> root : Root.t;
+</span><span class='ocaml-source'> content : Comment.docs;
+</span><span class='ocaml-source'> children : Reference.t list;
+</span><span class='ocaml-source'> digest : Digest.t;
+</span><span class='ocaml-source'> linked : bool;
+</span><span class='ocaml-source'> }
+</span><span class='ocaml-keyword-other'>end</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Page</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword'>let</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>umty_of_mty</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>expr</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>ModuleType</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-constant-language-capital-identifier'>U</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>expr</span><span class='ocaml-source'> </span><span class='ocaml-source'>option</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>function</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-source'> </span><span class='ocaml-source'>sg</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Some</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-source'> </span><span class='ocaml-source'>sg</span><span class='ocaml-source'>)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'> </span><span class='ocaml-source'>p_path</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Some</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-constant-language-capital-identifier'>Path</span><span class='ocaml-source'> </span><span class='ocaml-source'>p_path</span><span class='ocaml-source'>)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Functor</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>None</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>TypeOf</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Some</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-constant-language-capital-identifier'>TypeOf</span><span class='ocaml-source'> </span><span class='ocaml-source'>t</span><span class='ocaml-source'>)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>With</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_substitutions</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_expr</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Some</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-constant-language-capital-identifier'>With</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-source'>w_substitutions</span><span class='ocaml-keyword-other-ocaml punctuation-comma punctuation-separator'>,</span><span class='ocaml-source'> </span><span class='ocaml-source'>w_expr</span><span class='ocaml-source'>)</span><span class='ocaml-source'>)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'>
+</span><span class='ocaml-comment-doc'>(**</span><span class='ocaml-comment-doc'> Query the top-comment of a signature. This is [s.doc] most of the time with
+</span><span class='ocaml-comment-doc'> an exception for signature starting with an inline includes. </span><span class='ocaml-comment-doc'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-keyword'>let</span><span class='ocaml-source'> </span><span class='ocaml-entity-name-function-binding'>extract_signature_doc</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-source'>s</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Signature</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>t</span><span class='ocaml-source'>)</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>match</span><span class='ocaml-source'> </span><span class='ocaml-source'>(</span><span class='ocaml-source'>s</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>doc</span><span class='ocaml-keyword-other-ocaml punctuation-comma punctuation-separator'>,</span><span class='ocaml-source'> </span><span class='ocaml-source'>s</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>items</span><span class='ocaml-source'>)</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>with</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-list'>[]</span><span class='ocaml-keyword-other-ocaml punctuation-comma punctuation-separator'>,</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-capital-identifier'>Include</span><span class='ocaml-source'> </span><span class='ocaml-source'>{</span><span class='ocaml-source'> </span><span class='ocaml-source'>expansion</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-source'>status</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-polymorphic-variant'>`Inline</span><span class='ocaml-keyword-other-ocaml punctuation-separator-terminator punctuation-separator'>;</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-source'>}</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-keyword-other-ocaml punctuation-other-colon punctuation'>:</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-comment-block'>(*</span><span class='ocaml-comment-block'> A signature that starts with an [@inline] include inherits the
+</span><span class='ocaml-comment-block'> top-comment from the expansion. This comment is not rendered for
+</span><span class='ocaml-comment-block'> [include] items. </span><span class='ocaml-comment-block'>*)</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-source'>expansion</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>content</span><span class='ocaml-keyword-other-ocaml punctuation-other-period punctuation-separator'>.</span><span class='ocaml-source'>doc</span><span class='ocaml-source'>
+</span><span class='ocaml-source'> </span><span class='ocaml-keyword-other'>|</span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-keyword-other-ocaml punctuation-comma punctuation-separator'>,</span><span class='ocaml-source'> </span><span class='ocaml-constant-language'>_</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>-></span><span class='ocaml-source'> </span><span class='ocaml-source'>doc</span><span class='ocaml-source'>
+</span></code></pre>
File "README.md", line 1, characters 0-0:
/usr/bin/git --no-pager diff --no-index --color=always -u _build/default/README.md _build/default/.mdx/README.md.corrected
diff --git a/_build/default/README.md b/_build/default/.mdx/README.md.corrected
index 3e7a1d2..d1407c4 100644
--- a/_build/default/README.md
+++ b/_build/default/.mdx/README.md.corrected
@@ -11,5 +11,5 @@ the [test.md](test/test.md) file can be converted with:
|> Hilite_markdown.transform
|> Cmarkit_html.of_doc ~safe:false;;
- : string =
-"<p>"Hello World!" in OCaml looks like:</p>\n<pre><code><span class='ocaml-keyword-other'>let</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-unit'>()</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-sourc"... (* string length 609; truncated *)
+"<p>"Hello World!" in OCaml looks like:</p>\n<pre><code><span class='ocaml-keyword-other'>let</span><span class='ocaml-source'> </span><span class='ocaml-constant-language-unit'>()</span><span class='ocaml-source'> </span><span class='ocaml-keyword-operator'>=</span><span class='ocaml-sourc"... (* string length 630; truncated *)
```
"/usr/bin/env" "bash" "-c" "opam exec -- dune build @install @check @runtest && rm -rf _build" failed with exit status 1
2024-05-11 11:09.09: Job failed: Failed: Build failed