Organisationspatricoferrishilite41939e (remove-direct-cmarkit-dep)(lower-bound)

(lower-bound)

Link Copied
Code Copied

Logs

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'>&quot;</span><span class='ocaml-string-quoted-double'>&lt;h1&gt;Hello World!&lt;/h1&gt;</span><span class='ocaml-string-quoted-double'>&quot;</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'>-&gt;</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 &lt;lpw25@cl.cam.ac.uk&gt;
+</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'>&quot;</span><span class='ocaml-comment-block'>AS IS</span><span class='ocaml-comment-block'>&quot;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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'>-&gt;</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>&quot;Hello World!&quot; 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>&quot;Hello World!&quot; 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